diff --git a/ui/.babelrc b/ui/.babelrc new file mode 100644 index 0000000..f1de1fd --- /dev/null +++ b/ui/.babelrc @@ -0,0 +1,3 @@ +{ + presets: ['es2015', 'react'] +} diff --git a/ui/karma.conf.js b/ui/karma.conf.js new file mode 100644 index 0000000..3f3b256 --- /dev/null +++ b/ui/karma.conf.js @@ -0,0 +1,77 @@ +// Karma configuration +// Generated on Tue Nov 01 2016 14:35:38 GMT-0700 (PDT) + +module.exports = function(config) { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['jasmine', 'browserify'], + + + // list of files / patterns to load in the browser + files: [ + 'https://code.jquery.com/jquery-1.11.2.min.js', + 'src/js/components/*', + 'spec/*' + ], + + + // list of files to exclude + exclude: [ + ], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + 'src/js/components/*': ['browserify'], + 'spec/*': ['browserify'] + }, + + browserify: { + debug: true, + transform: ['babelify'] + }, + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress'], + + + // web server port + port: 9876, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: true, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['Chrome'], + + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: true, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity + }) +} diff --git a/ui/package.json b/ui/package.json index 24d929d..6938b7b 100644 --- a/ui/package.json +++ b/ui/package.json @@ -12,8 +12,8 @@ "dependencies": { "bootstrap-sass": "^3.3.6", "jquery": "^3.1.0", - "react": "^0.14.6", - "react-dom": "^0.14.6" + "react": "^15.3.2", + "react-dom": "^15.3.2" }, "devDependencies": { "babel-core": "^6.4.5", @@ -23,18 +23,28 @@ "babel-plugin-transform-class-properties": "^6.3.13", "babel-plugin-transform-decorators-legacy": "^1.3.4", "babel-preset-es2015": "^6.3.13", - "babel-preset-react": "^6.3.13", + "babel-preset-react": "^6.16.0", "babel-preset-stage-0": "^6.3.13", + "babelify": "^7.3.0", "bootstrap-loader": "^1.1.0", + "browserify": "^13.1.1", "css-loader": "^0.23.1", "extract-text-webpack-plugin": "^1.0.1", "file-loader": "^0.9.0", "imports-loader": "^0.6.5", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.3.0", + "karma-browserify": "^5.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-jasmine": "^1.0.2", "node-sass": "^3.8.0", + "react-addons-test-utils": "^15.3.2", "resolve-url-loader": "^1.6.0", "sass-loader": "^4.0.0", "style-loader": "^0.13.1", "url-loader": "^0.5.7", + "watchify": "^3.7.0", "webpack": "^1.13.1", "webpack-dev-server": "^1.14.1" }, diff --git a/ui/spec/RenderSpec.js b/ui/spec/RenderSpec.js new file mode 100644 index 0000000..10c9826 --- /dev/null +++ b/ui/spec/RenderSpec.js @@ -0,0 +1,34 @@ +/*Copyright (c) 2016 Intel, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +import Layout from '../src/js/components/Layout'; + +var React = require('react'); +var TestUtils = require('react-addons-test-utils'); + +describe('Tests for successful rendering', function() { + + it('can render without error', function() { + var component, element; + element = React.createElement( + Layout, + {} + ); + expect(function() { + component = TestUtils.renderIntoDocument(element); + }).not.toThrow(); + }); + +});