myems/admin/js/plugins/nggrid/test/unit/servicesSpec.js

210 lines
9.3 KiB
Python

'use strict';
/* jasmine specs for services go here */
describe('Dom Utility Service', function () {
var $dUtils;
var $scope;
var $linker;
var $cache;
beforeEach(module('ngGrid'));
beforeEach(inject(function ($rootScope, $domUtilityService, $templateCache, $compile) {
$scope = $rootScope.$new();
$dUtils = $domUtilityService;
$linker = $compile;
$cache = $templateCache;
}));
// AssignGridContainers
describe('AssignGridContainers', function () {
it('should should find the correct elements and assign them in the grid properly', function () {
var domsizesCalled;
var grid = {
elementDims: {},
refreshDomSizes: function () {
domsizesCalled = true;
}
};
$scope.adjustScrollTop = function(top) {
expect(top).toEqual(grid.$canvas.scrollTop());
};
var root = angular.element('<div class="ng-scope ngGrid"></div>');
root.append(angular.element($cache.get('gridTemplate.html')));
$dUtils.AssignGridContainers($scope, root, grid);
expect(grid.$root.is(".ngGrid")).toEqual(true);
expect(grid.$root.length).toEqual(1);
expect(grid.$topPanel.is(".ngTopPanel")).toEqual(true);
expect(grid.$topPanel.length).toEqual(1);
expect(grid.$groupPanel.is(".ngGroupPanel")).toEqual(true);
expect(grid.$groupPanel.length).toEqual(1);
expect(grid.$headerContainer.is(".ngHeaderContainer")).toEqual(true);
expect(grid.$headerContainer.length).toEqual(1);
expect(grid.$headerScroller.is(".ngHeaderScroller")).toEqual(true);
expect(grid.$headerScroller.length).toEqual(1);
expect(grid.$viewport.is(".ngViewport")).toEqual(true);
expect(grid.$viewport.length).toEqual(1);
expect(grid.$canvas.is(".ngCanvas")).toEqual(true);
expect(grid.$canvas.length).toEqual(1);
expect(grid.$footerPanel.is(".ngFooterPanel")).toEqual(true);
expect(grid.$footerPanel.length).toEqual(1);
expect(grid.elementDims.rootMaxH).toEqual(grid.$root.height());
expect(domsizesCalled).toEqual(true);
});
});
// BuildStyles
describe('BuildStyles', function () {
it('should set the $styleSheet object of the grid to be a stylesheet object with CSS', function () {
var domsizesCalled;
var scrollLeftCalled;
var scrollTopCalled;
$scope.columns = [
{ visible: true, pinned: false, width: 100, },
{ visible: true, pinned: false, width: 100, },
{ visible: true, pinned: false, width: 100, },
{ visible: true, pinned: false, width: 100, }];
$scope.totalRowWidth = function() {
return 400;
};
$scope.adjustScrollLeft = function () {
scrollLeftCalled = true;
};
$scope.adjustScrollTop = function () {
scrollTopCalled = true;
};
var root = angular.element('<div class="ng-scope ngGrid"></div>');
root.append(angular.element($cache.get('gridTemplate.html')));
var grid = {
config: {
rowHeight: 30
},
gridId: 1,
elementDims: {},
refreshDomSizes: function () {
domsizesCalled = true;
}
};
$dUtils.AssignGridContainers($scope, root, grid);
$dUtils.BuildStyles($scope, grid, true);
var temp = grid.$styleSheet.html();
expect(domsizesCalled).toEqual(true);
expect(scrollLeftCalled).toEqual(true);
expect(scrollTopCalled).toEqual(true);
expect(temp).toEqual(".1 .ngCanvas { width: 400px; }.1 .ngRow { width: 400px; }.1 .ngCanvas { width: 400px; }.1 .ngHeaderScroller { width: 419px}.1 .col0 { width: 100px; left: 0px; height: 30px }.1 .colt0 { width: 100px; }.1 .col1 { width: 100px; left: 100px; height: 30px }.1 .colt1 { width: 100px; }.1 .col2 { width: 100px; left: 200px; height: 30px }.1 .colt2 { width: 100px; }.1 .col3 { width: 100px; left: 300px; height: 30px }.1 .colt3 { width: 100px; }")
});
});
// setColLeft
describe('setColLeft', function () {
it('should set the left positioning of the specified column to the given integer', function () {
$scope.columns = [
{ visible: true, pinned: false, width: 100, index: 0 },
{ visible: true, pinned: false, width: 100, index: 1 },
{ visible: true, pinned: false, width: 100, index: 2 },
{ visible: true, pinned: false, width: 100, index: 3 }];
$scope.totalRowWidth = function () {return 400;};
$scope.adjustScrollLeft = function () {};
$scope.adjustScrollTop = function () {};
var root = angular.element('<div class="ng-scope ngGrid"></div>');
root.append(angular.element($cache.get('gridTemplate.html')));
var grid = {
config: {
rowHeight: 30
},
gridId: 1,
elementDims: {},
refreshDomSizes: function () {}
};
$dUtils.AssignGridContainers($scope, root, grid);
$dUtils.BuildStyles($scope, grid, true);
$dUtils.setColLeft($scope.columns[0], 300, grid);
var temp = grid.$styleSheet.html();
expect(temp).toEqual(".1 .ngCanvas { width: 400px; }.1 .ngRow { width: 400px; }.1 .ngCanvas { width: 400px; }.1 .ngHeaderScroller { width: 419px}.1 .col0 { width: 100px; left: 300px; height: 30px }.1 .colt0 { width: 100px; }.1 .col1 { width: 100px; left: 100px; height: 30px }.1 .colt1 { width: 100px; }.1 .col2 { width: 100px; left: 200px; height: 30px }.1 .colt2 { width: 100px; }.1 .col3 { width: 100px; left: 300px; height: 30px }.1 .colt3 { width: 100px; }")
});
});
});
describe('Sort Service', function () {
var $sort;
beforeEach(module('ngGrid'));
beforeEach(inject(function ($sortService) {
$sort = $sortService;
}));
});
describe('Utility Service', function () {
var $utils;
beforeEach(module('ngGrid'));
beforeEach(inject(function ($utilityService) {
$utils = $utilityService;
}));
// evalProperty
describe('evalProperty should find the right property given a heirarchy.', function () {
// foundme
it('returns foundme', function() {
var obj = { foo: { bar: { hello: { world: "foundme" } } } };
expect($utils.evalProperty(obj, "foo.bar.hello.world")).toEqual("foundme");
});
// undefined
it('returns undefined', function () {
var obj = { foo: { bar: { hello: { world: "foundme" } } } };
expect($utils.evalProperty(obj, "foo.bar.omg")).toEqual(undefined);
});
});
// visualLength
describe('visualLength should return the correct visual length of text.', function () {
it('returns integer', function() {
var node = angular.element('<div style="width: 30px;">The quick brown fox jumped over the lazy dog.</div>');
expect($utils.visualLength(node)).toEqual(286);
});
});
// forIn
describe('forIn should execute the function for each key in an object.', function() {
it('executes some code', function () {
var obj = {
foo: "foo",
bar: "bar",
hello: "hello",
world: "world"
};
$utils.forIn(obj, function (val, key) {
obj[key] = "foundme";
});
expect(obj.foo).toEqual("foundme");
expect(obj.bar).toEqual("foundme");
expect(obj.hello).toEqual("foundme");
expect(obj.world).toEqual("foundme");
});
});
// endsWith
describe('endsWith should return true or false based on the last character in a string', function () {
var str = "Peter Piper picked a peck of pickeled peppers";
it('returns true', function() {
expect($utils.endsWith(str, "peppers")).toEqual(true);
});
it('returns false', function () {
expect($utils.endsWith(str, "peter")).toEqual(false);
});
});
// isNullOrUndefined
describe('isNullOrUndefined return true or false based on wherer or not a given reference is explucitly null or undefined', function () {
it('returns true', function () {
var hello;
expect($utils.isNullOrUndefined(hello)).toEqual(true);
var hello = null;
expect($utils.isNullOrUndefined(hello)).toEqual(true);
var hello = undefined;
expect($utils.isNullOrUndefined(hello)).toEqual(true);
expect($utils.isNullOrUndefined(null)).toEqual(true);
expect($utils.isNullOrUndefined(undefined)).toEqual(true);
});
it('returns false', function () {
expect($utils.isNullOrUndefined("foundme")).toEqual(false);
expect($utils.isNullOrUndefined("")).toEqual(false);
expect($utils.isNullOrUndefined(0)).toEqual(false);
});
});
});