Updated editDomainRedirects action, to expect a payload DTO instead of multiple args

This commit is contained in:
Alejandro Celaya
2022-11-04 17:10:02 +01:00
parent 4fa6ae493d
commit b6d08e2203
8 changed files with 61 additions and 36 deletions

View File

@@ -71,7 +71,7 @@ describe('<DomainDropdown />', () => {
expect(editDomainRedirects).not.toHaveBeenCalled();
await user.click(screen.getByText('Save'));
expect(editDomainRedirects).toHaveBeenCalledWith(domain, expect.anything());
expect(editDomainRedirects).toHaveBeenCalledWith(expect.objectContaining({ domain }));
await waitForElementToBeRemoved(() => screen.queryByRole('dialog'));
});

View File

@@ -40,37 +40,49 @@ describe('<EditDomainRedirectsModal />', () => {
expect(editDomainRedirects).not.toHaveBeenCalled();
submitForm();
await waitFor(() => expect(editDomainRedirects).toHaveBeenCalledWith('foo.com', {
baseUrlRedirect: 'baz',
regular404Redirect: null,
invalidShortUrlRedirect: null,
await waitFor(() => expect(editDomainRedirects).toHaveBeenCalledWith({
domain: 'foo.com',
redirects: {
baseUrlRedirect: 'baz',
regular404Redirect: null,
invalidShortUrlRedirect: null,
},
}));
await user.clear(screen.getByDisplayValue('baz'));
await user.type(screen.getAllByPlaceholderText('No redirect')[0], 'new_base_url');
await user.type(screen.getAllByPlaceholderText('No redirect')[2], 'new_invalid_short_url');
submitForm();
await waitFor(() => expect(editDomainRedirects).toHaveBeenCalledWith('foo.com', {
baseUrlRedirect: 'new_base_url',
regular404Redirect: null,
invalidShortUrlRedirect: 'new_invalid_short_url',
await waitFor(() => expect(editDomainRedirects).toHaveBeenCalledWith({
domain: 'foo.com',
redirects: {
baseUrlRedirect: 'new_base_url',
regular404Redirect: null,
invalidShortUrlRedirect: 'new_invalid_short_url',
},
}));
await user.type(screen.getAllByPlaceholderText('No redirect')[1], 'new_regular_404');
await user.clear(screen.getByDisplayValue('new_invalid_short_url'));
submitForm();
await waitFor(() => expect(editDomainRedirects).toHaveBeenCalledWith('foo.com', {
baseUrlRedirect: 'new_base_url',
regular404Redirect: 'new_regular_404',
invalidShortUrlRedirect: null,
await waitFor(() => expect(editDomainRedirects).toHaveBeenCalledWith({
domain: 'foo.com',
redirects: {
baseUrlRedirect: 'new_base_url',
regular404Redirect: 'new_regular_404',
invalidShortUrlRedirect: null,
},
}));
await Promise.all(screen.getAllByPlaceholderText('No redirect').map((element) => user.clear(element)));
submitForm();
await waitFor(() => expect(editDomainRedirects).toHaveBeenCalledWith('foo.com', {
baseUrlRedirect: null,
regular404Redirect: null,
invalidShortUrlRedirect: null,
await waitFor(() => expect(editDomainRedirects).toHaveBeenCalledWith({
domain: 'foo.com',
redirects: {
baseUrlRedirect: null,
regular404Redirect: null,
invalidShortUrlRedirect: null,
},
}));
});
});

View File

@@ -3,7 +3,7 @@ import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient';
import {
EDIT_DOMAIN_REDIRECTS,
EDIT_DOMAIN_REDIRECTS_ERROR,
EDIT_DOMAIN_REDIRECTS_START,
EDIT_DOMAIN_REDIRECTS_START, EditDomainRedirects,
editDomainRedirects as editDomainRedirectsAction,
} from '../../../src/domains/reducers/domainRedirects';
import { ShlinkDomainRedirects } from '../../../src/api/types';
@@ -22,7 +22,10 @@ describe('domainRedirectsReducer', () => {
it('dispatches error when loading domains fails', async () => {
editDomainRedirects.mockRejectedValue(new Error('error'));
await editDomainRedirectsAction(buildShlinkApiClient)(domain, {})(dispatch, getState);
await editDomainRedirectsAction(buildShlinkApiClient)(Mock.of<EditDomainRedirects>({ domain }))(
dispatch,
getState,
);
expect(dispatch).toHaveBeenCalledTimes(2);
expect(dispatch).toHaveBeenNthCalledWith(1, { type: EDIT_DOMAIN_REDIRECTS_START });
@@ -33,7 +36,10 @@ describe('domainRedirectsReducer', () => {
it('dispatches domain and redirects once loaded', async () => {
editDomainRedirects.mockResolvedValue(redirects);
await editDomainRedirectsAction(buildShlinkApiClient)(domain, {})(dispatch, getState);
await editDomainRedirectsAction(buildShlinkApiClient)(Mock.of<EditDomainRedirects>({ domain }))(
dispatch,
getState,
);
expect(dispatch).toHaveBeenCalledTimes(2);
expect(dispatch).toHaveBeenNthCalledWith(1, { type: EDIT_DOMAIN_REDIRECTS_START });