mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2024-12-23 17:40:23 +03:00
Created domainsList reducer test
This commit is contained in:
parent
dc397d4b82
commit
02c7125236
2 changed files with 64 additions and 1 deletions
|
@ -16,7 +16,7 @@ export interface DomainsList {
|
||||||
error: boolean;
|
error: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ListDomainsAction extends Action<string> {
|
export interface ListDomainsAction extends Action<string> {
|
||||||
domains: ShlinkDomain[];
|
domains: ShlinkDomain[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
63
test/domains/reducers/domainsList.test.ts
Normal file
63
test/domains/reducers/domainsList.test.ts
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
import { Mock } from 'ts-mockery';
|
||||||
|
import reducer, {
|
||||||
|
LIST_DOMAINS,
|
||||||
|
LIST_DOMAINS_ERROR,
|
||||||
|
LIST_DOMAINS_START,
|
||||||
|
ListDomainsAction,
|
||||||
|
listDomains as listDomainsAction,
|
||||||
|
} from '../../../src/domains/reducers/domainsList';
|
||||||
|
import { ShlinkDomain } from '../../../src/utils/services/types';
|
||||||
|
import ShlinkApiClient from '../../../src/utils/services/ShlinkApiClient';
|
||||||
|
|
||||||
|
describe('domainsList', () => {
|
||||||
|
const domains = [ Mock.all<ShlinkDomain>(), Mock.all<ShlinkDomain>(), Mock.all<ShlinkDomain>() ];
|
||||||
|
|
||||||
|
describe('reducer', () => {
|
||||||
|
const action = (type: string, args: Partial<ListDomainsAction> = {}) => Mock.of<ListDomainsAction>(
|
||||||
|
{ type, ...args },
|
||||||
|
);
|
||||||
|
|
||||||
|
it('returns loading on LIST_DOMAINS_START', () => {
|
||||||
|
expect(reducer(undefined, action(LIST_DOMAINS_START))).toEqual({ domains: [], loading: true, error: false });
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns error on LIST_DOMAINS_ERROR', () => {
|
||||||
|
expect(reducer(undefined, action(LIST_DOMAINS_ERROR))).toEqual({ domains: [], loading: false, error: true });
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns domains on LIST_DOMAINS', () => {
|
||||||
|
expect(reducer(undefined, action(LIST_DOMAINS, { domains }))).toEqual({ domains, loading: false, error: false });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('listDomains', () => {
|
||||||
|
const dispatch = jest.fn();
|
||||||
|
const getState = jest.fn();
|
||||||
|
const listDomains = jest.fn();
|
||||||
|
const buildShlinkApiClient = () => Mock.of<ShlinkApiClient>({ listDomains });
|
||||||
|
|
||||||
|
beforeEach(jest.clearAllMocks);
|
||||||
|
|
||||||
|
it('dispatches error when loading domains fails', async () => {
|
||||||
|
listDomains.mockRejectedValue(new Error('error'));
|
||||||
|
|
||||||
|
await listDomainsAction(buildShlinkApiClient)()(dispatch, getState);
|
||||||
|
|
||||||
|
expect(dispatch).toHaveBeenCalledTimes(2);
|
||||||
|
expect(dispatch).toHaveBeenNthCalledWith(1, { type: LIST_DOMAINS_START });
|
||||||
|
expect(dispatch).toHaveBeenNthCalledWith(2, { type: LIST_DOMAINS_ERROR });
|
||||||
|
expect(listDomains).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('dispatches domains once loaded', async () => {
|
||||||
|
listDomains.mockResolvedValue(domains);
|
||||||
|
|
||||||
|
await listDomainsAction(buildShlinkApiClient)()(dispatch, getState);
|
||||||
|
|
||||||
|
expect(dispatch).toHaveBeenCalledTimes(2);
|
||||||
|
expect(dispatch).toHaveBeenNthCalledWith(1, { type: LIST_DOMAINS_START });
|
||||||
|
expect(dispatch).toHaveBeenNthCalledWith(2, { type: LIST_DOMAINS, domains });
|
||||||
|
expect(listDomains).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in a new issue