From b9f03479da79e6cc49f0fe06bf5c9c7cf6f1aa89 Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Wed, 3 May 2017 15:27:35 -0700 Subject: [PATCH] Fixing tests --- superset/assets/spec/helpers/browser.js | 20 ++++++++++++++--- .../components/AsyncSelect_spec.jsx | 22 +++++++++---------- .../sqllab/SqlEditorLeftBar_spec.jsx | 3 +++ 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/superset/assets/spec/helpers/browser.js b/superset/assets/spec/helpers/browser.js index 18072fe6851f5..d856686e8f6c0 100644 --- a/superset/assets/spec/helpers/browser.js +++ b/superset/assets/spec/helpers/browser.js @@ -1,12 +1,14 @@ /* eslint no-undef: 0, no-native-reassign: 0 */ +import 'babel-polyfill'; +import chai from 'chai'; +import jsdom from 'jsdom'; require('babel-register')(); - -const jsdom = require('jsdom').jsdom; +global.sinon = require('sinon'); const exposedProperties = ['window', 'navigator', 'document']; -global.document = jsdom(''); +global.document = jsdom.jsdom(''); global.window = document.defaultView; Object.keys(document.defaultView).forEach((property) => { if (typeof global[property] === 'undefined') { @@ -20,3 +22,15 @@ global.navigator = { platform: 'linux', appName: 'Netscape', }; + +// Configuration copied from https://github.com/sinonjs/sinon/issues/657 +// allowing for sinon.fakeServer to work +global.jsdom = jsdom.jsdom; +global.document = global.jsdom(''); +global.window = global.document.defaultView; +global.XMLHttpRequest = global.window.XMLHttpRequest; +global.expect = chai.expect; +global.assert = chai.assert; +global.sinon.useFakeXMLHttpRequest(); +global.window.XMLHttpRequest = global.XMLHttpRequest; +global.$ = require('jquery')(global.window); diff --git a/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx b/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx index 79c63739b65d3..2224b34e83ec5 100644 --- a/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx +++ b/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx @@ -1,10 +1,9 @@ import React from 'react'; import Select from 'react-select'; -import { shallow } from 'enzyme'; +import { mount, shallow } from 'enzyme'; import { describe, it } from 'mocha'; import { expect } from 'chai'; import sinon from 'sinon'; -import $ from 'jquery'; import AsyncSelect from '../../../javascripts/components/AsyncSelect'; @@ -39,30 +38,31 @@ describe('AsyncSelect', () => { }); describe('auto select', () => { - let stub; + let server; beforeEach(() => { - stub = sinon.stub($, 'get'); - stub.yields(); + server = sinon.fakeServer.create(); + server.respondWith([ + 200, { 'Content-Type': 'application/json' }, JSON.stringify({}), + ]); }); afterEach(() => { - stub.restore(); + server.restore(); }); it('should be off by default', () => { - const wrapper = shallow( + const wrapper = mount( , ); const spy = sinon.spy(wrapper.instance(), 'onChange'); - - wrapper.instance().fetchOptions(); expect(spy.callCount).to.equal(0); }); it('should auto select first option', () => { - const wrapper = shallow( + const wrapper = mount( , ); const spy = sinon.spy(wrapper.instance(), 'onChange'); + server.respond(); - wrapper.instance().fetchOptions(); + expect(spy.callCount).to.equal(1); expect(spy.calledWith(wrapper.instance().state.options[0])).to.equal(true); }); }); diff --git a/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx b/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx index c20c1a6cb9aa0..cc3cc3ac8f317 100644 --- a/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx +++ b/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx @@ -7,6 +7,9 @@ import { table, defaultQueryEditor } from './fixtures'; import SqlEditorLeftBar from '../../../javascripts/SqlLab/components/SqlEditorLeftBar'; import TableElement from '../../../javascripts/SqlLab/components/TableElement'; +global.notify = { + error: () => {}, +}; describe('SqlEditorLeftBar', () => { const mockedProps = {