// frameworks to use
- frameworks: ['qunit'],
+ frameworks: ['jasmine'],
// list of files / patterns to load in the browser
// 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'
],
plugins: [
- 'karma-qunit',
+ 'karma-jasmine',
'karma-phantomjs-launcher',
'karma-coverage',
'karma-junit-reporter'
// Continuous Integration mode
// if true, it capture browsers, run tests and exit
- singleRun: true
+ singleRun: false
});
};
"version": "0.0.1",
"devDependencies": {
"karma": "~0.10.8",
- "karma-qunit": "*",
+ "karma-jasmine": "*",
"karma-phantomjs-launcher": "*",
"karma-coverage": "*",
"karma-junit-reporter": "*"
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
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() {
--- /dev/null
+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
+
+});
+++ /dev/null
-/* 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, "");
-});
--- /dev/null
+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);
+ });
+
+ });
+
+});
--- /dev/null
+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);
+ });
+
+ });
+
+});