2020-08-25 08:22:57 +00:00
|
|
|
import './index.js';
|
|
|
|
import crudModel from 'core/mocks/crud-model';
|
|
|
|
|
|
|
|
describe('Component vnRouteIndex', () => {
|
|
|
|
let controller;
|
2020-12-21 13:48:47 +00:00
|
|
|
let $httpBackend;
|
2020-08-25 08:22:57 +00:00
|
|
|
|
|
|
|
beforeEach(ngModule('route'));
|
|
|
|
|
2020-12-21 13:48:47 +00:00
|
|
|
beforeEach(inject(($componentController, _$httpBackend_) => {
|
|
|
|
$httpBackend = _$httpBackend_;
|
2020-08-25 08:22:57 +00:00
|
|
|
const $element = angular.element('<vn-route-index></vn-route-index>');
|
|
|
|
controller = $componentController('vnRouteIndex', {$element});
|
|
|
|
controller.$.model = crudModel;
|
|
|
|
controller.$.model.data = [{id: 1}, {id: 2}, {id: 3}];
|
|
|
|
}));
|
|
|
|
|
|
|
|
describe('checked() getter', () => {
|
2020-08-25 12:10:38 +00:00
|
|
|
it('should return the checked lines', () => {
|
2020-08-25 08:22:57 +00:00
|
|
|
const data = controller.$.model.data;
|
|
|
|
data[0].checked = true;
|
|
|
|
data[2].checked = true;
|
|
|
|
|
|
|
|
const checkedRows = controller.checked;
|
|
|
|
|
|
|
|
const firstCheckedRow = checkedRows[0];
|
|
|
|
const secondCheckedRow = checkedRows[1];
|
|
|
|
|
|
|
|
expect(firstCheckedRow.id).toEqual(1);
|
|
|
|
expect(secondCheckedRow.id).toEqual(3);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('totalCheked() getter', () => {
|
2020-08-25 12:10:38 +00:00
|
|
|
it('should return the total checked lines', () => {
|
2020-08-25 08:22:57 +00:00
|
|
|
const data = controller.$.model.data;
|
|
|
|
data[0].checked = true;
|
|
|
|
|
|
|
|
const checkedRows = controller.totalChecked;
|
|
|
|
|
|
|
|
expect(checkedRows).toEqual(1);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('showRouteReport()', () => {
|
|
|
|
it('should call to the vnReport show method', () => {
|
|
|
|
controller.vnReport.show = jest.fn();
|
|
|
|
|
|
|
|
const data = controller.$.model.data;
|
|
|
|
data[0].checked = true;
|
|
|
|
data[2].checked = true;
|
|
|
|
const expectedParams = {
|
|
|
|
authorization: null,
|
|
|
|
routeId: '1,3'
|
|
|
|
};
|
|
|
|
|
|
|
|
controller.showRouteReport();
|
|
|
|
|
|
|
|
expect(controller.vnReport.show).toHaveBeenCalledWith('driver-route', expectedParams);
|
|
|
|
});
|
|
|
|
});
|
2020-12-21 13:48:47 +00:00
|
|
|
|
2020-12-24 10:31:20 +00:00
|
|
|
describe('cloneSelectedRoutes()', () => {
|
|
|
|
it('should perform an http request to Routes/clone', () => {
|
2021-03-30 07:55:51 +00:00
|
|
|
controller.createdDate = new Date();
|
2020-12-24 10:31:20 +00:00
|
|
|
|
|
|
|
$httpBackend.expect('POST', 'Routes/clone').respond();
|
|
|
|
controller.cloneSelectedRoutes();
|
|
|
|
$httpBackend.flush();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2020-12-21 13:48:47 +00:00
|
|
|
describe('onDrop()', () => {
|
|
|
|
it('should call the insert method when dragging a ticket number', () => {
|
|
|
|
jest.spyOn(controller, 'insert');
|
|
|
|
|
|
|
|
const routeId = '1';
|
|
|
|
const expectedTicketId = '16';
|
|
|
|
const draggedElement = '16';
|
|
|
|
const droppable = document.createElement('a');
|
|
|
|
droppable.setAttribute('id', 1);
|
|
|
|
droppable.classList.add('vn-tr');
|
|
|
|
|
|
|
|
const $event = {
|
|
|
|
dataTransfer: {
|
|
|
|
getData: () => draggedElement
|
|
|
|
},
|
|
|
|
target: droppable
|
|
|
|
};
|
|
|
|
controller.onDrop($event);
|
|
|
|
|
|
|
|
expect(controller.insert).toHaveBeenCalledWith(routeId, expectedTicketId);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should call the insert method when dragging a ticket link', () => {
|
|
|
|
jest.spyOn(controller, 'insert');
|
|
|
|
|
|
|
|
const routeId = '1';
|
|
|
|
const expectedTicketId = '11';
|
|
|
|
const draggedElement = 'http://arkamcity.com/#!/ticket/11/summary';
|
|
|
|
const droppable = document.createElement('a');
|
|
|
|
droppable.setAttribute('id', 1);
|
|
|
|
droppable.classList.add('vn-tr');
|
|
|
|
|
|
|
|
const $event = {
|
|
|
|
dataTransfer: {
|
|
|
|
getData: () => draggedElement
|
|
|
|
},
|
|
|
|
target: droppable
|
|
|
|
};
|
|
|
|
controller.onDrop($event);
|
|
|
|
|
|
|
|
expect(controller.insert).toHaveBeenCalledWith(routeId, expectedTicketId);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should throw an error when dragging an invalid ticket link', () => {
|
|
|
|
jest.spyOn(controller.vnApp, 'showError');
|
|
|
|
|
|
|
|
const draggedElement = 'http://arkamcity.com/#!/item/11/summary';
|
|
|
|
const droppable = document.createElement('a');
|
|
|
|
droppable.setAttribute('id', 1);
|
|
|
|
droppable.classList.add('vn-tr');
|
|
|
|
const $event = {
|
|
|
|
dataTransfer: {
|
|
|
|
getData: () => draggedElement
|
|
|
|
},
|
|
|
|
target: droppable
|
|
|
|
};
|
|
|
|
controller.onDrop($event);
|
|
|
|
|
|
|
|
expect(controller.vnApp.showError).toHaveBeenCalledWith('Ticket not found');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('insert()', () => {
|
2021-06-24 07:54:07 +00:00
|
|
|
it('should perform a HTTP patch query and then call both refresh and showSuccess methods', () => {
|
2020-12-21 13:48:47 +00:00
|
|
|
jest.spyOn(controller.$.model, 'refresh').mockReturnThis();
|
|
|
|
jest.spyOn(controller.vnApp, 'showSuccess');
|
|
|
|
|
|
|
|
const routeId = 1;
|
|
|
|
const ticketId = 11;
|
|
|
|
const data = {ticketId};
|
|
|
|
$httpBackend.expect('PATCH', `Routes/1/insertTicket`, data).respond();
|
|
|
|
controller.insert(routeId, ticketId);
|
|
|
|
$httpBackend.flush();
|
|
|
|
|
|
|
|
expect(controller.vnApp.showSuccess).toHaveBeenCalled();
|
|
|
|
expect(controller.$.model.refresh).toHaveBeenCalledWith();
|
|
|
|
});
|
|
|
|
});
|
2020-08-25 08:22:57 +00:00
|
|
|
});
|