diff --git a/.gitignore b/.gitignore
index aeaa49cddc..8e796ee552 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
*.pyc
+yarn-error.log
+_modules
superset/assets/coverage/*
changelog.sh
.DS_Store
diff --git a/superset/assets/javascripts/dashboard/Dashboard.jsx b/superset/assets/javascripts/dashboard/Dashboard.jsx
index 6f9d6de56e..cda9e1e44e 100644
--- a/superset/assets/javascripts/dashboard/Dashboard.jsx
+++ b/superset/assets/javascripts/dashboard/Dashboard.jsx
@@ -74,7 +74,7 @@ function initDashboardView(dashboard) {
$('[data-toggle="tooltip"]').tooltip({ container: 'body' });
}
-function dashboardContainer(dashboard) {
+export function dashboardContainer(dashboard) {
return Object.assign({}, dashboard, {
type: 'dashboard',
filters: {},
diff --git a/superset/assets/javascripts/dashboard/components/Controls.jsx b/superset/assets/javascripts/dashboard/components/Controls.jsx
index 15afca9da7..b4cf96616c 100644
--- a/superset/assets/javascripts/dashboard/components/Controls.jsx
+++ b/superset/assets/javascripts/dashboard/components/Controls.jsx
@@ -10,14 +10,9 @@ import CodeModal from './CodeModal';
import SliceAdder from './SliceAdder';
const propTypes = {
- table: React.PropTypes.object,
dashboard: React.PropTypes.object.isRequired,
};
-const defaultProps = {
- actions: {},
-};
-
class Controls extends React.PureComponent {
constructor(props) {
super(props);
@@ -138,6 +133,5 @@ class Controls extends React.PureComponent {
}
}
Controls.propTypes = propTypes;
-Controls.defaultProps = defaultProps;
export default Controls;
diff --git a/superset/assets/spec/javascripts/dashboard/CodeModal_spec.jsx b/superset/assets/spec/javascripts/dashboard/CodeModal_spec.jsx
new file mode 100644
index 0000000000..5a430bc3d5
--- /dev/null
+++ b/superset/assets/spec/javascripts/dashboard/CodeModal_spec.jsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import CodeModal from '../../../javascripts/dashboard/components/CodeModal';
+import { mount } from 'enzyme';
+import { describe, it } from 'mocha';
+import { expect } from 'chai';
+
+
+describe('CodeModal', () => {
+ const mockedProps = {
+ triggerNode: ,
+ };
+ it('is valid', () => {
+ expect(
+ React.isValidElement()
+ ).to.equal(true);
+ });
+ it('renders the trigger node', () => {
+ const wrapper = mount();
+ expect(wrapper.find('.fa-edit')).to.have.length(1);
+ });
+});
diff --git a/superset/assets/spec/javascripts/dashboard/CssEditor_spec.jsx b/superset/assets/spec/javascripts/dashboard/CssEditor_spec.jsx
new file mode 100644
index 0000000000..58cac9d868
--- /dev/null
+++ b/superset/assets/spec/javascripts/dashboard/CssEditor_spec.jsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import CssEditor from '../../../javascripts/dashboard/components/CssEditor';
+import { mount } from 'enzyme';
+import { describe, it } from 'mocha';
+import { expect } from 'chai';
+
+
+describe('CssEditor', () => {
+ const mockedProps = {
+ triggerNode: ,
+ };
+ it('is valid', () => {
+ expect(
+ React.isValidElement()
+ ).to.equal(true);
+ });
+ it('renders the trigger node', () => {
+ const wrapper = mount();
+ expect(wrapper.find('.fa-edit')).to.have.length(1);
+ });
+});
diff --git a/superset/assets/spec/javascripts/dashboard/RefreshIntervalModal_spec.jsx b/superset/assets/spec/javascripts/dashboard/RefreshIntervalModal_spec.jsx
new file mode 100644
index 0000000000..8cf89be8da
--- /dev/null
+++ b/superset/assets/spec/javascripts/dashboard/RefreshIntervalModal_spec.jsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import RefreshIntervalModal from '../../../javascripts/dashboard/components/RefreshIntervalModal';
+import { mount } from 'enzyme';
+import { describe, it } from 'mocha';
+import { expect } from 'chai';
+
+
+describe('RefreshIntervalModal', () => {
+ const mockedProps = {
+ triggerNode: ,
+ };
+ it('is valid', () => {
+ expect(
+ React.isValidElement()
+ ).to.equal(true);
+ });
+ it('renders the trigger node', () => {
+ const wrapper = mount();
+ expect(wrapper.find('.fa-edit')).to.have.length(1);
+ });
+});