import React from 'react'; import { shallow } from 'enzyme'; import moment from 'moment'; import * as sinon from 'sinon'; import { identity } from 'ramda'; import createShortUrlsCreator from '../../src/short-urls/CreateShortUrl'; import DateInput from '../../src/utils/DateInput'; describe('', () => { let wrapper; const TagsSelector = () => ''; const shortUrlCreationResult = { loading: false, }; const createShortUrl = sinon.spy(); beforeEach(() => { const CreateShortUrl = createShortUrlsCreator(TagsSelector, () => ''); wrapper = shallow( ); }); afterEach(() => { wrapper.unmount(); createShortUrl.resetHistory(); }); it('saves short URL with data set in form controls', (done) => { const validSince = moment('2017-01-01'); const validUntil = moment('2017-01-06'); const urlInput = wrapper.find('.form-control-lg'); const tagsInput = wrapper.find(TagsSelector); const customSlugInput = wrapper.find('#customSlug'); const maxVisitsInput = wrapper.find('#maxVisits'); const dateInputs = wrapper.find(DateInput); const validSinceInput = dateInputs.at(0); const validUntilInput = dateInputs.at(1); urlInput.simulate('change', { target: { value: 'https://long-domain.com/foo/bar' } }); tagsInput.simulate('change', [ 'tag_foo', 'tag_bar' ]); customSlugInput.simulate('change', { target: { value: 'my-slug' } }); maxVisitsInput.simulate('change', { target: { value: '20' } }); validSinceInput.simulate('change', validSince); validUntilInput.simulate('change', validUntil); setImmediate(() => { const form = wrapper.find('form'); form.simulate('submit', { preventDefault: identity }); expect(createShortUrl.callCount).toEqual(1); expect(createShortUrl.getCall(0).args).toEqual( [ { longUrl: 'https://long-domain.com/foo/bar', tags: [ 'tag_foo', 'tag_bar' ], customSlug: 'my-slug', validSince: validSince.format(), validUntil: validUntil.format(), maxVisits: '20', findIfExists: false, }, ] ); done(); }); }); });