edce66c44d
* move ImportDialogBox into a folder * install enzyme * start testing InfoAndHelp component * add star logic to tests * switch ImportDialogBox to using enzyme but tests are still failing * make `npm run test` work * tests pass again * eslint * try to fix travis by adding react-addons-test-utils again * eslintrc for test dir * remove duplicated code * fix * try to suppress 2 warnings
58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
/* global describe, it */
|
|
import React from 'react'
|
|
import ImportDialogBox from '../../../src/components/MapView/ImportDialogBox.js'
|
|
import Dropzone from 'react-dropzone'
|
|
import { expect } from 'chai'
|
|
import { shallow } from 'enzyme'
|
|
import sinon from 'sinon'
|
|
|
|
describe('ImportDialogBox', function() {
|
|
const csvExport = sinon.spy()
|
|
const jsonExport = sinon.spy()
|
|
const onExport = format => () => {
|
|
if (format === 'csv') {
|
|
csvExport()
|
|
} else if (format === 'json') {
|
|
jsonExport()
|
|
}
|
|
}
|
|
|
|
const testExportButton = ({ description, cssClass, exporter }) => {
|
|
it(description, () => {
|
|
const wrapper = shallow(<ImportDialogBox onExport={onExport} />)
|
|
const button = wrapper.find(cssClass)
|
|
expect(button).to.exist
|
|
button.simulate('click')
|
|
expect(exporter).to.have.property('callCount', 1)
|
|
})
|
|
}
|
|
testExportButton({
|
|
description: 'has an Export CSV button',
|
|
cssClass: '.export-csv',
|
|
exporter: csvExport
|
|
})
|
|
testExportButton({
|
|
description: 'has an Export JSON button',
|
|
cssClass: '.export-json',
|
|
exporter: jsonExport
|
|
})
|
|
|
|
it('has a Download screenshot button', () => {
|
|
const downloadScreenshot = sinon.spy()
|
|
const wrapper = shallow(<ImportDialogBox onExport={() => null} downloadScreenshot={downloadScreenshot} />)
|
|
const button = wrapper.find('.download-screenshot')
|
|
expect(button).to.exist
|
|
button.simulate('click')
|
|
expect(downloadScreenshot).to.have.property('callCount', 1)
|
|
})
|
|
|
|
it('has a file uploader', () => {
|
|
const uploadedFile = {}
|
|
const onFileAdded = sinon.spy()
|
|
const wrapper = shallow(<ImportDialogBox onExport={() => null} onFileAdded={onFileAdded} />)
|
|
const dropzone = wrapper.find(Dropzone)
|
|
dropzone.props().onDropAccepted([uploadedFile], { preventDefault: () => {} })
|
|
expect(onFileAdded).to.have.property('callCount', 1)
|
|
expect(onFileAdded.calledWith(uploadedFile)).to.equal(true)
|
|
})
|
|
})
|