mirror of
https://github.com/apache/superset.git
synced 2024-09-06 13:57:40 -04:00
get npm test working (#762)
This commit is contained in:
parent
1fed498e33
commit
24e85f52b4
@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"presets" : ["es2015", "react"]
|
"presets" : ["airbnb", "es2015", "react"]
|
||||||
}
|
}
|
||||||
|
@ -6,28 +6,25 @@ const propTypes = {
|
|||||||
onQuery: PropTypes.func.isRequired,
|
onQuery: PropTypes.func.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default class QueryAndSaveBtns extends React.Component {
|
export default function QueryAndSaveBtns({ canAdd, onQuery }) {
|
||||||
render() {
|
const saveClasses = classnames('btn btn-default', {
|
||||||
const saveClasses = classnames('btn btn-default', {
|
'disabled disabledButton': canAdd !== 'True',
|
||||||
'disabled disabledButton': this.props.canAdd !== 'True',
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="btn-group query-and-save">
|
<div className="btn-group query-and-save">
|
||||||
<button type="button" className="btn btn-primary" onClick={this.props.onQuery}>
|
<button type="button" className="btn btn-primary" onClick={onQuery}>
|
||||||
<i className="fa fa-bolt"></i>Query
|
<i className="fa fa-bolt"></i>Query
|
||||||
</button>
|
</button>
|
||||||
<button type="button"
|
<button type="button"
|
||||||
className={saveClasses}
|
className={saveClasses}
|
||||||
onClick={this.props.onSave}
|
data-target="#save_modal"
|
||||||
data-target="#save_modal"
|
data-toggle="modal"
|
||||||
data-toggle="modal"
|
>
|
||||||
>
|
<i className="fa fa-plus-circle"></i>Save as
|
||||||
<i className="fa fa-plus-circle"></i>Save as
|
</button>
|
||||||
</button>
|
</div>
|
||||||
</div>
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryAndSaveBtns.propTypes = propTypes;
|
QueryAndSaveBtns.propTypes = propTypes;
|
||||||
|
@ -4,4 +4,5 @@ cd "$(dirname "$0")"
|
|||||||
npm --version
|
npm --version
|
||||||
npm install
|
npm install
|
||||||
npm run lint
|
npm run lint
|
||||||
|
npm run test
|
||||||
npm run prod
|
npm run prod
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "caravel",
|
"name": "caravel",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"description": "Any database to any visualization",
|
"description": "Caravel is a data exploration platform designed to be visual, intuitive, and interactive.",
|
||||||
"directories": {
|
"directories": {
|
||||||
"doc": "docs",
|
"doc": "docs",
|
||||||
"test": "tests"
|
"test": "spec"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "mocha --compilers js:babel-core/register --required spec/helpers/browser.js spec/**/*_spec.*",
|
||||||
"dev": "webpack -d --watch --colors",
|
"dev": "webpack -d --watch --colors",
|
||||||
"prod": "webpack -p --colors",
|
"prod": "webpack -p --colors",
|
||||||
"lint": "npm run --silent lint:js",
|
"lint": "npm run --silent lint:js",
|
||||||
@ -36,10 +36,6 @@
|
|||||||
"homepage": "https://github.com/airbnb/caravel#readme",
|
"homepage": "https://github.com/airbnb/caravel#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"autobind-decorator": "^1.3.3",
|
"autobind-decorator": "^1.3.3",
|
||||||
"babel-loader": "^6.2.1",
|
|
||||||
"babel-polyfill": "^6.3.14",
|
|
||||||
"babel-preset-es2015": "^6.3.13",
|
|
||||||
"babel-preset-react": "^6.3.13",
|
|
||||||
"bootstrap": "^3.3.6",
|
"bootstrap": "^3.3.6",
|
||||||
"bootstrap-datepicker": "^1.6.0",
|
"bootstrap-datepicker": "^1.6.0",
|
||||||
"bootstrap-toggle": "^2.2.1",
|
"bootstrap-toggle": "^2.2.1",
|
||||||
@ -47,7 +43,6 @@
|
|||||||
"brfs": "^1.4.3",
|
"brfs": "^1.4.3",
|
||||||
"cal-heatmap": "3.5.4",
|
"cal-heatmap": "3.5.4",
|
||||||
"classnames": "^2.2.5",
|
"classnames": "^2.2.5",
|
||||||
"css-loader": "^0.23.1",
|
|
||||||
"d3": "^3.5.14",
|
"d3": "^3.5.14",
|
||||||
"d3-cloud": "^1.2.1",
|
"d3-cloud": "^1.2.1",
|
||||||
"d3-sankey": "^0.2.1",
|
"d3-sankey": "^0.2.1",
|
||||||
@ -55,20 +50,15 @@
|
|||||||
"datamaps": "^0.4.4",
|
"datamaps": "^0.4.4",
|
||||||
"datatables-bootstrap3-plugin": "^0.4.0",
|
"datatables-bootstrap3-plugin": "^0.4.0",
|
||||||
"datatables.net-bs": "^1.10.11",
|
"datatables.net-bs": "^1.10.11",
|
||||||
"exports-loader": "^0.6.3",
|
|
||||||
"font-awesome": "^4.5.0",
|
"font-awesome": "^4.5.0",
|
||||||
"gridster": "^0.5.6",
|
"gridster": "^0.5.6",
|
||||||
"immutability-helper": "^2.0.0",
|
"immutability-helper": "^2.0.0",
|
||||||
"imports-loader": "^0.6.5",
|
|
||||||
"jquery": "^2.2.1",
|
"jquery": "^2.2.1",
|
||||||
"jquery-ui": "^1.10.5",
|
"jquery-ui": "1.10.5",
|
||||||
"json-loader": "^0.5.4",
|
|
||||||
"less": "^2.6.1",
|
|
||||||
"less-loader": "^2.2.2",
|
|
||||||
"mapbox-gl": "^0.20.0",
|
"mapbox-gl": "^0.20.0",
|
||||||
"mustache": "^2.2.1",
|
"mustache": "^2.2.1",
|
||||||
"nvd3": "1.8.3",
|
"nvd3": "1.8.3",
|
||||||
"react": "^15.2.0",
|
"react": "^15.2.1",
|
||||||
"react-bootstrap": "^0.28.3",
|
"react-bootstrap": "^0.28.3",
|
||||||
"react-bootstrap-table": "^2.3.7",
|
"react-bootstrap-table": "^2.3.7",
|
||||||
"react-dom": "^0.14.8",
|
"react-dom": "^0.14.8",
|
||||||
@ -77,17 +67,35 @@
|
|||||||
"react-resizable": "^1.3.3",
|
"react-resizable": "^1.3.3",
|
||||||
"select2": "3.5",
|
"select2": "3.5",
|
||||||
"select2-bootstrap-css": "^1.4.6",
|
"select2-bootstrap-css": "^1.4.6",
|
||||||
"style-loader": "^0.13.0",
|
|
||||||
"supercluster": "https://github.com/georgeke/supercluster/tarball/ac3492737e7ce98e07af679623aad452373bbc40",
|
"supercluster": "https://github.com/georgeke/supercluster/tarball/ac3492737e7ce98e07af679623aad452373bbc40",
|
||||||
"topojson": "^1.6.22",
|
"topojson": "^1.6.22",
|
||||||
"transform-loader": "^0.2.3",
|
"viewport-mercator-project": "^2.1.0"
|
||||||
"viewport-mercator-project": "^2.1.0",
|
|
||||||
"webpack": "^1.12.12",
|
|
||||||
"webworkify-webpack": "1.0.6"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"babel": "^6.3.26",
|
||||||
|
"babel-core": "^6.10.4",
|
||||||
|
"babel-loader": "^6.2.4",
|
||||||
|
"babel-preset-airbnb": "^1.1.1",
|
||||||
|
"babel-preset-es2015": "^6.9.0",
|
||||||
|
"babel-preset-react": "^6.11.1",
|
||||||
|
"chai": "^3.5.0",
|
||||||
|
"css-loader": "^0.23.1",
|
||||||
|
"enzyme": "^2.0.0",
|
||||||
"eslint": "^2.2.0",
|
"eslint": "^2.2.0",
|
||||||
|
"exports-loader": "^0.6.3",
|
||||||
"file-loader": "^0.8.5",
|
"file-loader": "^0.8.5",
|
||||||
"url-loader": "^0.5.7"
|
"imports-loader": "^0.6.5",
|
||||||
|
"jsdom": "^8.0.1",
|
||||||
|
"json-loader": "^0.5.4",
|
||||||
|
"less": "^2.6.1",
|
||||||
|
"less-loader": "^2.2.2",
|
||||||
|
"mocha": "^2.4.5",
|
||||||
|
"react-addons-test-utils": "^0.14.8",
|
||||||
|
"react-dom": "^0.14.8",
|
||||||
|
"style-loader": "^0.13.0",
|
||||||
|
"transform-loader": "^0.2.3",
|
||||||
|
"url-loader": "^0.5.7",
|
||||||
|
"webpack": "^1.13.1",
|
||||||
|
"webworkify-webpack": "1.0.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
22
caravel/assets/spec/helpers/browser.js
Normal file
22
caravel/assets/spec/helpers/browser.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* eslint no-undef: 0, no-native-reassign: 0 */
|
||||||
|
|
||||||
|
require('babel-register')();
|
||||||
|
|
||||||
|
var jsdom = require('jsdom').jsdom;
|
||||||
|
|
||||||
|
var exposedProperties = ['window', 'navigator', 'document'];
|
||||||
|
|
||||||
|
global.document = jsdom('');
|
||||||
|
global.window = document.defaultView;
|
||||||
|
Object.keys(document.defaultView).forEach((property) => {
|
||||||
|
if (typeof global[property] === 'undefined') {
|
||||||
|
exposedProperties.push(property);
|
||||||
|
global[property] = document.defaultView[property];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
global.navigator = {
|
||||||
|
userAgent: 'node.js'
|
||||||
|
};
|
||||||
|
|
||||||
|
documentRef = document;
|
@ -0,0 +1,35 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { expect } from 'chai';
|
||||||
|
import { shallow } from 'enzyme';
|
||||||
|
|
||||||
|
import QueryAndSaveButtons from '../../../../javascripts/explore/components/QueryAndSaveBtns';
|
||||||
|
|
||||||
|
describe('QueryAndSaveButtons', () => {
|
||||||
|
let defaultProps = {
|
||||||
|
canAdd: 'True',
|
||||||
|
onQuery: () => {}
|
||||||
|
};
|
||||||
|
|
||||||
|
// It must render
|
||||||
|
it('renders', () => {
|
||||||
|
expect(React.isValidElement(<QueryAndSaveButtons {...defaultProps} />)).to.equal(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Test the output
|
||||||
|
describe('output', () => {
|
||||||
|
let wrapper;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
wrapper = shallow(<QueryAndSaveButtons {...defaultProps} />);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders 2 buttons', () => {
|
||||||
|
expect(wrapper.find('button')).to.have.lengthOf(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders buttons with correct text', () => {
|
||||||
|
expect(wrapper.find('button').contains('Query')).to.eql(true);
|
||||||
|
expect(wrapper.find('button').contains('Save as')).to.eql(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -1,9 +1,9 @@
|
|||||||
var path = require('path');
|
const path = require('path');
|
||||||
var APP_DIR = path.resolve(__dirname, './'); // input
|
|
||||||
var BUILD_DIR = path.resolve(__dirname, './javascripts/dist'); // output
|
|
||||||
|
|
||||||
var config = {
|
const APP_DIR = path.resolve(__dirname, './'); // input
|
||||||
// for now generate one compiled js file per entry point / html page
|
const BUILD_DIR = path.resolve(__dirname, './javascripts/dist'); // output
|
||||||
|
|
||||||
|
const config = {
|
||||||
entry: {
|
entry: {
|
||||||
'css-theme': APP_DIR + '/javascripts/css-theme.js',
|
'css-theme': APP_DIR + '/javascripts/css-theme.js',
|
||||||
dashboard: APP_DIR + '/javascripts/dashboard/Dashboard.jsx',
|
dashboard: APP_DIR + '/javascripts/dashboard/Dashboard.jsx',
|
||||||
@ -18,6 +18,7 @@ var config = {
|
|||||||
filename: '[name].entry.js'
|
filename: '[name].entry.js'
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
|
extensions: ['', '.js', '.jsx'],
|
||||||
alias: {
|
alias: {
|
||||||
webworkify: 'webworkify-webpack'
|
webworkify: 'webworkify-webpack'
|
||||||
}
|
}
|
||||||
@ -25,41 +26,50 @@ var config = {
|
|||||||
module: {
|
module: {
|
||||||
loaders: [
|
loaders: [
|
||||||
{
|
{
|
||||||
test: /\.jsx?/,
|
test: /\.jsx?$/,
|
||||||
include: APP_DIR,
|
|
||||||
exclude: APP_DIR + '/node_modules',
|
exclude: APP_DIR + '/node_modules',
|
||||||
loader: 'babel'
|
loader: 'babel',
|
||||||
|
query: {
|
||||||
|
presets: ['react', 'es2015', 'stage-0']
|
||||||
|
}
|
||||||
},
|
},
|
||||||
/* for react-map-gl overlays */
|
|
||||||
|
/* for react-map-gl overlays */
|
||||||
{
|
{
|
||||||
test: /\.react\.js$/,
|
test: /\.react\.js$/,
|
||||||
include: APP_DIR + '/node_modules/react-map-gl/src/overlays',
|
include: APP_DIR + '/node_modules/react-map-gl/src/overlays',
|
||||||
loader: 'babel'
|
loader: 'babel'
|
||||||
},
|
},
|
||||||
/* for require('*.css') */
|
|
||||||
|
/* for require('*.css') */
|
||||||
{
|
{
|
||||||
test: /\.css$/,
|
test: /\.css$/,
|
||||||
include: APP_DIR,
|
include: APP_DIR,
|
||||||
loader: "style-loader!css-loader"
|
loader: "style-loader!css-loader"
|
||||||
},
|
},
|
||||||
/* for css linking images */
|
|
||||||
|
/* for css linking images */
|
||||||
{ test: /\.png$/, loader: "url-loader?limit=100000" },
|
{ test: /\.png$/, loader: "url-loader?limit=100000" },
|
||||||
{ test: /\.jpg$/, loader: "file-loader" },
|
{ test: /\.jpg$/, loader: "file-loader" },
|
||||||
{ test: /\.gif$/, loader: "file-loader" },
|
{ test: /\.gif$/, loader: "file-loader" },
|
||||||
/* for font-awesome */
|
|
||||||
|
/* for font-awesome */
|
||||||
{ test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader?limit=10000&minetype=application/font-woff" },
|
{ test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader?limit=10000&minetype=application/font-woff" },
|
||||||
{ test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "file-loader" },
|
{ test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "file-loader" },
|
||||||
/* for require('*.less') */
|
|
||||||
|
/* for require('*.less') */
|
||||||
{
|
{
|
||||||
test: /\.less$/,
|
test: /\.less$/,
|
||||||
include: APP_DIR,
|
include: APP_DIR,
|
||||||
loader: "style!css!less"
|
loader: "style!css!less"
|
||||||
},
|
},
|
||||||
/* for mapbox */
|
|
||||||
|
/* for mapbox */
|
||||||
{
|
{
|
||||||
test: /\.json$/,
|
test: /\.json$/,
|
||||||
loader: 'json-loader'
|
loader: 'json-loader'
|
||||||
}, {
|
},
|
||||||
|
{
|
||||||
test: /\.js$/,
|
test: /\.js$/,
|
||||||
include: APP_DIR + '/node_modules/mapbox-gl/js/render/painter/use_program.js',
|
include: APP_DIR + '/node_modules/mapbox-gl/js/render/painter/use_program.js',
|
||||||
loader: 'transform/cacheable?brfs'
|
loader: 'transform/cacheable?brfs'
|
||||||
@ -71,6 +81,11 @@ var config = {
|
|||||||
query: 'brfs'
|
query: 'brfs'
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
|
externals: {
|
||||||
|
cheerio: 'window',
|
||||||
|
'react/lib/ExecutionEnvironment': true,
|
||||||
|
'react/lib/ReactContext': true
|
||||||
|
},
|
||||||
plugins: []
|
plugins: []
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user