From 4abdc74750d3e6afdff8f211a6429e65a778b257 Mon Sep 17 00:00:00 2001 From: Devin Howard Date: Sat, 6 May 2017 18:53:36 -0700 Subject: [PATCH] remove duplicated code --- .../MapView/ImportDialogBox.spec.js | 26 ++++------ .../components/common/InfoAndHelp.spec.js | 52 ++++++++++--------- 2 files changed, 38 insertions(+), 40 deletions(-) diff --git a/frontend/test/components/MapView/ImportDialogBox.spec.js b/frontend/test/components/MapView/ImportDialogBox.spec.js index 91c18f6e..6e24afd0 100644 --- a/frontend/test/components/MapView/ImportDialogBox.spec.js +++ b/frontend/test/components/MapView/ImportDialogBox.spec.js @@ -17,21 +17,17 @@ describe('ImportDialogBox', function() { } } - it('has an Export CSV button', () => { - const wrapper = shallow() - const button = wrapper.find('.export-csv') - expect(button).to.exist - button.simulate('click') - expect(csvExport).to.have.property('callCount', 1) - }) - - it('has an Export JSON button', () => { - const wrapper = shallow() - const button = wrapper.find('.export-json') - expect(button).to.exist - button.simulate('click') - expect(jsonExport).to.have.property('callCount', 1) - }) + const testExportButton = ({ description, cssClass, exporter }) => { + it(description, () => { + const wrapper = shallow() + const button = wrapper.find(cssClass) + expect(button).to.exist + button.simulate('click') + expect(exporter).to.have.property('callCount', 1) + }) + } + testExportButton('has an Export CSV button', '.export-csv', csvExport) + testExportButton('has an Export JSON button', '.export-json', jsonExport) it('has a Download screenshot button', () => { const downloadScreenshot = sinon.spy() diff --git a/frontend/test/components/common/InfoAndHelp.spec.js b/frontend/test/components/common/InfoAndHelp.spec.js index 5171f976..9880af0f 100644 --- a/frontend/test/components/common/InfoAndHelp.spec.js +++ b/frontend/test/components/common/InfoAndHelp.spec.js @@ -7,6 +7,15 @@ import sinon from 'sinon' import InfoAndHelp from '../../../src/components/common/InfoAndHelp.js' import MapInfoBox from '../../../src/components/MapView/MapInfoBox.js' +function assertTooltip({ wrapper, description, cssClass, tooltipText, callback }) { + it(description, function() { + expect(wrapper.find(cssClass)).to.exist + expect(wrapper.find(`${cssClass} .tooltipsAbove`).text()).to.equal(tooltipText) + wrapper.find(cssClass).simulate('click') + expect(callback).to.have.property('callCount', 1) + }) +} + function assertContent({ currentUser, map }) { const onInfoClick = sinon.spy() const onHelpClick = sinon.spy() @@ -21,11 +30,12 @@ function assertContent({ currentUser, map }) { if (map) { it('renders MapInfoBox', () => expect(wrapper.find(MapInfoBox)).to.exist) - it('renders Map Info icon', () => { - expect(wrapper.find('.mapInfoIcon')).to.exist - expect(wrapper.find('.mapInfoIcon .tooltipsAbove').text()).to.equal('Map Info') - wrapper.find('.mapInfoIcon').simulate('click') - expect(onInfoClick).to.have.property('callCount', 1) + assertTooltip({ + wrapper, + description: 'renders Map Info icon', + cssClass: '.mapInfoIcon', + tooltipText: 'Map Info', + callback: onInfoClick }) } else { it('does not render MapInfoBox', () => expect(wrapper.find(MapInfoBox).length).to.equal(0)) @@ -43,11 +53,12 @@ function assertContent({ currentUser, map }) { } // common content - it('renders Help icon', function() { - expect(wrapper.find('.openCheatsheet')).to.exist - expect(wrapper.find('.openCheatsheet .tooltipsAbove').text()).to.equal('Help') - wrapper.find('.openCheatsheet').simulate('click') - expect(onHelpClick).to.have.property('callCount', 1) + assertTooltip({ + wrapper, + description: 'renders Help icon', + cssClass: '.openCheatsheet', + tooltipText: 'Help', + callback: onHelpClick }) it('renders clearfloat at the end', function() { const clearfloat = wrapper.find('.clearfloat') @@ -67,21 +78,12 @@ function assertStarLogic({ mapIsStarred }) { />) const starWrapper = wrapper.find('.starMap') starWrapper.simulate('click') - if (mapIsStarred) { - it('has unstar content', () => { - expect(starWrapper.hasClass('starred')).to.equal(true) - expect(starWrapper.find('.tooltipsAbove').text()).to.equal('Unstar') - expect(onMapStar).to.have.property('callCount', 0) - expect(onMapUnstar).to.have.property('callCount', 1) - }) - } else { - it('has star content', () => { - expect(starWrapper.hasClass('starred')).to.equal(false) - expect(starWrapper.find('.tooltipsAbove').text()).to.equal('Star') - expect(onMapStar).to.have.property('callCount', 1) - expect(onMapUnstar).to.have.property('callCount', 0) - }) - } + it(mapIsStarred ? 'has unstar content' : 'has star content', () => { + expect(starWrapper.hasClass('starred')).to.equal(mapIsStarred) + expect(starWrapper.find('.tooltipsAbove').text()).to.equal(mapIsStarred ? 'Unstar' : 'Star') + expect(onMapStar).to.have.property('callCount', mapIsStarred ? 0 : 1) + expect(onMapUnstar).to.have.property('callCount', mapIsStarred ? 1 : 0) + }) } describe('InfoAndHelp', function() {