blob: 8dce4f918b6d398da58ba8ae981a250499689fba [file] [log] [blame]
/**
* © OpenCORD
*
* Created by teone on 3/24/16.
*/
(function () {
'use strict';
let mockData;
describe('The xos.helper module', function(){
describe('The xos-smart-pie component', () => {
var spy, scope, isolatedScope, element;
beforeEach(module('xos.helpers'));
beforeEach(function() {
// set mockData
mockData = [
{
id: 1,
first_name: 'Jon',
last_name: 'Snow',
category: 1
},
{
id: 2,
first_name: 'Danaerys',
last_name: 'Targaryen',
category: 2
},
{
id: 3,
first_name: 'Aria',
last_name: 'Stark',
category: 1
}
]
});
// mock the service
beforeEach(function(){
module(function($provide){
$provide.service('MockResource', function(){
return {
query: ''
}
});
});
})
beforeEach(inject(function ($compile, $rootScope, $q, MockResource) {
scope = $rootScope.$new();
scope.config = {
resource: 'MockResource',
groupBy: 'category',
classes: 'my-test-class'
};
spy = MockResource;
spyOn(MockResource, 'query').and.callFake(function() {
var deferred = $q.defer();
deferred.resolve(mockData);
return {$promise: deferred.promise};
});
element = angular.element('<xos-smart-pie config="config"></xos-smart-pie>');
$compile(element)(scope);
scope.$digest();
isolatedScope = element.isolateScope().vm;
}));
it('should attach provided classes', () => {
expect($(element).find('canvas')).toHaveClass('my-test-class');
});
it('should group elements', () => {
let groupedData = [2, 1];
expect(spy.query).toHaveBeenCalled();
expect(isolatedScope.data).toEqual(groupedData);
});
describe('when a labelFormatter function is provided', () => {
beforeEach(inject(function ($compile, $rootScope){
scope = $rootScope.$new();
scope.config = {
resource: 'MockResource',
groupBy: 'category',
classes: 'label-formatter-test',
labelFormatter: (labels) => {
return labels.map(l => l === '1' ? 'First' : 'Second');
}
};
element = angular.element('<xos-smart-pie config="config"></xos-smart-pie>');
$compile(element)(scope);
scope.$digest();
isolatedScope = element.isolateScope().vm;
}));
it('should format labels', () => {
expect(isolatedScope.labels).toEqual(['First', 'Second'])
});
});
describe('when polling is enabled', () => {
beforeEach(inject(function ($compile, $rootScope){
scope = $rootScope.$new();
scope.config = {
resource: 'MockResource',
groupBy: 'category',
classes: 'label-formatter-test',
poll: 2
};
element = angular.element('<xos-smart-pie config="config"></xos-smart-pie>');
$compile(element)(scope);
scope.$digest();
isolatedScope = element.isolateScope().vm;
}));
it('should call the backend every 2 second', () => {
expect(spy.query).toHaveBeenCalled();
// $interval
});
});
});
});
})();