Skip to content

Commit

Permalink
automatically mock angular in the tests
Browse files Browse the repository at this point in the history
added SearchSource#getNormalizedSort() method

Closes #217
  • Loading branch information
Spencer Alger authored and Rashid Khan committed Aug 1, 2014
1 parent ac2c11d commit 6b149b2
Show file tree
Hide file tree
Showing 15 changed files with 127 additions and 15 deletions.
31 changes: 31 additions & 0 deletions src/kibana/components/courier/data_source/search_source.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,37 @@ define(function (require) {
this._fetchDisabled = false;
};

/**
* Special reader function for sort, which will transform the sort syntax into a simple
* map of `field: dir`
*/
SearchSource.prototype.getNormalizedSort = function () {
var sort = this.get('sort');
if (!sort) return;

var normal = {};

(function read(lvl) {
if (_.isString(lvl)) {
normal[lvl] = 'asc';
}
else if (_.isArray(lvl)) {
_.forEach(lvl, read);
}
else if (_.isObject(lvl)) {
_.forOwn(lvl, function (dir, field) {
if (_.isObject(dir)) {
normal[field] = dir.dir || 'asc';
} else {
normal[field] = String(dir);
}
});
}
}(sort));

return normal;
};

/******
* PRIVATE APIS
******/
Expand Down
2 changes: 0 additions & 2 deletions src/kibana/require.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ require.config({

// bower_components
angular: '../bower_components/angular/angular',
'angular-mocks': '../bower_components/angular-mocks/angular-mocks',
'angular-route': '../bower_components/angular-route/angular-route',
'angular-bootstrap': '../bower_components/angular-bootstrap/ui-bootstrap-tpls',
'angular-bindonce': '../bower_components/angular-bindonce/bindonce',
Expand Down Expand Up @@ -43,7 +42,6 @@ require.config({
},
gridster: ['jquery'],
'angular-route': ['angular'],
'angular-mocks': ['angular'],
'elasticsearch': ['angular'],
'angular-bootstrap': ['angular'],
'angular-bindonce': ['angular'],
Expand Down
14 changes: 12 additions & 2 deletions test/unit/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,18 @@
fixtures: '../../test/unit/fixtures',
specs: '../../test/unit/specs',
sinon: '../../test/utils/sinon',
bluebird: '../bower_components/bluebird/js/browser/bluebird'
bluebird: '../bower_components/bluebird/js/browser/bluebird',
angular: '../bower_components/angular-mocks/angular-mocks',
angular_src: '../bower_components/angular/angular'
},
shim: {
angular: {
deps: [
'jquery',
'angular_src'
],
exports: 'angular'
},
'sinon/sinon': {
deps: [
'sinon/sinon-timers-1.8.2'
Expand Down Expand Up @@ -63,7 +72,8 @@
'specs/utils/datemath',
'specs/utils/interval',
'specs/utils/versionmath',
'specs/utils/routes/index'
'specs/utils/routes/index',
'specs/courier/search_source/_get_normalized_sort'
], function (kibana, sinon) {
kibana.load(function () {
var xhr = sinon.useFakeXMLHttpRequest();
Expand Down
1 change: 0 additions & 1 deletion test/unit/specs/apps/dashboard/directives/grid.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
define(function (require) {
var angular = require('angular');
var mocks = require('angular-mocks');
var _ = require('lodash');
var $ = require('jquery');

Expand Down
1 change: 0 additions & 1 deletion test/unit/specs/apps/dashboard/directives/panel.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
define(function (require) {
var angular = require('angular');
var mocks = require('angular-mocks');
var _ = require('lodash');
var $ = require('jquery');

Expand Down
2 changes: 1 addition & 1 deletion test/unit/specs/apps/dashboard/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
define(function (require) {
var mocks = require('angular-mocks');
var angular = require('angular');
var _ = require('lodash');
var $ = require('jquery');
var sinon = require('test_utils/auto_release_sinon');
Expand Down
83 changes: 83 additions & 0 deletions test/unit/specs/courier/search_source/_get_normalized_sort.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
define(function (require) {
describe('SearchSource#getNormalizedSort', function () {
require('services/private');
require('angular').module('getNormalizedSort', ['kibana']);

var source;

beforeEach(module('kibana'));
beforeEach(inject(function (Private) {
var SearchSource = Private(require('components/courier/data_source/search_source'));
source = new SearchSource();
}));

[
{
sort: {
starCount: 'asc'
},
normal: {
starCount: 'asc'
}
},
{
sort: {
starCount: 'desc'
},
normal: {
starCount: 'desc'
}
},
{
sort: 'starCount',
normal: {
starCount: 'asc'
}
},
{
sort: [
'starCount'
],
normal: {
starCount: 'asc'
}
},
{
sort: [
'starCount',
'name'
],
normal: {
starCount: 'asc',
name: 'asc'
}
},
{
sort: [
{ name: 'asc' }
],
normal: {
name: 'asc'
}
},
{
sort: [
{ starCount: 'desc' },
{ name: 'asc' }
],
normal: {
starCount: 'desc',
name: 'asc'
}
}
].forEach(function (test) {
it('reads ' + JSON.stringify(test.sort) + ' properly', function () {
source.sort(test.sort);
var normal = source.getNormalizedSort();

expect(normal).to.eql(test.normal);
});
});

});
});
1 change: 0 additions & 1 deletion test/unit/specs/directives/css_truncate.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
define(function (require) {
var angular = require('angular');
var mocks = require('angular-mocks');
var $ = require('jquery');

// Load the kibana app dependencies.
Expand Down
1 change: 0 additions & 1 deletion test/unit/specs/directives/spinner.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
define(function (require) {
var angular = require('angular');
var mocks = require('angular-mocks');
var $ = require('jquery');

// Load the kibana app dependencies.
Expand Down
1 change: 0 additions & 1 deletion test/unit/specs/directives/timepicker.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
define(function (require) {
var angular = require('angular');
var mocks = require('angular-mocks');
var moment = require('moment');
var _ = require('lodash');
var $ = require('jquery');
Expand Down
1 change: 0 additions & 1 deletion test/unit/specs/directives/truncate.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
define(function (require) {
var angular = require('angular');
var mocks = require('angular-mocks');
var $ = require('jquery');

// Load the kibana app dependencies.
Expand Down
1 change: 0 additions & 1 deletion test/unit/specs/filters/field_type.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
define(function (require) {
var angular = require('angular');
var mocks = require('angular-mocks');
var _ = require('lodash');

// Load the kibana app dependencies.
Expand Down
1 change: 0 additions & 1 deletion test/unit/specs/filters/moment.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
define(function (require) {
var angular = require('angular');
var mocks = require('angular-mocks');
var sinon = require('sinon/sinon');
var moment = require('moment');

Expand Down
1 change: 0 additions & 1 deletion test/unit/specs/filters/start_from.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
define(function (require) {
var angular = require('angular');
var mocks = require('angular-mocks');

// Load the kibana app dependencies.
require('angular-route');
Expand Down
1 change: 0 additions & 1 deletion test/unit/specs/filters/uriescape.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
define(function (require) {
var angular = require('angular');
var mocks = require('angular-mocks');
var _ = require('lodash');

// Load the kibana app dependencies.
Expand Down

0 comments on commit 6b149b2

Please sign in to comment.