]> source.dussan.org Git - sonarqube.git/commitdiff
Update karma config to support requirejs
authorStas Vilchik <vilchiks@gmail.com>
Tue, 25 Feb 2014 07:59:53 +0000 (08:59 +0100)
committerStas Vilchik <vilchiks@gmail.com>
Tue, 25 Feb 2014 07:59:53 +0000 (08:59 +0100)
sonar-server/karma.conf.js
sonar-server/package.json
sonar-server/src/main/webapp/javascripts/navigator/filters/base-filters.js
sonar-server/src/main/webapp/javascripts/navigator/filters/choice-filters.js
sonar-server/src/main/webapp/javascripts/tests/main.js [new file with mode: 0644]
sonar-server/src/main/webapp/javascripts/tests/measures.js [deleted file]
sonar-server/src/main/webapp/javascripts/tests/navigator/filters/BaseFilterViewSpec.js [new file with mode: 0644]
sonar-server/src/main/webapp/javascripts/tests/navigator/filters/ChoiceFilterViewSpec.js [new file with mode: 0644]

index 9619bdfee07b4c50d8987690a8a28c3f49f58367..f4ce16ebe0e8c6ae786c45d6862e6e2dac9a180f 100644 (file)
@@ -18,7 +18,7 @@ module.exports = function(config) {
 
 
     // frameworks to use
-    frameworks: ['qunit'],
+    frameworks: ['jasmine'],
 
 
     // list of files / patterns to load in the browser
@@ -26,14 +26,21 @@ module.exports = function(config) {
         // dependencies
         'third-party/jquery.min.js',
         'third-party/underscore.js',
-        'third-party/backbone.js',
-        'third-party/backbone.marionette.js',
+        'third-party/require.js',
+
+        // libs
+        { pattern: 'third-party/**/*.js', included: false },
+
+        // templates
+        { pattern: '../WEB-INF/app/views/**/*.hbs.erb', included: false },
 
         // app
-        'navigator/filters/base-filters.js',
+        { pattern: 'navigator/**/*.js', included: false },
 
         // tests
-        'tests/measures.js'
+        { pattern: 'tests/**/*Spec.js', included: false },
+
+        'tests/main.js'
     ],
 
 
@@ -49,7 +56,7 @@ module.exports = function(config) {
 
 
     plugins: [
-      'karma-qunit',
+      'karma-jasmine',
       'karma-phantomjs-launcher',
       'karma-coverage',
       'karma-junit-reporter'
@@ -108,6 +115,6 @@ module.exports = function(config) {
 
     // Continuous Integration mode
     // if true, it capture browsers, run tests and exit
-    singleRun: true
+    singleRun: false
   });
 };
index 7ef6cb9960c046817eaaa312a550d8a74685096d..7b52fb4e0e0a71c9792421434bf9fe55de68fded 100644 (file)
@@ -3,7 +3,7 @@
   "version": "0.0.1",
   "devDependencies": {
     "karma": "~0.10.8",
-    "karma-qunit": "*",
+    "karma-jasmine": "*",
     "karma-phantomjs-launcher": "*",
     "karma-coverage": "*",
     "karma-junit-reporter": "*"
index d3b764e23da041ebd9110d717caf980bfffbe151..1509c43d315ad90c2467f101f116ae7acf1b74af 100644 (file)
@@ -60,7 +60,7 @@ define(['backbone', 'backbone.marionette'], function (Backbone, Marionette) {
     initialize: function(options) {
       Marionette.ItemView.prototype.initialize.apply(this, arguments);
 
-      var detailsView = options.detailsView || DetailsFilterView;
+      var detailsView = (options && options.detailsView) || DetailsFilterView;
       this.detailsView = new detailsView({
         model: this.model,
         filterView: this
index 8a679fc5eed6e1037e24d2a5f60b70de81e8f517..d97c33e1129418a6ec2630f3709179b577d1da64 100644 (file)
@@ -1,8 +1,8 @@
 define(['handlebars', 'navigator/filters/base-filters'], function (Handlebars, BaseFilters) {
 
   var DetailsChoiceFilterView = BaseFilters.DetailsFilterView.extend({
-    template: Handlebars.compile(jQuery('#choiceFilterTemplate').html()),
-    itemTemplate: Handlebars.compile(jQuery('#choiceFilterItemTemplate').html()),
+    template: Handlebars.compile(jQuery('#choiceFilterTemplate').html() || ''),
+    itemTemplate: Handlebars.compile(jQuery('#choiceFilterItemTemplate').html() || ''),
 
 
     events: function() {
diff --git a/sonar-server/src/main/webapp/javascripts/tests/main.js b/sonar-server/src/main/webapp/javascripts/tests/main.js
new file mode 100644 (file)
index 0000000..c012e47
--- /dev/null
@@ -0,0 +1,45 @@
+window.__karma__.loaded = function() {};
+
+var tests = [];
+for (var file in window.__karma__.files) {
+  if (window.__karma__.files.hasOwnProperty(file)) {
+    if (/Spec\.js$/.test(file)) {
+      tests.push(file);
+    }
+  }
+}
+
+
+requirejs.config({
+  baseUrl: '/base',
+
+  paths: {
+    'backbone': 'third-party/backbone',
+    'backbone.marionette': 'third-party/backbone.marionette',
+    'handlebars': 'third-party/handlebars',
+    'moment': 'third-party/moment'
+  },
+
+  shim: {
+    'backbone.marionette': {
+      deps: ['backbone'],
+      exports: 'Marionette'
+    },
+    'backbone': {
+      exports: 'Backbone'
+    },
+    'handlebars': {
+      exports: 'Handlebars'
+    },
+    'moment': {
+      exports: 'moment'
+    }
+  },
+
+  // ask Require.js to load these files (all our tests)
+  deps: tests,
+
+  // start test run, once Require.js is done
+  callback: window.__karma__.start
+
+});
diff --git a/sonar-server/src/main/webapp/javascripts/tests/measures.js b/sonar-server/src/main/webapp/javascripts/tests/measures.js
deleted file mode 100644 (file)
index b8b2f23..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* jshint undef:false */
-
-test("filter defaults", function() {
-  var filter = new window.SS.Filter();
-  strictEqual(true, filter.get('multiple'), "multiple doesn't equal true");
-  equal(false, filter.get('placeholder'), "placeholder doesn't equal ''");
-});
-
-test("is model.view correctly set", function() {
-  var filter = new window.SS.Filter(),
-      filterView = new window.SS.BaseFilterView({
-        model: filter
-      });
-  strictEqual(filterView, filter.view, "model.view doesn't model's view");
-});
-
-test("is details view set to default", function() {
-  var filter = new window.SS.Filter(),
-      filterView = new window.SS.BaseFilterView({
-        model: filter
-      });
-  ok(filterView.detailsView instanceof window.SS.DetailsFilterView, "");
-});
diff --git a/sonar-server/src/main/webapp/javascripts/tests/navigator/filters/BaseFilterViewSpec.js b/sonar-server/src/main/webapp/javascripts/tests/navigator/filters/BaseFilterViewSpec.js
new file mode 100644 (file)
index 0000000..b1a0ab1
--- /dev/null
@@ -0,0 +1,15 @@
+define(['navigator/filters/base-filters'], function(BaseFilters) {
+
+  describe('BaseFilterView', function() {
+
+    it('initializes', function() {
+      var baseFilterView = new BaseFilters.BaseFilterView({
+        model: new BaseFilters.Filter()
+      });
+      expect(baseFilterView.detailsView).toBeDefined();
+      expect(baseFilterView.detailsView.options.filterView).toBe(baseFilterView);
+    });
+
+  });
+
+});
diff --git a/sonar-server/src/main/webapp/javascripts/tests/navigator/filters/ChoiceFilterViewSpec.js b/sonar-server/src/main/webapp/javascripts/tests/navigator/filters/ChoiceFilterViewSpec.js
new file mode 100644 (file)
index 0000000..3b905a9
--- /dev/null
@@ -0,0 +1,39 @@
+define(['navigator/filters/base-filters', 'navigator/filters/choice-filters'], function(BaseFilters, ChoiceFilters) {
+
+  describe('BaseFilterView', function() {
+    var choices, choiceFilter, choiceFilterView;
+
+    beforeEach(function() {
+      choices = {
+        'ONE': 'one',
+        'TWO': 'two',
+        'THREE': 'three',
+        '!OPPOSITE': 'opposite'
+      };
+
+      choiceFilter = new BaseFilters.Filter({
+        name: 'Choice Filter Name',
+        property: 'choiceFilterProperty',
+        type: ChoiceFilters.ChoiceFilterView,
+        enabled: true,
+        optional: false,
+        choices: choices
+      });
+
+      choiceFilterView = new ChoiceFilters.ChoiceFilterView({
+        model: choiceFilter
+      });
+    });
+
+    it('creates choices', function() {
+      expect(choiceFilterView.choices).toBeDefined();
+      expect(choiceFilterView.choices.length).toBe(Object.keys(choices).length);
+    });
+
+    it('does not have selected by default', function() {
+      expect(choiceFilterView.getSelected().length).toBe(0);
+    });
+
+  });
+
+});