diff --git a/karma.conf.js b/karma.conf.js index a859e34edb..613930ae45 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -2,23 +2,73 @@ var webpack = require('webpack'); var path = require('path'); +/* + * It's a pain to have to wait for webpack to build everything; however it's + * the easiest way to load our dependencies from node_modules. + */ module.exports = function (config) { config.set({ - browsers: ['Chrome'], - singleRun: true, + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter frameworks: ['mocha'], + + // list of files / patterns to load in the browser files: [ - 'tests/tests.js' + 'test/tests.js' ], + + // preprocess matching files before serving them to the browser + // available preprocessors: + // https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { - 'tests/tests.js': ['webpack', 'sourcemap'] + 'test/tests.js': ['webpack', 'sourcemap'] }, - reporters: ['dots'], + + // 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', + //'PhantomJS', + ], + + // 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, + webpack: { module: { loaders: [ { test: /\.json$/, loader: "json" }, - { test: /\.js$/, loader: "babel", include: path.resolve('./src') }, + { test: /\.js$/, loader: "babel", + include: [path.resolve('./src'), + path.resolve('./test'), + ], + }, ], noParse: [ // don't parse the languages within highlight.js. They @@ -32,6 +82,8 @@ module.exports = function (config) { resolve: { alias: { 'matrix-react-sdk': path.resolve('src/index.js'), + // todo: make this go via an include path? + 'test-component-index': path.resolve('test/test-component-index.js'), }, }, }, diff --git a/test/components/structures/MatrixChat-test.js b/test/components/structures/MatrixChat-test.js new file mode 100644 index 0000000000..4d5c368873 --- /dev/null +++ b/test/components/structures/MatrixChat-test.js @@ -0,0 +1,22 @@ +var React = require('react'); +var TestUtils = require('react-addons-test-utils'); +var expect = require('expect'); + +var sdk = require('matrix-react-sdk'); +var MatrixChat; + +describe('MatrixChat', function () { + before(function() { + MatrixChat = sdk.getComponent('structures.MatrixChat'); + }); + + it('gives a login panel by default', function () { + var res = TestUtils.renderIntoDocument( + + ); + + // we expect a single component + TestUtils.findRenderedComponentWithType( + res, sdk.getComponent('structures.login.Login')); + }); +}); diff --git a/tests/tests.js b/test/tests.js similarity index 86% rename from tests/tests.js rename to test/tests.js index 5a2a44909b..f5b9c36199 100644 --- a/tests/tests.js +++ b/test/tests.js @@ -5,7 +5,7 @@ // this is a handly place to make sure the sdk has been skinned var sdk = require("matrix-react-sdk"); -sdk.loadSkin(require('../src/component-index')); +sdk.loadSkin(require('test-component-index')); var context = require.context('.', true, /-test\.jsx?$/); context.keys().forEach(context); diff --git a/tests/components/structures/MatrixChat-test.js b/tests/components/structures/MatrixChat-test.js deleted file mode 100644 index 917dbcba18..0000000000 --- a/tests/components/structures/MatrixChat-test.js +++ /dev/null @@ -1,11 +0,0 @@ -var React = require('react'); -var expect = require('expect'); - -var sdk = require("matrix-react-sdk"); - -var MatrixChat = sdk.getComponent('structures.MatrixChat'); - -describe('MatrixChat', function () { - it('does something', function () { - }); -});