Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1 +1 @@
VITE_API_URL="http://localhost:8083"
VITE_API_URL="http://localhost:8080/v1/"
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { MantineProvider } from '@mantine/core';
import MyCollectionsContent from './index';
import Collection from '../../../../models/user/collection';
import { mockCollection } from '../../../../test-utils/mocks/models/collection';
import { mockPagination } from '../../../../test-utils/mocks';
import { mockPagination } from '../../../../test-utils/mocks/pagination';

// Mock the CollectionCard component
jest.mock('./CollectionCard', () => ({
Expand Down
2 changes: 1 addition & 1 deletion src/components/Dashboard/MyCollections/index.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import MyCollections from './index';
import User from '../../../models/user/user';
import { UserCollectionsContext, UserCollectionsContextState } from '../../../contexts/UserCollectionsContext';
import CollectionManagementRequests from '../../../services/requests/CollectionManagementRequests';
import { mockPagination } from '../../../test-utils/mocks';
import { mockPagination } from '../../../test-utils/mocks/pagination';
import { renderWithProviders } from '../../../test-utils';
import Collection from '../../../models/user/collection';
import CollectionItem from '../../../models/user/collection-items';
Expand Down
138 changes: 0 additions & 138 deletions src/test-utils/mocks/contexts.tsx

This file was deleted.

46 changes: 46 additions & 0 deletions src/test-utils/mocks/contexts/base.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import Category from '../../../models/category';
import { mockPagination } from '../pagination';

// Mock appState
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(global as any).appState = {
state: {
persistent: {
tokenData: null
},
session: {
loadingCount: 0
}
},
dispatch: jest.fn()
};

// Mock functions
export const mockSetFilter = jest.fn();

// Base mock context state creator
export const createBaseMockContextState = <T extends Category>(data: T[]) => mockPagination<T>({
loadedData: data,
initialLoadComplete: true,
refreshing: false,
hasAnotherPage: false,
initiated: true,
noResults: false,
expands: [],
order: {},
filter: {},
search: {},
limit: 20,
loadAll: false,
setFilter: jest.fn(),
setSearch: jest.fn(),
setOrder: jest.fn(),
// eslint-disable-next-line @typescript-eslint/no-unused-vars
addModel: jest.fn((_model: T) => {}),
// eslint-disable-next-line @typescript-eslint/no-unused-vars
removeModel: jest.fn((_model: T) => {}),
getModel: jest.fn((id: number) => data.find(item => item.id === id) || null),
params: {},
loadNext: jest.fn(),
refreshData: jest.fn()
});
29 changes: 29 additions & 0 deletions src/test-utils/mocks/contexts/categories.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import React from 'react';
import { CategoriesContextState } from '../../../contexts/CategoriesContext';
import Category from '../../../models/category';
import { mockCategory } from '../models/category';
import { createBaseMockContextState } from './base';

// Mock CategoriesContext
export const mockCategoriesContextValue = {
...createBaseMockContextState<Category>([
mockCategory({ id: 1, name: 'Test Category', can_be_primary: true })
])
};

export const mockCategoriesContextValueLoading = {
...createBaseMockContextState<Category>([]),
initialLoadComplete: false,
isLoading: true
};

export const mockCategoriesContextValueEmpty = {
...createBaseMockContextState<Category>([]),
noResults: true
};

// Mock CategoriesContext
jest.mock('../../../contexts/CategoriesContext', () => ({
__esModule: true,
CategoriesContext: React.createContext<CategoriesContextState>(mockCategoriesContextValue)
}));
12 changes: 12 additions & 0 deletions src/test-utils/mocks/contexts/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Base context utilities
export { createBaseMockContextState, mockSetFilter } from './base';

// Categories context mocks
export {
mockCategoriesContextValue,
mockCategoriesContextValueLoading,
mockCategoriesContextValueEmpty
} from './categories';

// MeContext provider and types
export { MeContextProvider, type MeContextProviderProps } from './me';
66 changes: 66 additions & 0 deletions src/test-utils/mocks/contexts/me.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import React, { PropsWithChildren } from 'react';
import { MeContextStateConsumer, MeContext } from '../../../contexts/MeContext';
import { placeholderUser } from '../../../models/user/user';
import User from '../../../models/user/user';
import { Provider } from 'react-redux';
import configureStore from 'redux-mock-store';

// Create mock store
const mockStore = configureStore([]);

export type MeContextProviderProps = {
initialState?: {
me: {
user: User;
networkError: boolean;
isLoggedIn: boolean;
isLoading: boolean;
};
};
hideLoadingSpace?: boolean;
}

// MeContext Provider
export const MeContextProvider: React.FC<PropsWithChildren<MeContextProviderProps>> = ({ children, initialState, hideLoadingSpace }) => {
const store = mockStore(initialState || {
me: {
user: placeholderUser(),
networkError: false,
isLoggedIn: false,
isLoading: false
}
});

const [meContext, setMeContext] = React.useState({
me: initialState?.me?.user || placeholderUser(),
networkError: initialState?.me?.networkError || false,
isLoggedIn: initialState?.me?.isLoggedIn || false,
isLoading: initialState?.me?.isLoading || false,
});

const fullContext = {
...meContext,
setMe: (user: User) => {
setMeContext(prev => ({
...prev,
me: user,
isLoggedIn: !!user.id,
isLoading: false
}));
store.dispatch({ type: 'SET_USER', payload: user });
},
} as MeContextStateConsumer;

return (
<Provider store={store}>
<MeContext.Provider value={fullContext}>
{(!meContext.isLoading || hideLoadingSpace) ? children :
(meContext.networkError ?
<div>Network Error</div> :
<div>Loading...</div>
)
}
</MeContext.Provider>
</Provider>
);
};
1 change: 0 additions & 1 deletion src/test-utils/mocks/index.ts

This file was deleted.

5 changes: 0 additions & 5 deletions src/testing/wrappers.tsx

This file was deleted.

Loading