109 lines
3.9 KiB
JavaScript
109 lines
3.9 KiB
JavaScript
|
import './index';
|
||
|
|
||
|
describe('component vnTravelSummary', () => {
|
||
|
let controller;
|
||
|
let $httpBackend;
|
||
|
let $scope;
|
||
|
let $element;
|
||
|
let $httpParamSerializer;
|
||
|
|
||
|
beforeEach(angular.mock.module('travel', $translateProvider => {
|
||
|
$translateProvider.translations('en', {});
|
||
|
}));
|
||
|
|
||
|
beforeEach(angular.mock.inject(($componentController, $rootScope, _$httpBackend_, _$httpParamSerializer_) => {
|
||
|
$httpBackend = _$httpBackend_;
|
||
|
$httpParamSerializer = _$httpParamSerializer_;
|
||
|
$scope = $rootScope.$new();
|
||
|
$element = angular.element(`<vn-travel-summary></vn-travel-summary>`);
|
||
|
controller = $componentController('vnTravelSummary', {$element, $scope});
|
||
|
}));
|
||
|
|
||
|
describe('travel setter/getter', () => {
|
||
|
it('should return the travel', () => {
|
||
|
controller.travel = {id: null};
|
||
|
|
||
|
expect(controller.travel).toEqual(jasmine.any(Object));
|
||
|
});
|
||
|
|
||
|
it('should return the travel and then call both getTravel() and getEntries()', () => {
|
||
|
spyOn(controller, 'getTravel');
|
||
|
spyOn(controller, 'getEntries');
|
||
|
spyOn(controller, 'getThermographs');
|
||
|
controller.travel = {id: 99};
|
||
|
|
||
|
|
||
|
expect(controller._travel.id).toEqual(99);
|
||
|
expect(controller.getTravel).toHaveBeenCalledWith();
|
||
|
expect(controller.getEntries).toHaveBeenCalledWith();
|
||
|
expect(controller.getThermographs).toHaveBeenCalledWith();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('getTravel()', () => {
|
||
|
it('should perform a get and then store data on the controller', () => {
|
||
|
controller._travel = {id: 999};
|
||
|
|
||
|
const query = `/api/Travels/${controller._travel.id}/getTravel`;
|
||
|
$httpBackend.expectGET(query).respond('I am the travelData');
|
||
|
controller.getTravel();
|
||
|
$httpBackend.flush();
|
||
|
|
||
|
expect(controller.travelData).toEqual('I am the travelData');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('getEntries()', () => {
|
||
|
it('should call the getEntries method to get the entries data', () => {
|
||
|
controller._travel = {id: 999};
|
||
|
|
||
|
const query = `/api/Travels/${controller._travel.id}/getEntries`;
|
||
|
$httpBackend.expectGET(query).respond('I am the entries');
|
||
|
controller.getEntries();
|
||
|
$httpBackend.flush();
|
||
|
|
||
|
expect(controller.entries).toEqual('I am the entries');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('getThermographs()', () => {
|
||
|
it('should call the getThermographs method to get the thermographs', () => {
|
||
|
controller._travel = {id: 2};
|
||
|
const params = {
|
||
|
filter: {
|
||
|
include: {
|
||
|
relation: 'warehouse',
|
||
|
scope: {
|
||
|
fields: ['id', 'name']
|
||
|
}
|
||
|
},
|
||
|
where: {
|
||
|
travelFk: controller._travel.id
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
const serializedParams = $httpParamSerializer(params);
|
||
|
const query = `TravelThermographs?${serializedParams}`;
|
||
|
$httpBackend.expectGET(query).respond('I am the thermographs');
|
||
|
controller.getThermographs();
|
||
|
$httpBackend.flush();
|
||
|
|
||
|
expect(controller.travelThermographs).toEqual('I am the thermographs');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('total()', () => {
|
||
|
it('should calculate the total amount of a given property for every row', () => {
|
||
|
controller.entries = [
|
||
|
{id: 1, freightValue: 1, packageValue: 2, cc: 0.01},
|
||
|
{id: 2, freightValue: 1, packageValue: 2, cc: 0.01},
|
||
|
{id: 3, freightValue: 1, packageValue: 2, cc: 0.01}
|
||
|
];
|
||
|
|
||
|
expect(controller.total('freightValue')).toEqual(3);
|
||
|
expect(controller.total('packageValue')).toEqual(6);
|
||
|
expect(controller.total('cc')).toEqual(0.03);
|
||
|
});
|
||
|
});
|
||
|
});
|