diff --git a/src/short-urls/helpers/EditTagsModal.js b/src/short-urls/helpers/EditTagsModal.js index 141b66ff..8dabb1c1 100644 --- a/src/short-urls/helpers/EditTagsModal.js +++ b/src/short-urls/helpers/EditTagsModal.js @@ -19,7 +19,7 @@ const EditTagsModal = (TagsSelector) => class EditTagsModal extends React.Compon saveTags = () => { const { editShortUrlTags, shortUrl, toggle } = this.props; - editShortUrlTags(shortUrl.shortCode, this.state.tags) + editShortUrlTags(shortUrl.shortCode, shortUrl.domain, this.state.tags) .then(toggle) .catch(() => {}); }; diff --git a/src/short-urls/reducers/shortUrlMeta.js b/src/short-urls/reducers/shortUrlMeta.js index 2c799e13..1fc962b9 100644 --- a/src/short-urls/reducers/shortUrlMeta.js +++ b/src/short-urls/reducers/shortUrlMeta.js @@ -40,7 +40,7 @@ export const editShortUrlMeta = (buildShlinkApiClient) => (shortCode, meta) => a const { updateShortUrlMeta } = await buildShlinkApiClient(getState); try { - await updateShortUrlMeta(shortCode, meta); + await updateShortUrlMeta(shortCode, undefined, meta); dispatch({ shortCode, meta, type: SHORT_URL_META_EDITED }); } catch (e) { dispatch({ type: EDIT_SHORT_URL_META_ERROR }); diff --git a/src/short-urls/reducers/shortUrlTags.js b/src/short-urls/reducers/shortUrlTags.js index 8530e954..77302d76 100644 --- a/src/short-urls/reducers/shortUrlTags.js +++ b/src/short-urls/reducers/shortUrlTags.js @@ -29,12 +29,12 @@ export default handleActions({ [RESET_EDIT_SHORT_URL_TAGS]: () => initialState, }, initialState); -export const editShortUrlTags = (buildShlinkApiClient) => (shortCode, tags) => async (dispatch, getState) => { +export const editShortUrlTags = (buildShlinkApiClient) => (shortCode, domain, tags) => async (dispatch, getState) => { dispatch({ type: EDIT_SHORT_URL_TAGS_START }); const { updateShortUrlTags } = await buildShlinkApiClient(getState); try { - const normalizedTags = await updateShortUrlTags(shortCode, tags); + const normalizedTags = await updateShortUrlTags(shortCode, domain, tags); dispatch({ tags: normalizedTags, shortCode, type: SHORT_URL_TAGS_EDITED }); } catch (e) { diff --git a/test/short-urls/helpers/EditTagsModal.test.js b/test/short-urls/helpers/EditTagsModal.test.js index f6e96a5e..4fd3f499 100644 --- a/test/short-urls/helpers/EditTagsModal.test.js +++ b/test/short-urls/helpers/EditTagsModal.test.js @@ -2,6 +2,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import { Modal } from 'reactstrap'; import createEditTagsModal from '../../../src/short-urls/helpers/EditTagsModal'; +import each from 'jest-each'; describe('', () => { let wrapper; @@ -10,7 +11,7 @@ describe('', () => { const editShortUrlTags = jest.fn(() => Promise.resolve()); const resetShortUrlsTags = jest.fn(); const toggle = jest.fn(); - const createWrapper = (shortUrlTags) => { + const createWrapper = (shortUrlTags, domain) => { const EditTagsModal = createEditTagsModal(TagsSelector); wrapper = shallow( @@ -19,6 +20,7 @@ describe('', () => { shortUrl={{ tags: [], shortCode, + domain, originalUrl: 'https://long-domain.com/foo/bar', }} shortUrlTags={shortUrlTags} @@ -74,19 +76,19 @@ describe('', () => { expect(saveBtn.text()).toEqual('Saving tags...'); }); - it('saves tags when save button is clicked', (done) => { + each([[ undefined ], [ null ], [ 'example.com' ]]).it('saves tags when save button is clicked', (domain, done) => { const wrapper = createWrapper({ shortCode, tags: [], saving: true, error: false, - }); + }, domain); const saveBtn = wrapper.find('.btn-primary'); saveBtn.simulate('click'); expect(editShortUrlTags).toHaveBeenCalledTimes(1); - expect(editShortUrlTags).toHaveBeenCalledWith(shortCode, []); + expect(editShortUrlTags).toHaveBeenCalledWith(shortCode, domain, []); // Wrap this expect in a setImmediate since it is called as a result of an inner promise setImmediate(() => { diff --git a/test/short-urls/reducers/shortUrlMeta.test.js b/test/short-urls/reducers/shortUrlMeta.test.js index d1158efd..508bb836 100644 --- a/test/short-urls/reducers/shortUrlMeta.test.js +++ b/test/short-urls/reducers/shortUrlMeta.test.js @@ -61,7 +61,7 @@ describe('shortUrlMetaReducer', () => { expect(buildShlinkApiClient).toHaveBeenCalledTimes(1); expect(updateShortUrlMeta).toHaveBeenCalledTimes(1); - expect(updateShortUrlMeta).toHaveBeenCalledWith(shortCode, meta); + expect(updateShortUrlMeta).toHaveBeenCalledWith(shortCode, undefined, meta); expect(dispatch).toHaveBeenCalledTimes(2); expect(dispatch).toHaveBeenNthCalledWith(1, { type: EDIT_SHORT_URL_META_START }); expect(dispatch).toHaveBeenNthCalledWith(2, { type: SHORT_URL_META_EDITED, meta, shortCode }); @@ -80,7 +80,7 @@ describe('shortUrlMetaReducer', () => { expect(buildShlinkApiClient).toHaveBeenCalledTimes(1); expect(updateShortUrlMeta).toHaveBeenCalledTimes(1); - expect(updateShortUrlMeta).toHaveBeenCalledWith(shortCode, meta); + expect(updateShortUrlMeta).toHaveBeenCalledWith(shortCode, undefined, meta); expect(dispatch).toHaveBeenCalledTimes(2); expect(dispatch).toHaveBeenNthCalledWith(1, { type: EDIT_SHORT_URL_META_START }); expect(dispatch).toHaveBeenNthCalledWith(2, { type: EDIT_SHORT_URL_META_ERROR }); diff --git a/test/short-urls/reducers/shortUrlTags.test.js b/test/short-urls/reducers/shortUrlTags.test.js index 1a80e583..bd43199a 100644 --- a/test/short-urls/reducers/shortUrlTags.test.js +++ b/test/short-urls/reducers/shortUrlTags.test.js @@ -1,3 +1,4 @@ +import each from 'jest-each'; import reducer, { EDIT_SHORT_URL_TAGS_ERROR, EDIT_SHORT_URL_TAGS_START, @@ -60,16 +61,16 @@ describe('shortUrlTagsReducer', () => { dispatch.mockReset(); }); - it('dispatches normalized tags on success', async () => { + each([[ undefined ], [ null ], [ 'example.com' ]]).it('dispatches normalized tags on success', async (domain) => { const normalizedTags = [ 'bar', 'foo' ]; updateShortUrlTags.mockResolvedValue(normalizedTags); - await editShortUrlTags(buildShlinkApiClient)(shortCode, tags)(dispatch); + await editShortUrlTags(buildShlinkApiClient)(shortCode, domain, tags)(dispatch); expect(buildShlinkApiClient).toHaveBeenCalledTimes(1); expect(updateShortUrlTags).toHaveBeenCalledTimes(1); - expect(updateShortUrlTags).toHaveBeenCalledWith(shortCode, tags); + expect(updateShortUrlTags).toHaveBeenCalledWith(shortCode, domain, tags); expect(dispatch).toHaveBeenCalledTimes(2); expect(dispatch).toHaveBeenNthCalledWith(1, { type: EDIT_SHORT_URL_TAGS_START }); expect(dispatch).toHaveBeenNthCalledWith(2, { type: SHORT_URL_TAGS_EDITED, tags: normalizedTags, shortCode }); @@ -81,14 +82,14 @@ describe('shortUrlTagsReducer', () => { updateShortUrlTags.mockRejectedValue(error); try { - await editShortUrlTags(buildShlinkApiClient)(shortCode, tags)(dispatch); + await editShortUrlTags(buildShlinkApiClient)(shortCode, undefined, tags)(dispatch); } catch (e) { expect(e).toBe(error); } expect(buildShlinkApiClient).toHaveBeenCalledTimes(1); expect(updateShortUrlTags).toHaveBeenCalledTimes(1); - expect(updateShortUrlTags).toHaveBeenCalledWith(shortCode, tags); + expect(updateShortUrlTags).toHaveBeenCalledWith(shortCode, undefined, tags); expect(dispatch).toHaveBeenCalledTimes(2); expect(dispatch).toHaveBeenNthCalledWith(1, { type: EDIT_SHORT_URL_TAGS_START }); expect(dispatch).toHaveBeenNthCalledWith(2, { type: EDIT_SHORT_URL_TAGS_ERROR });