mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2026-02-27 04:06:39 +00:00
Migrated domainRedirects reducer to redux/toolkit
This commit is contained in:
@@ -1,11 +1,6 @@
|
||||
import { Mock } from 'ts-mockery';
|
||||
import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient';
|
||||
import {
|
||||
EDIT_DOMAIN_REDIRECTS,
|
||||
EDIT_DOMAIN_REDIRECTS_ERROR,
|
||||
EDIT_DOMAIN_REDIRECTS_START, EditDomainRedirects,
|
||||
editDomainRedirects as editDomainRedirectsAction,
|
||||
} from '../../../src/domains/reducers/domainRedirects';
|
||||
import { EditDomainRedirects, editDomainRedirects } from '../../../src/domains/reducers/domainRedirects';
|
||||
import { ShlinkDomainRedirects } from '../../../src/api/types';
|
||||
|
||||
describe('domainRedirectsReducer', () => {
|
||||
@@ -16,35 +11,33 @@ describe('domainRedirectsReducer', () => {
|
||||
const redirects = Mock.all<ShlinkDomainRedirects>();
|
||||
const dispatch = jest.fn();
|
||||
const getState = jest.fn();
|
||||
const editDomainRedirects = jest.fn();
|
||||
const buildShlinkApiClient = () => Mock.of<ShlinkApiClient>({ editDomainRedirects });
|
||||
const editDomainRedirectsCall = jest.fn();
|
||||
const buildShlinkApiClient = () => Mock.of<ShlinkApiClient>({ editDomainRedirects: editDomainRedirectsCall });
|
||||
const editDomainRedirectsAction = editDomainRedirects(buildShlinkApiClient);
|
||||
|
||||
it('dispatches error when loading domains fails', async () => {
|
||||
editDomainRedirects.mockRejectedValue(new Error('error'));
|
||||
editDomainRedirectsCall.mockRejectedValue(new Error('error'));
|
||||
|
||||
await editDomainRedirectsAction(buildShlinkApiClient)(Mock.of<EditDomainRedirects>({ domain }))(
|
||||
dispatch,
|
||||
getState,
|
||||
);
|
||||
await editDomainRedirectsAction(Mock.of<EditDomainRedirects>({ domain }))(dispatch, getState, {});
|
||||
|
||||
expect(dispatch).toHaveBeenCalledTimes(2);
|
||||
expect(dispatch).toHaveBeenNthCalledWith(1, { type: EDIT_DOMAIN_REDIRECTS_START });
|
||||
expect(dispatch).toHaveBeenNthCalledWith(2, { type: EDIT_DOMAIN_REDIRECTS_ERROR });
|
||||
expect(editDomainRedirects).toHaveBeenCalledTimes(1);
|
||||
expect(dispatch).toHaveBeenLastCalledWith(expect.objectContaining({
|
||||
type: editDomainRedirectsAction.rejected.toString(),
|
||||
}));
|
||||
expect(editDomainRedirectsCall).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it('dispatches domain and redirects once loaded', async () => {
|
||||
editDomainRedirects.mockResolvedValue(redirects);
|
||||
editDomainRedirectsCall.mockResolvedValue(redirects);
|
||||
|
||||
await editDomainRedirectsAction(buildShlinkApiClient)(Mock.of<EditDomainRedirects>({ domain }))(
|
||||
dispatch,
|
||||
getState,
|
||||
);
|
||||
await editDomainRedirectsAction(Mock.of<EditDomainRedirects>({ domain }))(dispatch, getState, {});
|
||||
|
||||
expect(dispatch).toHaveBeenCalledTimes(2);
|
||||
expect(dispatch).toHaveBeenNthCalledWith(1, { type: EDIT_DOMAIN_REDIRECTS_START });
|
||||
expect(dispatch).toHaveBeenNthCalledWith(2, { type: EDIT_DOMAIN_REDIRECTS, domain, redirects });
|
||||
expect(editDomainRedirects).toHaveBeenCalledTimes(1);
|
||||
expect(dispatch).toHaveBeenLastCalledWith(expect.objectContaining({
|
||||
type: editDomainRedirectsAction.fulfilled.toString(),
|
||||
payload: { domain, redirects },
|
||||
}));
|
||||
expect(editDomainRedirectsCall).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
replaceStatusOnDomain,
|
||||
domainsListReducerCreator,
|
||||
} from '../../../src/domains/reducers/domainsList';
|
||||
import { EDIT_DOMAIN_REDIRECTS } from '../../../src/domains/reducers/domainRedirects';
|
||||
import { editDomainRedirects } from '../../../src/domains/reducers/domainRedirects';
|
||||
import { ShlinkDomainRedirects } from '../../../src/api/types';
|
||||
import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient';
|
||||
import { Domain } from '../../../src/domains/data';
|
||||
@@ -30,8 +30,10 @@ describe('domainsListReducer', () => {
|
||||
data: { type: 'NOT_FOUND', status: 404 },
|
||||
},
|
||||
});
|
||||
const editDomainRedirectsThunk = editDomainRedirects(buildShlinkApiClient);
|
||||
const { reducer, listDomains: listDomainsAction, checkDomainHealth, filterDomains } = domainsListReducerCreator(
|
||||
buildShlinkApiClient,
|
||||
editDomainRedirectsThunk,
|
||||
);
|
||||
|
||||
beforeEach(jest.clearAllMocks);
|
||||
@@ -72,12 +74,12 @@ describe('domainsListReducer', () => {
|
||||
invalidShortUrlRedirect: null,
|
||||
};
|
||||
|
||||
expect(reducer(
|
||||
Mock.of<DomainsList>({ domains, filteredDomains }),
|
||||
{ type: EDIT_DOMAIN_REDIRECTS, domain, redirects },
|
||||
)).toEqual({
|
||||
domains: domains.map(replaceRedirectsOnDomain(domain, redirects)),
|
||||
filteredDomains: filteredDomains.map(replaceRedirectsOnDomain(domain, redirects)),
|
||||
expect(reducer(Mock.of<DomainsList>({ domains, filteredDomains }), {
|
||||
type: editDomainRedirectsThunk.fulfilled.toString(),
|
||||
payload: { domain, redirects },
|
||||
})).toEqual({
|
||||
domains: domains.map(replaceRedirectsOnDomain({ domain, redirects })),
|
||||
filteredDomains: filteredDomains.map(replaceRedirectsOnDomain({ domain, redirects })),
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user