diff options
| author | Alon Levy <alon@pobox.com> | 2015-08-09 19:38:49 +0300 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-08-09 19:45:06 +0300 |
| commit | aafc58c9e15143dd5239950340579efee5c95979 (patch) | |
| tree | 1ae5625a7049890f54c783126a4784f4a1578fdd | |
| parent | 3b0ec2629ebee58e2b49c614d8addf2e5da23e1c (diff) | |
initial tests based on karma + jasmine, run with karma start
| -rw-r--r-- | README.md | 11 | ||||
| -rw-r--r-- | karma.conf.js | 69 | ||||
| -rw-r--r-- | package.json | 17 | ||||
| -rw-r--r-- | src/client/test-main.js | 53 | ||||
| -rw-r--r-- | src/client/util_test.js | 12 |
5 files changed, 161 insertions, 1 deletions
@@ -60,6 +60,10 @@ use pip to install all requirements $ pip install flask $ pip install gevent-socketio +Use npm for javascript (client) requirements, currently for development (testing) only, all other external dependencies are part of the repository: + + $ npm install + # Running instructions ## Running Rhizi Locally To run Rhizi locally: @@ -97,6 +101,11 @@ To update the css files you need [sass](http://sass-lang.com/). To rebuild the c For dev mode(debbuging, manual file load) use `?debug=1` at end of URL: e.g. `file://rhizifolder/html.index?debug=1` +Client testing: + + $ npm install + $ karma start + ## Coding Conventions - Ant Scripts - use underscore as delimiter in var name, eg: <code>pkg_foo_bar</code> @@ -194,4 +203,4 @@ rz-doc --list-names creates a new doc called "All Documents" with the contents of all rzdocs in merge.file. ## API(WIP) -[url]/api/rzdoc/[doc-title]/delete
\ No newline at end of file +[url]/api/rzdoc/[doc-title]/delete diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 00000000..3f3e0c46 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,69 @@ +// Karma configuration +// Generated on Sun Aug 09 2015 18:42:14 GMT+0300 (IDT) + +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', 'requirejs'], + + + // list of files / patterns to load in the browser + files: [ + 'src/client/test-main.js', + {pattern: 'res/client/**/*.js', included: false}, + {pattern: 'src/client/**/*.js', included: false}, + ], + + + // list of files to exclude + exclude: [ + 'src/client/main.js', + 'src/client/app.js' + ], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + }, + + + // 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_DEBUG, + + + // 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: false + }) +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..c5ef3137 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "Rhizi", + "description": "Collaborative graph editor", + "license": "AGPL version 3.0", + "repository": "https://github.com/Rhizi/rhizi.git", + "version": "0.0.1", + "dependencies": {}, + "devDependencies": { + "karma": "~0.13", + "jasmine": "~2.3.*", + "jasmine-core": "~2.3.4", + "karma-jasmine": "~0.3.6", + "requirejs": "~2.1.20", + "karma-requirejs": "~0.2.2", + "karma-chrome-launcher": "~0.2.0" + } +} diff --git a/src/client/test-main.js b/src/client/test-main.js new file mode 100644 index 00000000..c12f18b8 --- /dev/null +++ b/src/client/test-main.js @@ -0,0 +1,53 @@ +var allTestFiles = []; +var TEST_REGEXP = /(spec|test)\.js$/i; + +// Get a list of all the test files to include +Object.keys(window.__karma__.files).forEach(function(file) { + if (TEST_REGEXP.test(file)) { + // Normalize paths to RequireJS module names. + // If you require sub-dependencies of test files to be loaded as-is (requiring file extension) + // then do not normalize the paths + var normalizedTestModule = file.replace(/^\/base\/|\.js$/g, ''); + allTestFiles.push(normalizedTestModule); + } +}); + +var lib_path = '/base/res/client/lib/'; + +require.config({ + // Karma serves files under /base, which is the basePath from your config file + baseUrl: '/base', + + shim: { + 'socketio': { exports: 'io' }, + 'Bacon': { + deps: ['jquery'], + exports: 'Bacon', + } + }, + + paths: { + util: '/base/src/client/util', + stam: '/base/src/client/stam', + + // libraries paths + autocomplete: lib_path + 'autocomplete', + Bacon: lib_path + 'Bacon', + caret: lib_path + 'caret', + cola: lib_path + 'cola', + domain_types: 'res/local/js/domain_types', + d3: lib_path + 'd3/d3', + feedback: lib_path + 'feedback', + FileSaver: lib_path + 'FileSaver', + html2canvas: lib_path + 'html2canvas', + jquery: lib_path + 'jquery', + socketio: lib_path + 'socket.io/socket.io.min_0.9.10', + underscore: lib_path + 'underscore', + }, + + // dynamically load all test files + deps: allTestFiles, + + // we have to kickoff jasmine, as it is asynchronous + callback: window.__karma__.start +}); diff --git a/src/client/util_test.js b/src/client/util_test.js new file mode 100644 index 00000000..2477aaa2 --- /dev/null +++ b/src/client/util_test.js @@ -0,0 +1,12 @@ +define(['util'], function(util) { + describe("set from object", function () { + it("set from object", function() { + expect(util.set_from_object({1:1, 2:2})).toEqual({1:1, 2:1}); + expect(util.set_from_object({})).toEqual({}); + }); + it("set from array", function() { + expect(util.set_from_array([1, 2])).toEqual({1:1, 2:1}); + expect(util.set_from_array([])).toEqual({}); + }); + }); +}) |
