Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into 2092-ticket_isEditable_refactor

This commit is contained in:
Bernat Exposito Domenech 2020-03-02 09:28:43 +01:00
commit bd46f6a302
117 changed files with 660 additions and 393 deletions

View File

@ -32,3 +32,5 @@ rules:
indent: [error, 4]
arrow-parens: [error, as-needed]
jasmine/no-focused-tests: 0
no-multiple-empty-lines: ["error", { "max": 1, "maxEOF": 1 }]
space-in-parens: ["error", "never"]

View File

@ -24,8 +24,14 @@ module.exports = Self => {
});
Self.sendCheckingPresence = async(ctx, workerId, message) => {
if (!workerId) return false;
const models = Self.app.models;
const account = await models.Account.findById(workerId);
const userId = ctx.req.accessToken.userId;
if (!account)
throw new Error(`Could not send message "${message}" to worker id ${workerId} from user ${userId}`);
const query = `SELECT worker_isWorking(?) isWorking`;
const [result] = await Self.rawSql(query, [workerId]);
@ -37,7 +43,7 @@ module.exports = Self => {
}
});
const department = workerDepartment && workerDepartment.department();
const channelName = department.chatName;
const channelName = department && department.chatName;
if (channelName)
return Self.send(ctx, `#${channelName}`, `@${account.name} => ${message}`);

View File

@ -0,0 +1,6 @@
ALTER TABLE `vn`.`sample`
ADD COLUMN `hasPreview` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' AFTER `hasCompany`,
CHANGE COLUMN `isVisible` `isVisible` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' ,
CHANGE COLUMN `hasCompany` `hasCompany` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' ;
UPDATE `vn`.`sample` SET `hasPreview` = '0' WHERE (`id` = '14');

View File

@ -511,14 +511,16 @@ export default {
},
ticketRequests: {
addRequestButton: 'vn-ticket-request-index > a > vn-float-button > button',
request: 'vn-ticket-request-index vn-table vn-tr',
descriptionInput: 'vn-ticket-request-create [ng-model="$ctrl.ticketRequest.description"]',
atender: 'vn-ticket-request-create vn-autocomplete[ng-model="$ctrl.ticketRequest.attenderFk"]',
quantity: 'vn-ticket-request-create vn-input-number[ng-model="$ctrl.ticketRequest.quantity"]',
price: 'vn-ticket-request-create vn-input-number[ng-model="$ctrl.ticketRequest.price"]',
firstRemoveRequestButton: 'vn-ticket-request-index vn-icon[icon="delete"]:nth-child(1)',
firstRequestQuantity: 'vn-ticket-request-index vn-table vn-tr:nth-child(1) > vn-td:nth-child(6) vn-input-number',
secondRequestQuantity: 'vn-ticket-request-index vn-table vn-tr:nth-child(2) > vn-td:nth-child(6) vn-input-number',
thirdDescription: 'vn-ticket-request-index vn-table vn-tr:nth-child(3) > vn-td:nth-child(2) vn-textfield',
thirdRemoveRequestButton: 'vn-ticket-request-index vn-tr:nth-child(3) vn-icon[icon="delete"]',
thirdRequestQuantity: 'vn-ticket-request-index vn-table vn-tr:nth-child(3) > vn-td:nth-child(6) vn-input-number',
saveButton: 'vn-ticket-request-create button[type=submit]',
firstDescription: 'vn-ticket-request-index vn-table vn-tr:nth-child(1) > vn-td:nth-child(2) vn-textfield',
},
ticketLog: {

View File

@ -70,13 +70,13 @@ describe('Client Add address path', () => {
});
it(`should confirm the new address exists and it's the default one`, async() => {
await page.waitFor(2000); // needs more than a single second to load the section
const result = await page.waitToGetProperty(selectors.clientAddresses.defaultAddress, 'innerText');
expect(result).toContain('320 Park Avenue New York');
});
it(`should click on the make default icon of the second address`, async() => {
await page.waitForContentLoaded();
it('should click on the make default icon of the second address', async() => {
await page.waitToClick(selectors.clientAddresses.secondMakeDefaultStar);
const result = await page.waitForLastSnackbar();

View File

@ -9,7 +9,7 @@ describe('Ticket purchase request path', () => {
browser = await getBrowser();
page = browser.page;
await page.loginAndModule('salesPerson', 'ticket');
await page.accessToSearchResult('16');
await page.accessToSearchResult('1');
await page.accessToSection('ticket.card.request.index');
});
@ -17,10 +17,10 @@ describe('Ticket purchase request path', () => {
await browser.close();
});
it(`should add a new request`, async() => {
it('should add a new request', async() => {
await page.waitToClick(selectors.ticketRequests.addRequestButton);
await page.write(selectors.ticketRequests.descriptionInput, 'New stuff');
await page.write(selectors.ticketRequests.quantity, '99');
await page.write(selectors.ticketRequests.quantity, '9');
await page.autocompleteSearch(selectors.ticketRequests.atender, 'buyerNick');
await page.write(selectors.ticketRequests.price, '999');
await page.waitToClick(selectors.ticketRequests.saveButton);
@ -29,29 +29,52 @@ describe('Ticket purchase request path', () => {
expect(result).toEqual('Data saved!');
});
it(`should have been redirected to the request index`, async() => {
it('should have been redirected to the request index', async() => {
let url = await page.expectURL('/request');
expect(url).toBe(true);
});
it(`should confirm the new request was added`, async() => {
await page.reloadSection('ticket.card.request.index');
const result = await page.waitToGetProperty(selectors.ticketRequests.firstDescription, 'value');
expect(result).toEqual('New stuff');
});
it(`should delete the added request`, async() => {
await page.waitToClick(selectors.ticketRequests.firstRemoveRequestButton);
it(`should edit the third request quantity as it's state is still new`, async() => {
await page.waitFor(2000); // looks like it needs more than a single second some times to load
await page.write(selectors.ticketRequests.thirdRequestQuantity, '9');
await page.keyboard.press('Enter');
const result = await page.waitForLastSnackbar();
expect(result).toEqual('Data saved!');
});
it(`should confirm the request was deleted`, async() => {
it('should confirm the new request was added', async() => {
await page.reloadSection('ticket.card.request.index');
const result = await page.waitToGetProperty(selectors.ticketRequests.thirdRequestQuantity, 'value');
expect(result).toEqual('99');
});
it(`should confirm first request can't be edited as its state is different to new`, async() => {
await page.waitForClassPresent(selectors.ticketRequests.firstRequestQuantity, 'disabled');
const result = await page.isDisabled(selectors.ticketRequests.firstRequestQuantity);
expect(result).toBe(true);
});
it(`should confirm second request can't be edited as its state is different to new`, async() => {
await page.waitForClassPresent(selectors.ticketRequests.secondRequestQuantity, 'disabled');
const result = await page.isDisabled(selectors.ticketRequests.secondRequestQuantity);
expect(result).toBe(true);
});
it('should delete the added request', async() => {
await page.waitToClick(selectors.ticketRequests.thirdRemoveRequestButton);
const result = await page.waitForLastSnackbar();
expect(result).toEqual('Data saved!');
});
it('should confirm the request was deleted', async() => {
await page.reloadSection('ticket.card.request.index');
await page.wait(selectors.ticketRequests.addRequestButton);
await page.waitForSelector(selectors.ticketRequests.request, {hidden: true});
await page.waitForSelector(selectors.ticketRequests.thirdDescription, {hidden: true});
});
});

View File

@ -16,7 +16,7 @@ describe('Component vnButtonMenu', () => {
describe('onButtonClick(event)', () => {
it(`should emit the open event`, () => {
spyOn(controller, 'emit');
jest.spyOn(controller, 'emit');
let event = new MouseEvent('click', {
view: controller.element.window,
@ -31,7 +31,7 @@ describe('Component vnButtonMenu', () => {
describe('onDropDownSelect(value)', () => {
it(`should set field to the given value and emit the change event`, () => {
spyOn(controller, 'emit');
jest.spyOn(controller, 'emit');
controller.onDropDownSelect({name: 'Item name'});
expect(controller.field).toBe('Item name');

View File

@ -23,7 +23,7 @@
<section
ng-repeat="day in ::$ctrl.weekDays"
translate-attr="::{title: day.name}"
ng-click="$ctrl.selectWeekDay(day.index)">
ng-click="$ctrl.selectWeekDay($event, day.index)">
<span>{{::day.localeChar}}</span>
</section>
</div>
@ -38,7 +38,7 @@
on-last="$ctrl.repeatLast()">
<div
class="day-number"
ng-click="$ctrl.select(day)">
ng-click="$ctrl.select($event, day)">
{{::day | date: 'd'}}
</div>
</section>

View File

@ -127,10 +127,11 @@ export default class Calendar extends FormInput {
/*
* Day selection event
*/
select(day) {
select($event, day) {
if (!this.editable) return;
this.change(day);
this.emit('selection', {
$event: $event,
$days: [day],
$type: 'day'
});
@ -140,7 +141,7 @@ export default class Calendar extends FormInput {
/*
* WeekDay selection event
*/
selectWeekDay(weekday) {
selectWeekDay($event, weekday) {
if (!this.editable) return;
let days = [];
for (let day of this.days) {
@ -149,6 +150,7 @@ export default class Calendar extends FormInput {
}
this.field = days[0];
this.emit('selection', {
$event: $event,
$days: days,
$type: 'weekday',
$weekday: weekday

View File

@ -20,7 +20,7 @@ describe('Component vnCalendar', () => {
describe('moveNext()', () => {
it(`should shift to the next month, then emit a 'move' event`, () => {
spyOn(controller, 'emit');
jest.spyOn(controller, 'emit');
let nextMonth = new Date(date.getTime());
nextMonth.setMonth(nextMonth.getMonth() + 1);
@ -33,7 +33,7 @@ describe('Component vnCalendar', () => {
describe('movePrevious()', () => {
it(`should shift to the previous month, then emit a 'move' event`, () => {
spyOn(controller, 'emit');
jest.spyOn(controller, 'emit');
let previousMonth = new Date(date.getTime());
previousMonth.setMonth(previousMonth.getMonth() - 1);
@ -46,13 +46,19 @@ describe('Component vnCalendar', () => {
describe('select()', () => {
it(`should return the selected element, then emit a 'selection' event`, () => {
spyOn(controller, 'emit');
jest.spyOn(controller, 'emit');
const day = new Date();
day.setHours(0, 0, 0, 0);
controller.select(day);
const clickEvent = new Event('click');
const target = document.createElement('div');
target.dispatchEvent(clickEvent);
controller.select(clickEvent, day);
let res = {
$event: clickEvent,
$days: [day],
$type: 'day'
};

View File

@ -17,7 +17,7 @@ describe('Component vnChip', () => {
describe('onRemove()', () => {
it(`should emit remove event`, () => {
controller.emit = () => {};
spyOn(controller, 'emit');
jest.spyOn(controller, 'emit');
controller.onRemove();
expect(controller.emit).toHaveBeenCalledWith('remove');

View File

@ -25,8 +25,8 @@ describe('Component vnCrudModel', () => {
});
describe('save()', () => {
it('should make an HTTP post query and then update the original rows with the returned values', () => {
spyOn(controller, 'applyChanges');
it(`should make an HTTP post query and then update the original rows with the returned values`, () => {
jest.spyOn(controller, 'applyChanges');
controller.insert({value: 'My new item 1'});
controller.insert({value: 'My new item 2'});

View File

@ -30,7 +30,7 @@ describe('Component vnDialog', () => {
it(`should not hide the dialog when false is returned from response handler`, () => {
controller.show(() => false);
spyOn(controller, 'hide');
jest.spyOn(controller, 'hide');
controller.respond('answer');
expect(controller.hide).not.toHaveBeenCalled();
@ -51,7 +51,7 @@ describe('Component vnDialog', () => {
describe('respond()', () => {
it(`should do nothing if dialog is already hidden`, () => {
controller.onResponse = () => {};
spyOn(controller, 'onResponse');
jest.spyOn(controller, 'onResponse');
controller.respond();
expect(controller.onResponse).not.toHaveBeenCalledWith();
@ -59,7 +59,7 @@ describe('Component vnDialog', () => {
it(`should call onResponse() if it's defined`, () => {
controller.onResponse = () => {};
spyOn(controller, 'onResponse');
jest.spyOn(controller, 'onResponse');
controller.show();
controller.respond();
@ -69,7 +69,7 @@ describe('Component vnDialog', () => {
it(`should call onResponse() with the response`, () => {
controller.onResponse = () => {};
spyOn(controller, 'onResponse');
jest.spyOn(controller, 'onResponse');
controller.show();
controller.respond('response');
@ -79,7 +79,7 @@ describe('Component vnDialog', () => {
it(`should call onAccept() when accept response is given`, () => {
controller.onAccept = () => {};
spyOn(controller, 'onAccept');
jest.spyOn(controller, 'onAccept');
controller.show();
controller.respond('accept');

View File

@ -20,7 +20,7 @@ describe('Component vnMultiCheck', () => {
describe('checked() setter', () => {
it(`should set controller _checked property with the argument received then call toggle()`, () => {
spyOn(controller, 'toggle');
jest.spyOn(controller, 'toggle');
controller.checked = crudModel;
expect(controller._checked).toEqual(crudModel);

View File

@ -37,6 +37,22 @@ export default class Popover extends Popup {
super.hide();
}
get parent() {
return this.__parent;
}
// Bug #2147 Popover loses parent location
set parent(value) {
this.__parent = value;
if (!value) return;
const parentRect = value.getBoundingClientRect();
this.parentRect = {};
for (let prop in parentRect)
this.parentRect[prop] = parentRect[prop];
}
/**
* Repositions the popover to a correct location relative to the parent.
*/
@ -55,7 +71,7 @@ export default class Popover extends Popup {
arrowStyle.top = '';
arrowStyle.bottom = '';
let parentRect = this.parent.getBoundingClientRect();
let parentRect = this.parentRect;
let popoverRect = this.windowEl.getBoundingClientRect();
let arrowRect = arrow.getBoundingClientRect();
let clamp = (value, min, max) => Math.min(Math.max(value, min), max);

View File

@ -22,7 +22,7 @@ describe('Component vnPopover', () => {
describe('show()', () => {
it(`should enable the shown property and emit the open event`, () => {
spyOn(controller, 'emit');
jest.spyOn(controller, 'emit');
controller.show();
expect(controller.shown).toBeTruthy();
@ -31,7 +31,7 @@ describe('Component vnPopover', () => {
it(`should do nothing if it's already shown`, () => {
controller.shown = true;
spyOn(controller, 'emit');
jest.spyOn(controller, 'emit');
controller.show();
expect(controller.emit).not.toHaveBeenCalledWith('open');
@ -65,7 +65,7 @@ describe('Component vnPopover', () => {
describe('hide()', () => {
it(`should disable the shown property and emit the close event`, inject($timeout => {
controller.show();
spyOn(controller, 'emit');
jest.spyOn(controller, 'emit');
controller.hide();
$timeout.flush();
@ -75,7 +75,7 @@ describe('Component vnPopover', () => {
it(`should do nothing if it's already hidden`, () => {
controller.shown = false;
spyOn(controller, 'emit');
jest.spyOn(controller, 'emit');
controller.hide();
expect(controller.emit).not.toHaveBeenCalledWith('close');

View File

@ -139,7 +139,7 @@ describe('Component vnSearchbar', () => {
describe('doSearch()', () => {
it(`should go to the search state and pass the filter as query param`, () => {
spyOn($state, 'go');
jest.spyOn($state, 'go');
controller.searchState = 'search.state';
controller.doSearch(filter);

View File

@ -17,14 +17,14 @@ describe('Component vnSpinner', () => {
describe('enable()', () => {
it(`should call start() when enable is set to true`, () => {
spyOn(controller, 'start');
jest.spyOn(controller, 'start');
controller.enable = true;
expect(controller.start).toHaveBeenCalledWith();
});
it(`should call stop() when enable is set to false`, () => {
spyOn(controller, 'stop');
jest.spyOn(controller, 'stop');
controller.enable = false;
expect(controller.stop).toHaveBeenCalledWith();

View File

@ -8,7 +8,7 @@ describe('Component vnStepControl', () => {
beforeEach(angular.mock.inject(($componentController, _$state_) => {
$state = _$state_;
spyOn($state, 'go');
jest.spyOn($state, 'go');
controller = $componentController('vnStepControl', {$state: $state});
}));

View File

@ -20,7 +20,7 @@ describe('Component vnTh', () => {
describe('onInit()', () => {
it(`should define controllers order as per defaultOrder then call setOrder()`, () => {
controller.defaultOrder = 'DESC';
spyOn(controller.table, 'setOrder');
jest.spyOn(controller.table, 'setOrder');
controller.$onInit();
expect(controller.order).toEqual('DESC');
@ -44,7 +44,7 @@ describe('Component vnTh', () => {
});
it(`should call the setOrder() function after changing a value`, () => {
spyOn(controller.table, 'setOrder');
jest.spyOn(controller.table, 'setOrder');
controller.order = 'Change me!';
expect(controller.table.setOrder).toHaveBeenCalledWith('MyField', 'Change me!');
@ -54,7 +54,7 @@ describe('Component vnTh', () => {
describe('onToggleOrder()', () => {
it(`should not call updateArrow() method if field property isn't defined`, () => {
controller.column.setAttribute('field', '');
spyOn(controller, 'updateArrow');
jest.spyOn(controller, 'updateArrow');
controller.onToggleOrder();
@ -64,8 +64,8 @@ describe('Component vnTh', () => {
it(`should call toggleOrder() method if field property and
table field property equals and then call updateArrow()`, () => {
controller.table.field = 'MyField';
spyOn(controller, 'toggleOrder');
spyOn(controller, 'updateArrow');
jest.spyOn(controller, 'toggleOrder');
jest.spyOn(controller, 'updateArrow');
controller.onToggleOrder();
@ -76,8 +76,8 @@ describe('Component vnTh', () => {
it(`should call setOrder() method if field property and
table field property doesn't equals and then call updateArrow()`, () => {
controller.table.field = 'MyField2';
spyOn(controller.table, 'setOrder');
spyOn(controller, 'updateArrow');
jest.spyOn(controller.table, 'setOrder');
jest.spyOn(controller, 'updateArrow');
controller.onToggleOrder();

View File

@ -37,7 +37,7 @@ describe('Component vnTreeview', () => {
xdescribe('undrop()', () => {
it(`should reset all drop events and properties`, () => {
controller.dropping = angular.element(`<vn-treeview-child class="dropping"></vn-treeview-child>`);
spyOn(controller.dropping.classList, 'remove');
jest.spyOn(controller.dropping.classList, 'remove');
controller.undrop();
@ -69,9 +69,7 @@ describe('Component vnTreeview', () => {
describe('fetch()', () => {
it(`should call the fetchFunc() method`, () => {
spyOn(controller, 'fetchFunc').and.returnValue(
new Promise(resolve => resolve([{name: 'My item'}]))
);
jest.spyOn(controller, 'fetchFunc');
controller.fetch().then(() => {
expect(controller.data).toBeDefined();
});
@ -82,7 +80,7 @@ describe('Component vnTreeview', () => {
describe('setParent()', () => {
it(`should set the parent property recursively to each element of an item list`, () => {
spyOn(controller, 'setParent').and.callThrough();
jest.spyOn(controller, 'setParent');
const items = [{name: 'Item1'}, {name: 'Item2', childs: [
{name: 'Item3'}
]}];
@ -97,8 +95,8 @@ describe('Component vnTreeview', () => {
describe('onToggle()', () => {
it(`should call the fold() or unfold() methods`, () => {
spyOn(controller, 'fold');
spyOn(controller, 'unfold');
jest.spyOn(controller, 'fold');
jest.spyOn(controller, 'unfold');
let event = new MouseEvent('click', {
bubbles: true,
@ -130,11 +128,9 @@ describe('Component vnTreeview', () => {
describe('unfold()', () => {
it(`should unfold a parent item`, () => {
const expectedResponse = [{name: 'Item 1'}, {name: 'Item 2'}];
spyOn(controller, 'fetchFunc').and.returnValue(
new Promise(resolve => resolve(expectedResponse))
);
spyOn(controller, 'setParent');
spyOn(controller, 'sortFunc');
jest.spyOn(controller, 'fetchFunc');
jest.spyOn(controller, 'setParent');
jest.spyOn(controller, 'sortFunc');
const parent = {name: 'My item', sons: 1};
const child = {name: 'Item 1'};
child.parent = parent;
@ -157,7 +153,7 @@ describe('Component vnTreeview', () => {
view: window
});
spyOn(controller, 'removeFunc');
jest.spyOn(controller, 'removeFunc');
const item = {name: 'My item'};
controller.onRemove(event, item);
@ -187,7 +183,7 @@ describe('Component vnTreeview', () => {
view: window
});
spyOn(controller, 'createFunc');
jest.spyOn(controller, 'createFunc');
const parent = {name: 'My item'};
controller.onCreate(event, parent);
@ -197,8 +193,8 @@ describe('Component vnTreeview', () => {
describe('create()', () => {
it(`should unfold an inactive parent and then create a child`, () => {
spyOn(controller, 'unfold');
spyOn(controller, 'sortFunc');
jest.spyOn(controller, 'unfold');
jest.spyOn(controller, 'sortFunc');
const parent = {name: 'My item', sons: 2, childs: [
{name: 'Item 1'},
{name: 'Item 2'}
@ -216,8 +212,8 @@ describe('Component vnTreeview', () => {
});
it(`should create a child on an active parent`, () => {
spyOn(controller, 'unfold');
spyOn(controller, 'sortFunc');
jest.spyOn(controller, 'unfold');
jest.spyOn(controller, 'sortFunc');
const parent = {name: 'My item', sons: 2, childs: [
{name: 'Item 1'},
{name: 'Item 2'}
@ -236,9 +232,7 @@ describe('Component vnTreeview', () => {
describe('move()', () => {
it(`should move an item to anocher parent and then unfold the parent`, () => {
spyOn(controller, 'unfold').and.returnValue(
new Promise(resolve => resolve())
);
jest.spyOn(controller, 'unfold');
const newParent = {name: 'My item 2', sons: 0};
const parent = {name: 'My item', sons: 3, childs: [
{name: 'Item 1'},
@ -255,8 +249,8 @@ describe('Component vnTreeview', () => {
});
it(`should move an item to anocher parent`, () => {
spyOn(controller, 'unfold');
spyOn(controller, 'create');
jest.spyOn(controller, 'unfold');
jest.spyOn(controller, 'create');
const newParent = {name: 'My item 2', sons: 0, active: true};
const parent = {name: 'My item', sons: 3, childs: [
{name: 'Item 1'},

View File

@ -25,10 +25,10 @@ describe('Component vnWatcher', () => {
}));
describe('$onInit()', () => {
it(`should call fetchData() if controllers get and url properties are defined`, () => {
it('should call fetchData() if controllers get and url properties are defined', () => {
controller.get = () => {};
controller.url = 'test.com';
spyOn(controller, 'fetchData');
jest.spyOn(controller, 'fetchData').mockReturnThis();
controller.$onInit();
expect(controller.fetchData).toHaveBeenCalledWith();
@ -45,7 +45,7 @@ describe('Component vnWatcher', () => {
describe('fetchData()', () => {
it(`should perform a query then store the received data into controller.data and call updateOriginalData()`, () => {
spyOn(controller, 'updateOriginalData');
jest.spyOn(controller, 'updateOriginalData');
let json = {data: 'some data'};
controller.data = [1];
controller.idField = 0;
@ -61,9 +61,9 @@ describe('Component vnWatcher', () => {
});
describe('submitBack()', () => {
it(`should call controller.window.history.back() function after calling controllers submit() function`, done => {
spyOn(controller, 'submit').and.returnValue(Promise.resolve());
spyOn(controller.window.history, 'back');
it('should call controller.window.history.back() function after calling controllers submit() function', done => {
jest.spyOn(controller, 'submit').mockReturnValue(Promise.resolve());
jest.spyOn(controller.window.history, 'back');
controller.submitBack()
.then(() => {
expect(controller.submit).toHaveBeenCalledWith();
@ -74,9 +74,9 @@ describe('Component vnWatcher', () => {
});
describe('submitGo()', () => {
it(`should call controller.$state.go() function after calling controllers submit() function`, done => {
spyOn(controller, 'submit').and.returnValue(Promise.resolve());
spyOn(controller.$state, 'go');
it('should call controller.$state.go() function after calling controllers submit() function', done => {
jest.spyOn(controller, 'submit').mockReturnValue(Promise.resolve());
jest.spyOn(controller.$state, 'go');
let state = 'the.State';
controller.submitGo(state)
.then(() => {
@ -112,7 +112,7 @@ describe('Component vnWatcher', () => {
$setSubmitted: () => {},
$setPristine: () => {}
};
spyOn(controller.form, '$setSubmitted');
jest.spyOn(controller.form, '$setSubmitted');
controller.realSubmit();
expect(controller.form.$setSubmitted).toHaveBeenCalledWith();
@ -141,7 +141,7 @@ describe('Component vnWatcher', () => {
controller.idField = 'id';
controller.url = 'test.com';
let json = {data: 'some data'};
spyOn(controller, 'writeData').and.callThrough();
jest.spyOn(controller, 'writeData');
$httpBackend.whenPATCH(`${controller.url}/1`, changedData).respond(json);
$httpBackend.expectPATCH(`${controller.url}/1`);
controller.realSubmit()
@ -161,7 +161,7 @@ describe('Component vnWatcher', () => {
controller.orgData = {id: 1};
controller.url = 'test.com';
let json = {data: 'some data'};
spyOn(controller, 'writeData').and.callThrough();
jest.spyOn(controller, 'writeData');
$httpBackend.whenPOST(`${controller.url}`, controller.data).respond(json);
$httpBackend.expectPOST(`${controller.url}`, controller.data);
controller.realSubmit()
@ -175,7 +175,7 @@ describe('Component vnWatcher', () => {
describe('writeData()', () => {
it(`should call Object.asssign() function over controllers.data with json.data, then call updateOriginalData function and finally call resolve() function`, () => {
spyOn(controller, 'updateOriginalData');
jest.spyOn(controller, 'updateOriginalData');
controller.data = {};
let json = {data: 'some data'};
let resolve = jasmine.createSpy('resolve');

View File

@ -24,7 +24,7 @@ describe('Directive dialog', () => {
it('should call show() function if dialog is a instance of vnDialog', () => {
let html = `<div vn-dialog="myDialog"></div>`;
spyOn(controller, 'show');
jest.spyOn(controller, 'show');
compile(html);
element[0].click();

View File

@ -0,0 +1,25 @@
const popover = {
show: () => {
return {
then: callback => {
callback();
}
};
},
hide: () => {
return {
then: callback => {
callback();
}
};
},
relocate: () => {
return {
then: callback => {
callback();
}
};
}
};
module.exports = popover;

View File

@ -26,7 +26,7 @@ describe('Component vnLeftMenu', () => {
describe('depth() setter', () => {
it(`should set depth property and call activateItem()`, () => {
spyOn(controller, 'activateItem');
jest.spyOn(controller, 'activateItem');
controller.depth = 3;
expect(controller.depth).toEqual(3);

View File

@ -36,8 +36,8 @@ describe('claim', () => {
describe('openAddSalesDialog()', () => {
it('should call getClaimableFromTicket and $.addSales.show', () => {
controller.$ = {addSales: {show: () => {}}};
spyOn(controller, 'getClaimedSales');
spyOn(controller.$.addSales, 'show');
jest.spyOn(controller, 'getClaimedSales');
jest.spyOn(controller.$.addSales, 'show');
controller.openAddSalesDialog();
expect(controller.getClaimedSales).toHaveBeenCalledWith();
@ -58,9 +58,9 @@ describe('claim', () => {
describe('addClaimedSale(saleFk)', () => {
it('should make a post and call refresh, hide and showSuccess', () => {
spyOn(controller.$.model, 'refresh');
spyOn(controller.$.addSales, 'hide');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$.model, 'refresh');
jest.spyOn(controller.$.addSales, 'hide');
jest.spyOn(controller.vnApp, 'showSuccess');
$httpBackend.expectPOST(`ClaimEnds/`).respond({});
controller.addClaimedSale(1);
$httpBackend.flush();
@ -73,8 +73,8 @@ describe('claim', () => {
describe('deleteClaimedSale(id)', () => {
it('should make a delete and call refresh and showSuccess', () => {
spyOn(controller.$.model, 'refresh');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$.model, 'refresh');
jest.spyOn(controller.vnApp, 'showSuccess');
$httpBackend.expectDELETE(`ClaimEnds/1`).respond({});
controller.deleteClaimedSale(1);
$httpBackend.flush();
@ -99,8 +99,8 @@ describe('claim', () => {
describe('importToNewRefundTicket()', () => {
it('should perform a post query and add lines from a new ticket', () => {
spyOn(controller.$.model, 'refresh');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$.model, 'refresh');
jest.spyOn(controller.vnApp, 'showSuccess');
$httpBackend.expect('POST', `ClaimBeginnings/1/importToNewRefundTicket`).respond({});
controller.importToNewRefundTicket();
$httpBackend.flush();
@ -112,8 +112,8 @@ describe('claim', () => {
describe('showLastTickets()', () => {
it('should get a list of tickets and call lastTicketsPopover show() method', () => {
spyOn(controller.$.lastTicketsModel, 'refresh');
spyOn(controller.$.lastTicketsPopover, 'show');
jest.spyOn(controller.$.lastTicketsModel, 'refresh');
jest.spyOn(controller.$.lastTicketsPopover, 'show');
controller.showLastTickets({});
expect(controller.$.lastTicketsModel.refresh).toHaveBeenCalledWith();
@ -123,9 +123,9 @@ describe('claim', () => {
describe('importTicketLines()', () => {
it('should perform a post query and add lines from an existent ticket', () => {
spyOn(controller.$.model, 'refresh');
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller.$.lastTicketsPopover, 'hide');
jest.spyOn(controller.$.model, 'refresh');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$.lastTicketsPopover, 'hide');
let data = {claimFk: 1, ticketFk: 1};
$httpBackend.expect('POST', `ClaimEnds/importTicketSales`, data).respond({});
controller.importTicketLines(1);
@ -139,8 +139,8 @@ describe('claim', () => {
describe('regularize()', () => {
it('should perform a post query and reload the claim card', () => {
spyOn(controller.card, 'reload');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.card, 'reload');
jest.spyOn(controller.vnApp, 'showSuccess');
let data = {claimFk: $state.params.id};
$httpBackend.expect('POST', `Claims/regularizeClaim`, data).respond({});
@ -156,9 +156,9 @@ describe('claim', () => {
const greugeTypeId = 7;
const freightPickUpPrice = 11;
it('should do nothing', () => {
spyOn(controller.$http, 'post');
spyOn(controller.card, 'reload');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$http, 'post');
jest.spyOn(controller.card, 'reload');
jest.spyOn(controller.vnApp, 'showSuccess');
controller.onUpdateGreugeResponse('cancel');
@ -168,8 +168,8 @@ describe('claim', () => {
});
it('should make a query and get the greugeTypeId and greuge config', () => {
spyOn(controller.card, 'reload');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.card, 'reload');
jest.spyOn(controller.vnApp, 'showSuccess');
const greugeTypeParams = $httpParamSerializer({filter: {where: {code: 'freightPickUp'}}});
$httpBackend.expect('GET', `GreugeTypes/findOne?${greugeTypeParams}`).respond({id: greugeTypeId});
@ -183,13 +183,13 @@ describe('claim', () => {
// #1957 - Investigate how to test nested httpBackend requests
xit('should perform a insert into greuges', () => {
spyOn(controller.card, 'reload');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.card, 'reload');
jest.spyOn(controller.vnApp, 'showSuccess');
spyOn(controller, 'getGreugeTypeId').and.returnValue(new Promise(resolve => {
jest.spyOn(controller, 'getGreugeTypeId').and.returnValue(new Promise(resolve => {
return resolve({id: greugeTypeId});
}));
spyOn(controller, 'getGreugeConfig').and.returnValue(new Promise(resolve => {
jest.spyOn(controller, 'getGreugeConfig').and.returnValue(new Promise(resolve => {
return resolve({freightPickUpPrice});
}));

View File

@ -17,7 +17,7 @@ describe('Claim', () => {
describe('onSubmit()', () => {
it(`should redirect to 'claim.card.detail' state`, () => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
controller.onSubmit();
expect(controller.$state.go).toHaveBeenCalledWith('claim.card.detail');

View File

@ -22,7 +22,7 @@ describe('Item Component vnClaimDescriptor', () => {
};
const serializedParams = $httpParamSerializer(params);
let expectedPath = `api/report/claim-pickup-order?${serializedParams}`;
spyOn(window, 'open');
jest.spyOn(window, 'open').mockReturnThis();
controller.showPickupOrder();
expect(window.open).toHaveBeenCalledWith(expectedPath);
@ -43,7 +43,7 @@ describe('Item Component vnClaimDescriptor', () => {
describe('sendPickupOrder(response)', () => {
it('should make a query and call vnApp.showMessage() if the response is accept', () => {
spyOn(controller.vnApp, 'showMessage');
jest.spyOn(controller.vnApp, 'showMessage');
const params = {
recipient: 'client@email',
@ -78,8 +78,8 @@ describe('Item Component vnClaimDescriptor', () => {
let response = 'accept';
controller.claim = {id: 2};
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller.$state, 'go');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$state, 'go');
$httpBackend.when('DELETE', `Claims/2`).respond(200);
$httpBackend.expect('DELETE', `Claims/2`);
controller.deleteClaim(response);

View File

@ -37,8 +37,8 @@ describe('claim', () => {
describe('openAddSalesDialog()', () => {
it('should call getClaimableFromTicket and $.addSales.show', () => {
spyOn(controller, 'getClaimableFromTicket');
spyOn(controller.$.addSales, 'show');
jest.spyOn(controller, 'getClaimableFromTicket');
jest.spyOn(controller.$.addSales, 'show');
controller.openAddSalesDialog();
expect(controller.getClaimableFromTicket).toHaveBeenCalledWith();
@ -58,8 +58,8 @@ describe('claim', () => {
describe('addClaimedSale(index)', () => {
it('should make a post and call refresh, hide and showSuccess', () => {
spyOn(controller.$.addSales, 'hide');
spyOn(controller.$state, 'go');
jest.spyOn(controller.$.addSales, 'hide');
jest.spyOn(controller.$state, 'go');
$httpBackend.expectPOST(`ClaimBeginnings/`).respond({});
controller.addClaimedSale(1);
$httpBackend.flush();
@ -71,7 +71,7 @@ describe('claim', () => {
describe('deleteClaimedSale(index)', () => {
it('should make a delete and call refresh and showSuccess', () => {
spyOn(controller.$.model, 'remove');
jest.spyOn(controller.$.model, 'remove');
$httpBackend.expectDELETE(`ClaimBeginnings/1`).respond({});
controller.deleteClaimedSale(0);
$httpBackend.flush();
@ -82,7 +82,7 @@ describe('claim', () => {
describe('setClaimedQuantity(id, claimedQuantity)', () => {
it('should make a patch and call refresh and showSuccess', () => {
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.vnApp, 'showSuccess');
$httpBackend.expectPATCH(`ClaimBeginnings/`).respond({});
controller.setClaimedQuantity(1, 1);
$httpBackend.flush();
@ -112,10 +112,10 @@ describe('claim', () => {
controller.newDiscount = 10;
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller, 'calculateTotals');
spyOn(controller, 'clearDiscount');
spyOn(controller.$.editPopover, 'hide');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller, 'calculateTotals');
jest.spyOn(controller, 'clearDiscount');
jest.spyOn(controller.$.editPopover, 'hide');
$httpBackend.when('POST', 'Tickets/1/updateDiscount').respond({});
controller.updateDiscount();
@ -135,8 +135,8 @@ describe('claim', () => {
stopImmediatePropagation: () => {},
target: 'the target element'
};
spyOn(event, 'stopImmediatePropagation');
spyOn(controller.$.descriptor, 'show');
jest.spyOn(event, 'stopImmediatePropagation');
jest.spyOn(controller.$.descriptor, 'show');
controller.showItemDescriptor(event, itemId);

View File

@ -20,7 +20,7 @@ describe('Claim', () => {
describe('onSubmit()', () => {
it(`should redirect to 'claim.card.action' state`, () => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
controller.onSubmit();
expect(controller.$state.go).toHaveBeenCalledWith('claim.card.action');

View File

@ -28,8 +28,8 @@ describe('Claim', () => {
it('should make an HTTP Post query', () => {
const dmsId = 1;
const dmsIndex = 0;
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller.$.model, 'remove');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$.model, 'remove');
controller.photos = [{dmsFk: 1}];
controller.dmsIndex = dmsIndex;
@ -62,8 +62,8 @@ describe('Claim', () => {
it('should make an HTTP Post query, then refresh the model data', () => {
const claimId = 1;
const dmsIndex = 0;
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller.$.model, 'refresh');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$.model, 'refresh');
controller.photos = [{dmsFk: 1}];
controller.dmsIndex = dmsIndex;
controller.dms = {files: []};

View File

@ -28,7 +28,7 @@ describe('Claim', () => {
describe('$onChanges()', () => {
it('should call getSummary when item.id is defined', () => {
spyOn(controller, 'getSummary');
jest.spyOn(controller, 'getSummary');
controller.$onChanges();
expect(controller.getSummary).toHaveBeenCalledWith();

View File

@ -22,7 +22,10 @@
"type": "Boolean"
},
"hasCompany": {
"type": "Number"
"type": "Boolean"
},
"hasPreview": {
"type": "Boolean"
}
},
"scopes": {

View File

@ -35,7 +35,7 @@ describe('Client', () => {
describe('onSubmit()', () => {
it('should perform a PATCH and not set value to defaultAddressFk property', () => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
controller.address.isDefaultAddress = false;
controller.onSubmit();
@ -44,7 +44,7 @@ describe('Client', () => {
});
it('should perform a PATCH and set a value to defaultAddressFk property', () => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
controller.address.isDefaultAddress = true;
controller.onSubmit();

View File

@ -36,8 +36,8 @@ describe('Client', () => {
describe('removeObservation()', () => {
it('should call $.watcher.setDirty() and $.model.remove(index)', () => {
spyOn(controller.$.watcher, 'setDirty');
spyOn(controller.$.model, 'remove');
jest.spyOn(controller.$.watcher, 'setDirty');
jest.spyOn(controller.$.model, 'remove');
controller.removeObservation(1);
expect(controller.$.model.remove).toHaveBeenCalledWith(1);
@ -47,7 +47,7 @@ describe('Client', () => {
describe('cancel()', () => {
it('should call goToIndex()', () => {
spyOn(controller, 'goToIndex');
jest.spyOn(controller, 'goToIndex');
controller.cancel();
expect(controller.goToIndex).toHaveBeenCalledWith();
@ -56,7 +56,7 @@ describe('Client', () => {
describe('goToIndex()', () => {
it('should call $state.go("client.card.address.index")', () => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
controller.goToIndex();
expect(controller.$state.go).toHaveBeenCalledWith('client.card.address.index');

View File

@ -22,7 +22,7 @@ describe('Client', () => {
describe('setDefault()', () => {
it('should perform a PATCH and set a value to defaultAddressFk property', () => {
spyOn(controller, 'sortAddresses');
jest.spyOn(controller, 'sortAddresses');
let address = {id: 1};
let data = {defaultAddressFk: address.id};
let expectedResult = {defaultAddressFk: address.id};

View File

@ -31,9 +31,9 @@ describe('Client', () => {
it('should apply the filters on he models and get the client balance', () => {
controller._companyId = 442;
controller.$stateParams.id = 101;
spyOn(controller, 'getBalances');
spyOn(controller.$.model, 'applyFilter').and.returnValue(Promise.resolve());
spyOn(controller.$.riskModel, 'applyFilter').and.returnValue(Promise.resolve());
jest.spyOn(controller, 'getBalances').mockReturnThis();
jest.spyOn(controller.$.model, 'applyFilter').mockReturnValue(Promise.resolve());
jest.spyOn(controller.$.riskModel, 'applyFilter').mockReturnValue(Promise.resolve());
controller.getData().then(() => {
expect(controller.$.model.applyFilter).toHaveBeenCalledWith(null, {'clientId': 101, 'companyId': 442});
@ -45,7 +45,7 @@ describe('Client', () => {
describe('company setter/getter', () => {
it('should return the company and then call getData()', () => {
spyOn(controller, 'getData');
jest.spyOn(controller, 'getData').mockReturnThis();
controller.companyId = 442;
expect(controller._companyId).toEqual(442);
@ -64,7 +64,7 @@ describe('Client', () => {
describe('getBalances()', () => {
it('should return the total client balance amount', () => {
spyOn(controller, 'getCurrentBalance').and.callThrough();
jest.spyOn(controller, 'getCurrentBalance');
controller._companyId = 442;
controller.$.model = {data:
[{
@ -94,7 +94,7 @@ describe('Client', () => {
describe('balances() setter', () => {
it('should set the balances data and not call the getBalances() method', () => {
spyOn(controller, 'getBalances');
jest.spyOn(controller, 'getBalances');
controller.$.riskModel.data = null;
controller.balances = [{
id: 1,
@ -115,7 +115,7 @@ describe('Client', () => {
});
it('should set the balances data and then call the getBalances() method', () => {
spyOn(controller, 'getBalances');
jest.spyOn(controller, 'getBalances').mockReturnThis();
controller.balances = [{
id: 1,
debit: 1000,

View File

@ -15,7 +15,7 @@ describe('Client', () => {
vnApp = _vnApp_;
$scope = $rootScope.$new();
$scope.watcher = {};
spyOn(vnApp, 'showError');
jest.spyOn(vnApp, 'showError');
controller = $componentController('vnClientBillingData', {$element, $scope});
controller.client = {id: 101, name: 'Client name', payMethodFk: 4};
$scope.watcher.orgData = {id: 101, name: 'Client name', payMethodFk: 4};

View File

@ -33,7 +33,7 @@ describe('Client', () => {
describe('onSubmit()', () => {
it(`should call submit() on the watcher then expect a callback`, () => {
spyOn($state, 'go');
jest.spyOn($state, 'go');
controller.onSubmit();
expect(controller.$state.go).toHaveBeenCalledWith('client.card.basicData', {id: '1234'});

View File

@ -60,7 +60,7 @@ describe('Client', () => {
describe('closeContract()', () => {
it('should define the classificationId property of the controller and then call the show method()', () => {
controller.$scope.closeContract = {show: () => {}};
spyOn(controller.$scope.closeContract, 'show');
jest.spyOn(controller.$scope.closeContract, 'show');
expect(controller.classificationId).toBeFalsy();
controller.closeContract({id: 1});
@ -72,7 +72,7 @@ describe('Client', () => {
describe('returnDialog()', () => {
it('should call the returnDialog method and perform a PATCH query, then call _getClassifications method', () => {
spyOn(controller, '_getClassifications');
jest.spyOn(controller, '_getClassifications').mockReturnThis();
controller.classificationId = 1;
$httpBackend.when('PATCH', `CreditClassifications/1`).respond(200);
$httpBackend.expect('PATCH', `CreditClassifications/1`);

View File

@ -42,7 +42,7 @@ describe('Client', () => {
});
it('should call show() method when the client have a recovery', () => {
spyOn(controller.$scope.confirmation, 'show');
jest.spyOn(controller.$scope.confirmation, 'show');
$httpBackend.whenGET(`Recoveries/101/hasActiveRecovery`).respond(true);
$httpBackend.expectGET(`Recoveries/101/hasActiveRecovery`);
controller.onSubmit();
@ -52,7 +52,7 @@ describe('Client', () => {
});
it('should call addCredit() method when the client doesnt have a recovery', () => {
spyOn(controller, 'addCredit');
jest.spyOn(controller, 'addCredit');
$httpBackend.whenGET(`Recoveries/101/hasActiveRecovery`).respond(false);
$httpBackend.expectGET(`Recoveries/101/hasActiveRecovery`);
controller.onSubmit();
@ -64,7 +64,7 @@ describe('Client', () => {
describe('cancel()', () => {
it('should call goToIndex()', () => {
spyOn(controller, 'goToIndex');
jest.spyOn(controller, 'goToIndex');
controller.cancel();
expect(controller.goToIndex).toHaveBeenCalledWith();
@ -73,7 +73,7 @@ describe('Client', () => {
describe('returnDialog()', () => {
it('should call addCredit() when is called with accept', () => {
spyOn(controller, 'addCredit');
jest.spyOn(controller, 'addCredit');
controller.returnDialog('accept');
expect(controller.addCredit).toHaveBeenCalledWith();
@ -82,7 +82,7 @@ describe('Client', () => {
describe('addCredit()', () => {
it('should call the function go() on $state to go to the credit list', () => {
spyOn($state, 'go');
jest.spyOn($state, 'go');
client.credit = 1;
controller.addCredit();

View File

@ -23,7 +23,7 @@ describe('Client', () => {
it(`should not apply any changes if the received id is the same stored in _clientFk`, () => {
controller.client = 'I exist!';
controller._clientFk = 1;
spyOn(controller, 'getCard');
jest.spyOn(controller, 'getCard');
controller.clientFk = 1;
expect(controller.client).toEqual('I exist!');
@ -34,7 +34,7 @@ describe('Client', () => {
it(`should set the received id into _clientFk, set the client to null and then call getCard()`, () => {
controller.client = `Please don't`;
controller._clientFk = 1;
spyOn(controller, 'getCard');
jest.spyOn(controller, 'getCard');
controller.clientFk = 999;
expect(controller.client).toBeNull();
@ -45,7 +45,7 @@ describe('Client', () => {
describe('client()', () => {
it(`should save the client into _client and then call relocate()`, () => {
spyOn(controller.$.popover, 'relocate');
jest.spyOn(controller.$.popover, 'relocate');
controller.client = `i'm the client!`;
$timeout.flush();
@ -56,7 +56,7 @@ describe('Client', () => {
describe('show()', () => {
it(`should call the show()`, () => {
spyOn(controller.$.popover, 'show');
jest.spyOn(controller.$.popover, 'show');
controller.show();
expect(controller.$.popover.show).toHaveBeenCalledWith();

View File

@ -19,8 +19,8 @@ describe('Client', () => {
describe('client() setter', () => {
it('should set the client data and then call setDefaultParams() and getAllowedContentTypes()', () => {
spyOn(controller, 'setDefaultParams');
spyOn(controller, 'getAllowedContentTypes');
jest.spyOn(controller, 'setDefaultParams');
jest.spyOn(controller, 'getAllowedContentTypes');
controller.client = {
id: 15,
name: 'Bruce wayne'

View File

@ -19,8 +19,8 @@ describe('Client', () => {
describe('client() setter', () => {
it('should set the client data and then call setDefaultParams() and getAllowedContentTypes()', () => {
spyOn(controller, 'setDefaultParams');
spyOn(controller, 'getAllowedContentTypes');
jest.spyOn(controller, 'setDefaultParams');
jest.spyOn(controller, 'getAllowedContentTypes');
controller._client = undefined;
controller.client = {
id: 15

View File

@ -22,8 +22,8 @@ describe('Client', () => {
it('should make an HTTP Post query', () => {
const dmsId = 1;
const dmsIndex = 0;
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller.$.model, 'remove');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$.model, 'remove');
controller.clientDms = [{dmsFk: 1}];
controller.dmsIndex = dmsIndex;

View File

@ -24,14 +24,15 @@ export default class Controller extends Component {
const filter = encodeURIComponent(JSON.stringify(filterObj));
const query = `Clients/findOne?filter=${filter}`;
this.$http.get(query).then(res => {
if (res.data.id) {
const params = {clientId: res.data.id};
const question = $t('Found a client with this phone or email', params, null, null, 'sanitizeParameters');
this.client.despiteOfClient = params.clientId;
this.$.confirmDuplicatedClient.question = question;
this.$.confirmDuplicatedClient.show();
}
}).catch(error => {
if (error.status == 404)
this.save();
});
}

View File

@ -29,7 +29,7 @@ describe('Client', () => {
describe('onSubmit()', () => {
it('should call the save() method directly', () => {
spyOn(controller, 'save');
jest.spyOn(controller, 'save');
controller.onSubmit();
@ -37,8 +37,8 @@ describe('Client', () => {
});
it('should call the checkExistingClient() if the isTaxDataChecked property is checked', () => {
spyOn(controller, 'save');
spyOn(controller, 'checkExistingClient');
jest.spyOn(controller, 'save');
jest.spyOn(controller, 'checkExistingClient');
controller.client.isTaxDataChecked = true;
controller.onSubmit();
@ -51,7 +51,7 @@ describe('Client', () => {
describe('checkExistingClient()', () => {
it('should show a save confirmation when a duplicated client is found and then set the despiteOfClient property', () => {
controller.$.confirmDuplicatedClient = {show: () => {}};
spyOn(controller.$.confirmDuplicatedClient, 'show');
jest.spyOn(controller.$.confirmDuplicatedClient, 'show');
const filterObj = {
where: {
and: [
@ -74,7 +74,7 @@ describe('Client', () => {
describe('checkEtChanges()', () => {
it(`should show a propagation confirmation if isEqualizated property is changed and invoice by address is checked`, () => {
controller.$.propagateIsEqualizated = {show: () => {}};
spyOn(controller.$.propagateIsEqualizated, 'show');
jest.spyOn(controller.$.propagateIsEqualizated, 'show');
const orgData = $scope.watcher.orgData;
orgData.hasToInvoiceByAddress = true;
@ -86,7 +86,7 @@ describe('Client', () => {
});
it(`should call to the onAcceptEt() method if isEqualizated property is changed and invoice by address isn't checked`, () => {
spyOn(controller, 'onAcceptEt');
jest.spyOn(controller, 'onAcceptEt');
const orgData = $scope.watcher.orgData;
orgData.hasToInvoiceByAddress = false;

View File

@ -27,7 +27,7 @@ describe('Client', () => {
describe('onSubmit()', () => {
it('should call the function go() on $state to go to the greuges list', () => {
spyOn($state, 'go');
jest.spyOn($state, 'go');
controller.onSubmit();
expect(controller.$state.go).toHaveBeenCalledWith('client.card.greuge.index');

View File

@ -15,7 +15,7 @@ describe('Client index', () => {
it('should navigate to the ticket index using params as filter', () => {
const client = {id: 101};
const event = new MouseEvent('click', {cancelable: true});
spyOn($state, 'go');
jest.spyOn($state, 'go');
controller.filterTickets(client, event);

View File

@ -20,7 +20,7 @@ describe('Client', () => {
let params = {townFk: 1, provinceFk: 1, countryFk: 1, code: '46460'};
controller.data = {townFk: 1, provinceFk: 1, countryFk: 1, code: '46460'};
spyOn(controller.vnApp, 'showMessage');
jest.spyOn(controller.vnApp, 'showMessage');
$httpBackend.when('PATCH', `postcodes`, params).respond(200, params);
$httpBackend.expect('PATCH', `postcodes`, params).respond(params);

View File

@ -27,7 +27,7 @@ describe('Client', () => {
describe('onSubmit()', () => {
it('should call the function go() on $state to go to the recovery list', () => {
spyOn($state, 'go');
jest.spyOn($state, 'go');
controller.onSubmit();
expect(controller.$state.go).toHaveBeenCalledWith('client.card.recovery.index');

View File

@ -23,7 +23,7 @@
<vn-autocomplete vn-one vn-id="sampleType"
ng-model="$ctrl.clientSample.typeFk"
model="ClientSample.typeFk"
fields="['code','hasCompany']"
fields="['code','hasCompany', 'hasPreview']"
url="Samples/visible"
show-field="description"
value-field="id"
@ -31,7 +31,7 @@
</vn-autocomplete>
<vn-autocomplete vn-one
ng-model="$ctrl.companyId"
model="ClientSample.companyId"
model="ClientSample.companyFk"
data="companiesData"
show-field="code"
value-field="id"
@ -42,7 +42,10 @@
</vn-card>
<vn-button-bar>
<vn-submit label="Send"></vn-submit>
<vn-button label="Preview" ng-click="$ctrl.showPreview()"></vn-button>
<vn-button ng-if="sampleType.selection.hasPreview"
label="Preview"
ng-click="$ctrl.showPreview()">
</vn-button>
<vn-button ui-sref="client.card.sample.index" label="Cancel"></vn-button>
</vn-button-bar>
</form>

View File

@ -26,13 +26,13 @@ class Controller extends Component {
}
get companyId() {
if (!this.clientSample.companyId)
this.clientSample.companyId = this.vnConfig.companyFk;
return this.clientSample.companyId;
if (!this.clientSample.companyFk)
this.clientSample.companyFk = this.vnConfig.companyFk;
return this.clientSample.companyFk;
}
set companyId(value) {
this.clientSample.companyId = value;
this.clientSample.companyFk = value;
}
onSubmit() {
@ -74,11 +74,11 @@ class Controller extends Component {
if (!sampleType)
return this.vnApp.showError(this.$translate.instant('Choose a sample'));
if (sampleType.hasCompany && !this.clientSample.companyId)
if (sampleType.hasCompany && !this.clientSample.companyFk)
return this.vnApp.showError(this.$translate.instant('Choose a company'));
if (sampleType.hasCompany)
params.companyId = this.clientSample.companyId;
params.companyId = this.clientSample.companyFk;
if (isPreview) params.isPreview = true;

View File

@ -52,7 +52,7 @@ describe('Client', () => {
describe('onSubmit()', () => {
it(`should call sendSample() method`, () => {
spyOn(controller, 'sendSample');
jest.spyOn(controller, 'sendSample');
controller.onSubmit();
expect(controller.sendSample).toHaveBeenCalledWith();
@ -61,7 +61,7 @@ describe('Client', () => {
describe('send()', () => {
it(`should not perform an HTTP query if no recipient is specified`, () => {
spyOn(controller.$http, 'get');
jest.spyOn(controller.$http, 'get');
controller.$.sampleType.selection = {
hasCompany: false,
@ -77,7 +77,7 @@ describe('Client', () => {
});
it(`should not perform an HTTP query if no sample is specified`, () => {
spyOn(controller.$http, 'get');
jest.spyOn(controller.$http, 'get');
controller.$.sampleType.selection = null;
controller.clientSample = {
@ -91,7 +91,7 @@ describe('Client', () => {
});
it(`should not perform an HTTP query if company is required and not specified`, () => {
spyOn(controller.$http, 'get');
jest.spyOn(controller.$http, 'get');
controller.$.sampleType.selection = {
hasCompany: true,
@ -107,7 +107,7 @@ describe('Client', () => {
expect(controller.$http.get).not.toHaveBeenCalled();
});
it(`should perform an HTTP query without passing companyId param`, () => {
it(`should perform an HTTP query without passing companyFk param`, () => {
controller.$.sampleType.selection = {
hasCompany: false,
code: 'MyReport'
@ -116,25 +116,34 @@ describe('Client', () => {
clientId: 101,
recipient: 'client@email.com'
};
const expectedParams = {
clientId: 101,
recipient: 'client@email.com'
};
const serializedParams = $httpParamSerializer(expectedParams);
const serializedParams = $httpParamSerializer(controller.clientSample);
$httpBackend.expect('GET', `email/MyReport?${serializedParams}`).respond(true);
controller.send(false, () => {});
$httpBackend.flush();
});
it(`should perform an HTTP query passing companyId param`, () => {
it(`should perform an HTTP query passing companyFk param`, () => {
controller.$.sampleType.selection = {
hasCompany: true,
code: 'MyReport'
};
controller.clientSample = {
clientId: 101,
recipient: 'client@email.com',
companyFk: 442
};
const expectedParams = {
clientId: 101,
recipient: 'client@email.com',
companyId: 442
};
const serializedParams = $httpParamSerializer(expectedParams);
const serializedParams = $httpParamSerializer(controller.clientSample);
$httpBackend.expect('GET', `email/MyReport?${serializedParams}`).respond(true);
controller.send(false, () => {});
$httpBackend.flush();
@ -143,7 +152,7 @@ describe('Client', () => {
describe('showPreview()', () => {
it(`should open a sample preview`, () => {
spyOn(controller.$.showPreview, 'show');
jest.spyOn(controller.$.showPreview, 'show');
controller.send = (isPreview, cb) => {
cb({
@ -158,7 +167,7 @@ describe('Client', () => {
describe('sendSample()', () => {
it(`should perform a query (GET) and call go() method`, () => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
controller.send = (isPreview, cb) => {
cb({

View File

@ -27,7 +27,7 @@ describe('Client', () => {
let params = {destinationFk: 101, destination: 111111111, message: 'My SMS'};
controller.sms = {destinationFk: 101, destination: 111111111, message: 'My SMS'};
spyOn(controller.vnApp, 'showMessage');
jest.spyOn(controller.vnApp, 'showMessage');
$httpBackend.expect('POST', `Clients/101/sendSms`, params).respond(200, params);
controller.onResponse('accept');
@ -39,7 +39,7 @@ describe('Client', () => {
it('should call onResponse without the destination and show an error snackbar', () => {
controller.sms = {destinationFk: 101, message: 'My SMS'};
spyOn(controller.vnApp, 'showError');
jest.spyOn(controller.vnApp, 'showError');
controller.onResponse('accept');
@ -49,7 +49,7 @@ describe('Client', () => {
it('should call onResponse without the message and show an error snackbar', () => {
controller.sms = {destinationFk: 101, destination: 222222222};
spyOn(controller.vnApp, 'showError');
jest.spyOn(controller.vnApp, 'showError');
controller.onResponse('accept');

View File

@ -14,10 +14,10 @@ describe('Client', () => {
}));
describe('$onChanges()', () => {
it('should perform a GET query and define summary property', () => {
it('should perform a GET query and then define the summary property', () => {
let res = {name: 'Superman', classifications: []};
spyOn(controller, 'sumRisk');
jest.spyOn(controller, 'sumRisk').mockReturnThis();
$httpBackend.when('GET', `Clients/101/summary`).respond(200, res);
$httpBackend.expect('GET', `Clients/101/summary`);

View File

@ -12,13 +12,13 @@ describe('Component VnClientWebAccess', () => {
$scope = $rootScope.$new();
$httpBackend = _$httpBackend_;
vnApp = _vnApp_;
spyOn(vnApp, 'showError');
jest.spyOn(vnApp, 'showError');
controller = $componentController('vnClientWebAccess', {$scope});
}));
describe('$onChanges()', () => {
it(`should pass client's account data to account then call isCustomer function`, () => {
spyOn(controller, 'isCustomer');
jest.spyOn(controller, 'isCustomer');
controller.client = {client: 'Bruce Wayne', account: 'Wayne Industries'};
controller.account = {};
controller.$onChanges();

View File

@ -14,7 +14,7 @@ describe('Component vnClientWebPayment', () => {
$scope.model = crudModel;
$httpBackend = _$httpBackend_;
vnApp = _vnApp_;
spyOn(vnApp, 'showError');
jest.spyOn(vnApp, 'showError');
controller = $componentController('vnClientWebPayment', {$scope: $scope});
}));

View File

@ -26,7 +26,7 @@ describe('Entry Component vnEntryDescriptor', () => {
};
const serializedParams = $httpParamSerializer(params);
let expectedPath = `api/report/entry-order?${serializedParams}`;
spyOn(window, 'open');
jest.spyOn(window, 'open').mockReturnThis();
controller.showEntryReport();
expect(window.open).toHaveBeenCalledWith(expectedPath);

View File

@ -19,7 +19,7 @@ describe('component vnEntrySummary', () => {
describe('entry setter/getter', () => {
it('should check if value.id is defined', () => {
spyOn(controller, 'getEntryData');
jest.spyOn(controller, 'getEntryData');
controller.entry = {id: 1};
@ -27,7 +27,7 @@ describe('component vnEntrySummary', () => {
});
it('should return the entry and then call getEntryData()', () => {
spyOn(controller, 'getEntryData');
jest.spyOn(controller, 'getEntryData');
controller.entry = {id: 99};
expect(controller._entry.id).toEqual(99);

View File

@ -27,7 +27,7 @@ describe('Item', () => {
describe('onSubmit()', () => {
it(`should call submit() on the watcher then expect a callback`, () => {
spyOn($state, 'go');
jest.spyOn($state, 'go');
controller.onSubmit();
expect(controller.$state.go).toHaveBeenCalledWith('item.card.basicData', {id: 1});

View File

@ -23,7 +23,7 @@ describe('Item', () => {
it(`should not apply any changes if the received id is the same stored in _itemFk`, () => {
controller.item = 'I exist!';
controller._itemFk = 1;
spyOn(controller, 'getCard');
jest.spyOn(controller, 'getCard');
controller.itemFk = 1;
expect(controller.item).toEqual('I exist!');
@ -34,7 +34,7 @@ describe('Item', () => {
it(`should set the received id into _itemFk, set the item to null and then call getCard()`, () => {
controller.item = `Please don't`;
controller._itemFk = 1;
spyOn(controller, 'getCard');
jest.spyOn(controller, 'getCard');
controller.itemFk = 999;
expect(controller.item).toBeNull();
@ -45,7 +45,7 @@ describe('Item', () => {
describe('item()', () => {
it(`should save the item into _item and then call relocate()`, () => {
spyOn(controller.$.popover, 'relocate');
jest.spyOn(controller.$.popover, 'relocate');
controller.item = `i'm the item!`;
$timeout.flush();
@ -56,7 +56,7 @@ describe('Item', () => {
describe('show()', () => {
it(`should call the show()`, () => {
spyOn(controller.$.popover, 'show');
jest.spyOn(controller.$.popover, 'show');
controller.show();
expect(controller.$.popover.show).toHaveBeenCalledWith();

View File

@ -68,8 +68,8 @@ describe('Item', () => {
});
describe('set item()', () => {
it(`should set warehouseFk property based on itemType warehouseFk`, () => {
spyOn(controller.$scope, '$applyAsync').and.callThrough();
it('should set warehouseFk property based on itemType warehouseFk', () => {
jest.spyOn(controller.$scope, '$applyAsync');
controller.item = {id: 1, itemType: {warehouseFk: 1}};
expect(controller.$scope.$applyAsync).toHaveBeenCalledWith(jasmine.any(Function));
@ -80,7 +80,7 @@ describe('Item', () => {
});
it(`should set warehouseFk property based on url query warehouseFk`, () => {
spyOn(controller.$scope, '$applyAsync').and.callThrough();
jest.spyOn(controller.$scope, '$applyAsync');
controller.$stateParams.warehouseFk = 4;
controller.item = {id: 1, itemType: {warehouseFk: 1}};

View File

@ -16,7 +16,7 @@ describe('Item', () => {
describe('onCloneAccept()', () => {
it('should do nothing if response is not accept', () => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
let response = 'ERROR!';
controller.itemSelected = 'check me';
@ -28,7 +28,7 @@ describe('Item', () => {
});
it('should do nothing if response is accept but itemSelected is not defined in the controller', () => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
let response = 'accept';
controller.itemSelected = undefined;
@ -40,7 +40,7 @@ describe('Item', () => {
});
it('should perform a post query and then call go() then update itemSelected in the controller', () => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
let response = 'accept';
controller.itemSelected = {id: 1};

View File

@ -46,7 +46,7 @@ describe('Item', () => {
describe('confirmRequest()', () => {
it(`should do nothing if the request does't have itemFk or saleQuantity`, () => {
let request = {};
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.vnApp, 'showSuccess');
controller.confirmRequest(request);
@ -54,9 +54,9 @@ describe('Item', () => {
});
it('should perform a query and call vnApp.showSuccess() and refresh if the conditions are met', () => {
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.vnApp, 'showSuccess');
let model = controller.$.model;
spyOn(model, 'refresh');
jest.spyOn(model, 'refresh');
const expectedResult = {concept: 'Melee Weapon'};
let request = {itemFk: 1, saleQuantity: 1, id: 1};
@ -73,7 +73,7 @@ describe('Item', () => {
describe('changeQuantity()', () => {
it(`should call confirmRequest() if there's no sale id in the request`, () => {
let request = {};
spyOn(controller, 'confirmRequest');
jest.spyOn(controller, 'confirmRequest');
controller.changeQuantity(request);
@ -82,7 +82,7 @@ describe('Item', () => {
it(`should perform a query and call vnApp.showSuccess() if the conditions are met`, () => {
let request = {saleFk: 1, saleQuantity: 1};
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.vnApp, 'showSuccess');
$httpBackend.when('PATCH', `Sales/${request.saleFk}/`).respond();
@ -114,7 +114,7 @@ describe('Item', () => {
describe('denyRequest()', () => {
it(`should perform a query and call vnApp.showSuccess(), refresh(), hide() and set denyObservation to null in the controller`, () => {
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.vnApp, 'showSuccess');
const request = {id: 1};
const expectedResult = {isOk: false, attenderFk: 106, response: 'Denied!'};

View File

@ -27,7 +27,7 @@ describe('Item', () => {
describe('$onChanges()', () => {
it('should call getSummary when item.id is defined', () => {
spyOn(controller, 'getSummary');
jest.spyOn(controller, 'getSummary');
controller.$onChanges();
expect(controller.getSummary).toHaveBeenCalledWith();

View File

@ -17,7 +17,7 @@ describe('Item', () => {
describe('itemTags setter', () => {
it('should call getSourceTable one time for each element in the value array', () => {
spyOn(controller, 'getSourceTable');
jest.spyOn(controller, 'getSourceTable');
let itemTags = [
{id: 1},
{id: 2},
@ -27,7 +27,7 @@ describe('Item', () => {
controller.itemTags = itemTags;
expect(controller.getSourceTable.calls.count()).toEqual(4);
expect(controller.getSourceTable.mock.calls.length).toEqual(4);
expect(controller.itemTags).toEqual(itemTags);
});
});

View File

@ -44,8 +44,8 @@ describe('Item', () => {
describe('submit()', () => {
it('should perform a post to update taxes', () => {
spyOn(controller.$.watcher, 'notifySaved');
spyOn(controller.$.watcher, 'updateOriginalData');
jest.spyOn(controller.$.watcher, 'notifySaved');
jest.spyOn(controller.$.watcher, 'updateOriginalData');
controller.taxes = [
{id: 37, countryFk: 1, taxClassFk: 1, country: {id: 1, country: 'España'}}
];

View File

@ -73,7 +73,7 @@ describe('Order', () => {
describe('onSubmit()', () => {
it(`should call createOrder()`, () => {
spyOn(controller, 'createOrder');
jest.spyOn(controller, 'createOrder');
controller.onSubmit();
expect(controller.createOrder).toHaveBeenCalledWith();
@ -86,8 +86,8 @@ describe('Order', () => {
controller.order.addressFk = 101;
controller.order.agencyModeFk = 101;
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller.$state, 'go');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$state, 'go');
$httpBackend.when('POST', 'Orders/new', {landed: 101, addressId: 101, agencyModeId: 101}).respond(200, 1);
$httpBackend.expect('POST', 'Orders/new', {landed: 101, addressId: 101, agencyModeId: 101});
controller.createOrder();

View File

@ -15,14 +15,14 @@ describe('Order', () => {
describe('onSubmit()', () => {
it(`should call createOrder()`, () => {
spyOn(controller.$.card, 'createOrder');
jest.spyOn(controller.$.card, 'createOrder');
controller.onSubmit();
expect(controller.$.card.createOrder).toHaveBeenCalledWith();
});
it(`should call go()`, async() => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
await controller.onSubmit();
expect(controller.$state.go).toHaveBeenCalledWith('order.card.summary', {id: undefined});

View File

@ -16,8 +16,8 @@ describe('Order Component vnOrderDescriptor', () => {
it(`should do nothing if the response isn't accept`, () => {
let response = 'WAGH!';
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller.$state, 'go');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$state, 'go');
controller.deleteOrder(response);
expect(controller.vnApp.showSuccess).not.toHaveBeenCalledWith('Order deleted!');
@ -27,8 +27,8 @@ describe('Order Component vnOrderDescriptor', () => {
it(`should perform a DELETE query if the response was accept`, () => {
let response = 'accept';
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller.$state, 'go');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$state, 'go');
$httpBackend.when('DELETE', `Orders/${controller.order.id}`).respond(200);
$httpBackend.expect('DELETE', `Orders/${controller.order.id}`);
controller.deleteOrder(response);

View File

@ -14,7 +14,7 @@ describe('Order', () => {
}));
describe('getSummary()', () => {
it('should perform a GET query and define summary property', () => {
it('should now perform a GET query and define the summary property', () => {
let res = {id: 1, nickname: 'Batman'};
$httpBackend.when('GET', `Orders/1/summary`).respond(200, res);
$httpBackend.expect('GET', `Orders/1/summary`);

View File

@ -39,7 +39,7 @@ describe('Order', () => {
it('should set $scope.descriptor.itemFk, $scope.descriptor.parent and call $scope.descriptor.show()', () => {
let event = {target: 1};
let itemFk = 1;
spyOn(controller.$scope.descriptor, 'show');
jest.spyOn(controller.$scope.descriptor, 'show');
controller.showDescriptor(event, itemFk);
expect(controller.$scope.descriptor.itemFk).toBe(1);
@ -50,7 +50,7 @@ describe('Order', () => {
describe('onDescriptorLoad()', () => {
it('should call $scope.popover.relocate()', () => {
spyOn(controller.$scope.popover, 'relocate');
jest.spyOn(controller.$scope.popover, 'relocate');
controller.onDescriptorLoad();
expect(controller.$scope.popover.relocate).toHaveBeenCalledWith();

View File

@ -22,7 +22,7 @@ describe('vnRouteDescriptorPopover', () => {
it(`should do nothing if the received id isn't a new one`, () => {
controller.route = 'I exist!';
controller._routeFk = 1;
spyOn(controller, 'getCard');
jest.spyOn(controller, 'getCard');
controller.routeFk = 1;
expect(controller.route).toEqual('I exist!');
@ -33,7 +33,7 @@ describe('vnRouteDescriptorPopover', () => {
it(`should set the received id, set the route null and then call getCard()`, () => {
controller.route = `Please don't`;
controller._routeFk = 1;
spyOn(controller, 'getCard');
jest.spyOn(controller, 'getCard');
controller.routeFk = 999;
expect(controller.route).toBeNull();
@ -44,7 +44,7 @@ describe('vnRouteDescriptorPopover', () => {
describe('route()', () => {
it(`should save the client on the controller and then call relocate()`, () => {
spyOn(controller.$.popover, 'relocate');
jest.spyOn(controller.$.popover, 'relocate');
let route = `i'm the route!`;
controller.route = route;
$timeout.flush();
@ -56,7 +56,7 @@ describe('vnRouteDescriptorPopover', () => {
describe('show()', () => {
it(`should call the popover show() method`, () => {
spyOn(controller.$.popover, 'show');
jest.spyOn(controller.$.popover, 'show');
controller.show();
expect(controller.$.popover.show).toHaveBeenCalledWith();

View File

@ -87,8 +87,8 @@ describe('Route', () => {
describe('setPriority()', () => {
it('should set a ticket priority', () => {
controller.$.model = {refresh: () => {}};
spyOn(controller.$.model, 'refresh');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$.model, 'refresh');
jest.spyOn(controller.vnApp, 'showSuccess');
const ticketId = 1;
const priority = 999;
@ -119,7 +119,7 @@ describe('Route', () => {
describe('goToBuscaman()', () => {
it('should open buscaman with the given arguments', () => {
spyOn(window, 'open');
jest.spyOn(window, 'open').mockReturnThis();
const expectedUrl = 'http://gps.buscalia.com/usuario/localizar.aspx?bmi=true&addr=46460 Av Espioca 100+to:n19 London my street';
controller.route = {vehicleFk: 1};
const url = `Routes/${controller.route.vehicleFk}/getDeliveryPoint`;
@ -147,7 +147,7 @@ describe('Route', () => {
describe('showDeleteConfirm()', () => {
it('should open a confirm dialog after setting the selected ticket into the controller', () => {
controller.$.confirm = {show: () => {}};
spyOn(controller.$.confirm, 'show');
jest.spyOn(controller.$.confirm, 'show');
let ticketId = 1;
controller.showDeleteConfirm(ticketId);
@ -159,8 +159,8 @@ describe('Route', () => {
describe('removeTicketFromRoute()', () => {
it('should perform a patch query then call showSuccess and updateVolume methods', () => {
spyOn(controller, 'updateVolume');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller, 'updateVolume').mockReturnThis();
jest.spyOn(controller.vnApp, 'showSuccess');
let ticketId = 1;
controller.selectedTicket = ticketId;
@ -178,8 +178,8 @@ describe('Route', () => {
controller.$.model = {refresh: () => {}};
controller.card = {reload: () => {}};
controller.$stateParamds = {id: 999};
spyOn(controller.$.model, 'refresh');
spyOn(controller.card, 'reload');
jest.spyOn(controller.$.model, 'refresh');
jest.spyOn(controller.card, 'reload');
let ticketId = 1;
controller.selectedTicket = ticketId;
@ -197,8 +197,8 @@ describe('Route', () => {
describe('guessPriority()', () => {
it('should perform a GET query then call both refresh and showSuccess methods', () => {
controller.$.model = {refresh: () => {}};
spyOn(controller.$.model, 'refresh');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$.model, 'refresh');
jest.spyOn(controller.vnApp, 'showSuccess');
controller.$stateParams = {id: 99};
const url = `Routes/${controller.$stateParams.id}/guessPriority/`;
@ -214,9 +214,9 @@ describe('Route', () => {
describe('showTicketDescriptor()', () => {
it('should call the descriptor show function after setting the parent and the ticket id', () => {
controller.$.ticketDescriptor = {show: () => {}};
spyOn(controller.$.ticketDescriptor, 'show');
jest.spyOn(controller.$.ticketDescriptor, 'show');
const event = {target: {}, preventDefault: () => {}};
spyOn(event, 'preventDefault');
jest.spyOn(event, 'preventDefault');
const ticketId = 999;
controller.showTicketDescriptor(event, ticketId);
@ -229,9 +229,9 @@ describe('Route', () => {
describe('showClientDescriptor()', () => {
it('should call the descriptor show method after setting the parent and the client id', () => {
controller.$.clientDescriptor = {show: () => {}};
spyOn(controller.$.clientDescriptor, 'show');
jest.spyOn(controller.$.clientDescriptor, 'show');
const event = {target: {}, preventDefault: () => {}};
spyOn(event, 'preventDefault');
jest.spyOn(event, 'preventDefault');
const clientId = 999;
controller.showClientDescriptor(event, clientId);
@ -244,9 +244,9 @@ describe('Route', () => {
describe('openPossibleTicketsDialog()', () => {
it('should call both refresh and show methods in posible tickets model and dialog', () => {
controller.$.possibleTicketsModel = {refresh: () => {}};
spyOn(controller.$.possibleTicketsModel, 'refresh');
jest.spyOn(controller.$.possibleTicketsModel, 'refresh');
controller.$.possibleTicketsDialog = {show: () => {}};
spyOn(controller.$.possibleTicketsDialog, 'show');
jest.spyOn(controller.$.possibleTicketsDialog, 'show');
controller.openPossibleTicketsDialog();
@ -258,7 +258,7 @@ describe('Route', () => {
describe('setTicketsRoute()', () => {
it('should perform a POST query to add tickets to the route', done => {
controller.$.possibleTicketsModel = {save: () => {}};
spyOn(controller.$.possibleTicketsModel, 'save').and.returnValue(Promise.resolve());
jest.spyOn(controller.$.possibleTicketsModel, 'save').mockReturnValue(Promise.resolve());
controller.$.model = {data: [
{id: 1, checked: false}
]};

View File

@ -23,14 +23,14 @@ describe('Ticket', () => {
describe('ticket() setter', () => {
it('should set ticket property and call onChangeClient() method', () => {
spyOn(controller, 'onChangeClient');
jest.spyOn(controller, 'onChangeClient');
controller.ticket = {id: 1, clientFk: 101};
expect(controller.onChangeClient).toHaveBeenCalledWith(101);
});
it(`should not call onChangeClient() method as the ticket doesn't have an ID`, () => {
spyOn(controller, 'onChangeClient');
jest.spyOn(controller, 'onChangeClient');
controller.ticket = {};
expect(controller.onChangeClient).not.toHaveBeenCalledWith();
@ -47,7 +47,7 @@ describe('Ticket', () => {
describe('clientId() setter', () => {
it('should set clientId property and call onChangeClient() method ', () => {
spyOn(controller, 'onChangeClient');
jest.spyOn(controller, 'onChangeClient');
controller.ticket = {id: 1, clientId: 101};
controller.clientId = 102;
@ -65,7 +65,7 @@ describe('Ticket', () => {
describe('addressId() setter', () => {
it('should set addressId property and call getShipped() method ', () => {
spyOn(controller, 'getShipped');
jest.spyOn(controller, 'getShipped');
controller.ticket.addressFk = 99;
controller.addressId = 100;
const landed = new Date();
@ -92,7 +92,7 @@ describe('Ticket', () => {
describe('warehouseId() setter', () => {
it('should set warehouseId property and call getShipped() method ', () => {
spyOn(controller, 'getShipped');
jest.spyOn(controller, 'getShipped');
controller.ticket.warehouseId = 1;
controller.warehouseId = 2;
const landed = new Date();
@ -120,7 +120,7 @@ describe('Ticket', () => {
describe('shipped() setter', () => {
it('should set shipped property and call getLanded() method ', () => {
spyOn(controller, 'getLanded');
jest.spyOn(controller, 'getLanded');
const shipped = new Date();
const expectedResult = {
shipped: shipped,
@ -145,7 +145,7 @@ describe('Ticket', () => {
describe('landed() setter', () => {
it('should set shipped property and call getShipped() method ', () => {
spyOn(controller, 'getShipped');
jest.spyOn(controller, 'getShipped');
const landed = new Date();
const expectedResult = {
landed: landed,
@ -170,7 +170,7 @@ describe('Ticket', () => {
describe('agencyModeId() setter', () => {
it('should set agencyModeId property and call getLanded() method', () => {
spyOn(controller, 'getLanded');
jest.spyOn(controller, 'getLanded');
const shipped = new Date();
const agencyModeId = 8;
const expectedResult = {
@ -186,7 +186,7 @@ describe('Ticket', () => {
});
it('should do nothing if attempting to set the same agencyMode id', () => {
spyOn(controller, 'getShipped');
jest.spyOn(controller, 'getShipped');
const landed = new Date();
const agencyModeId = 7;
const expectedResult = {
@ -213,7 +213,7 @@ describe('Ticket', () => {
describe('zoneId() setter', () => {
it('should set zoneId property and call onChangeZone() method ', () => {
const zoneId = 5;
spyOn(controller, 'onChangeZone');
jest.spyOn(controller, 'onChangeZone');
controller.ticket = {id: 1};
controller.zoneId = 5;
@ -222,7 +222,7 @@ describe('Ticket', () => {
it('should do nothing if attempting to set the same zone id', () => {
const zoneId = 5;
spyOn(controller, 'onChangeZone');
jest.spyOn(controller, 'onChangeZone');
controller.ticket = {id: 1, zoneFk: zoneId};
controller.zoneId = zoneId;

View File

@ -26,8 +26,8 @@
<vn-th style="text-align:center">Description</vn-th>
<vn-th number>Quantity</vn-th>
<vn-th number>Price (PPU)</vn-th>
<vn-th number>New price (PPU)</vn-th>
<vn-th number>Price difference</vn-th>
<vn-th number>New (PPU)</vn-th>
<vn-th number>Difference</vn-th>
</vn-tr>
</vn-thead>
<vn-tbody>

View File

@ -1,3 +1,4 @@
Price (PPU): Precio (Ud.)
New price (PPU): Nuevo precio (Ud.)
Price difference: Diferencia de precio
New (PPU): Nuevo (Ud.)
Difference: Diferencia
Charge difference to: Cargar diferencia a

View File

@ -22,7 +22,7 @@ describe('ticket Component vnTicketDescriptorPopover', () => {
it(`should not apply any changes if the received id is the same stored in _ticketFk`, () => {
controller.ticket = 'I exist!';
controller._ticketFk = 1;
spyOn(controller, 'getCard');
jest.spyOn(controller, 'getCard');
controller.ticketFk = 1;
expect(controller.ticket).toEqual('I exist!');
@ -33,7 +33,7 @@ describe('ticket Component vnTicketDescriptorPopover', () => {
it(`should set the received id into _ticketFk, set the ticket to null and then call getCard()`, () => {
controller.ticket = `Please don't`;
controller._ticketFk = 1;
spyOn(controller, 'getCard');
jest.spyOn(controller, 'getCard');
controller.ticketFk = 999;
expect(controller.ticket).toBeNull();
@ -44,7 +44,7 @@ describe('ticket Component vnTicketDescriptorPopover', () => {
describe('ticket()', () => {
it(`should save the ticket into _ticket and then call relocate()`, () => {
spyOn(controller.$.popover, 'relocate');
jest.spyOn(controller.$.popover, 'relocate');
controller.ticket = `i'm the ticket!`;
$timeout.flush();
@ -55,7 +55,7 @@ describe('ticket Component vnTicketDescriptorPopover', () => {
describe('show()', () => {
it(`should call the show()`, () => {
spyOn(controller.$.popover, 'show');
jest.spyOn(controller.$.popover, 'show');
controller.show();
expect(controller.$.popover.show).toHaveBeenCalledWith();

View File

@ -29,7 +29,7 @@ describe('Ticket Component vnTicketDescriptor', () => {
describe('showAddTurnDialog()', () => {
it('should call controller.$.addTurn.show()', () => {
controller.$.addTurn = {show: () => {}};
spyOn(controller.$.addTurn, 'show');
jest.spyOn(controller.$.addTurn, 'show');
controller.showAddTurnDialog();
expect(controller.$.addTurn.show).toHaveBeenCalledWith();
@ -39,7 +39,7 @@ describe('Ticket Component vnTicketDescriptor', () => {
describe('addTurn()', () => {
it('should make a query and call $.addTurn.hide() and vnApp.showSuccess()', () => {
controller.$.addTurn = {hide: () => {}};
spyOn(controller.$.addTurn, 'hide');
jest.spyOn(controller.$.addTurn, 'hide');
$httpBackend.expectPATCH(`TicketWeeklies`).respond();
controller.addTurn(1);
@ -52,7 +52,7 @@ describe('Ticket Component vnTicketDescriptor', () => {
describe('showDeleteTicketDialog()', () => {
it('should call vnApp.showError() if the ticket isnt editable', () => {
controller.ticket.tracking = {state: {alertLevel: 3}};
spyOn(controller.vnApp, 'showError');
jest.spyOn(controller.vnApp, 'showError');
controller.showDeleteTicketDialog();
expect(controller.vnApp.showError).toHaveBeenCalledWith('This ticket cant be deleted');
@ -61,7 +61,7 @@ describe('Ticket Component vnTicketDescriptor', () => {
it('should call deleteConfirmation.show() if the ticket is editable', () => {
controller.ticket.tracking = {state: {alertLevel: 0}};
controller.$.deleteConfirmation = {show: () => {}};
spyOn(controller.$.deleteConfirmation, 'show');
jest.spyOn(controller.$.deleteConfirmation, 'show');
controller.showDeleteTicketDialog();
expect(controller.$.deleteConfirmation.show).toHaveBeenCalledWith();
@ -70,8 +70,8 @@ describe('Ticket Component vnTicketDescriptor', () => {
describe('deleteTicket()', () => {
it('should make a query and call vnApp.showSuccess() if the response is accept', () => {
spyOn(controller.$state, 'go');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$state, 'go').mockReturnValue('ok');
jest.spyOn(controller.vnApp, 'showSuccess');
$httpBackend.expectPOST(`Tickets/2/setDeleted`).respond();
controller.deleteTicket('accept');
@ -90,7 +90,7 @@ describe('Ticket Component vnTicketDescriptor', () => {
};
const serializedParams = $httpParamSerializer(params);
let expectedPath = `api/report/delivery-note?${serializedParams}`;
spyOn(window, 'open');
jest.spyOn(window, 'open').mockReturnThis();
controller.showDeliveryNote();
expect(window.open).toHaveBeenCalledWith(expectedPath);
@ -99,7 +99,7 @@ describe('Ticket Component vnTicketDescriptor', () => {
describe('sendDeliveryNote()', () => {
it('should make a query and call vnApp.showMessage()', () => {
spyOn(controller.vnApp, 'showMessage');
jest.spyOn(controller.vnApp, 'showMessage');
const params = {
recipient: 'client@email',
@ -119,8 +119,8 @@ describe('Ticket Component vnTicketDescriptor', () => {
describe('makeInvoice()', () => {
it('should make a query and call $state.reload() method if the response is accept', () => {
spyOn(controller.$state, 'reload');
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$state, 'reload').mockReturnThis();
jest.spyOn(controller.vnApp, 'showSuccess');
$httpBackend.when('POST', 'Tickets/2/makeInvoice').respond();
$httpBackend.expect('POST', 'Tickets/2/makeInvoice').respond();
@ -134,7 +134,7 @@ describe('Ticket Component vnTicketDescriptor', () => {
describe('regenerateInvoice()', () => {
it('should make a query and show a success snackbar if the response is accept', () => {
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.vnApp, 'showSuccess');
$httpBackend.when('POST', 'InvoiceOuts/1/regenerate').respond();
$httpBackend.expect('POST', 'InvoiceOuts/1/regenerate').respond();
@ -148,8 +148,8 @@ describe('Ticket Component vnTicketDescriptor', () => {
describe('changeShipped()', () => {
it('should make a query and change the shipped hour if the response is accept', () => {
controller.ticket.id = 12;
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller, 'cardReload');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller, 'cardReload');
$httpBackend.when('POST', 'Tickets/12/updateEditableTicket').respond();
$httpBackend.expect('POST', 'Tickets/12/updateEditableTicket').respond();
@ -185,7 +185,7 @@ describe('Ticket Component vnTicketDescriptor', () => {
describe('canStowaway()', () => {
it('should make a query and return if the ticket can be stowawayed', () => {
controller.ticket.id = 16;
spyOn(controller, 'isTicketModule').and.callThrough();
jest.spyOn(controller, 'isTicketModule');
$httpBackend.when('GET', 'Tickets/16/canHaveStowaway').respond(true);
$httpBackend.expect('GET', 'Tickets/16/canHaveStowaway').respond(true);
controller.canStowaway();
@ -203,7 +203,7 @@ describe('Ticket Component vnTicketDescriptor', () => {
{state: {name: 'client'}}
];
};
spyOn(controller, 'isTicketModule').and.callThrough();
jest.spyOn(controller, 'isTicketModule');
controller.canStowaway();
expect(controller.canShowStowaway).toBeUndefined();
@ -213,7 +213,7 @@ describe('Ticket Component vnTicketDescriptor', () => {
describe('recalculateComponents()', () => {
it('should make a query and show a success snackbar', () => {
spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.vnApp, 'showSuccess');
$httpBackend.when('POST', 'Tickets/2/recalculateComponents').respond();
$httpBackend.expect('POST', 'Tickets/2/recalculateComponents').respond();

View File

@ -24,8 +24,8 @@ describe('Ticket', () => {
describe('client() setter', () => {
it('should set the ticket data and then call setDefaultParams() and getAllowedContentTypes()', () => {
spyOn(controller, 'setDefaultParams');
spyOn(controller, 'getAllowedContentTypes');
jest.spyOn(controller, 'setDefaultParams');
jest.spyOn(controller, 'getAllowedContentTypes');
controller.ticket = {
id: 15,
name: 'Bruce wayne'

View File

@ -19,8 +19,8 @@ describe('Ticket', () => {
describe('ticket() setter', () => {
it('should set the ticket data and then call setDefaultParams() and getAllowedContentTypes()', () => {
spyOn(controller, 'setDefaultParams');
spyOn(controller, 'getAllowedContentTypes');
jest.spyOn(controller, 'setDefaultParams');
jest.spyOn(controller, 'getAllowedContentTypes');
controller._ticket = undefined;
controller.ticket = {
id: 15

View File

@ -22,8 +22,8 @@ describe('Ticket', () => {
it('should make an HTTP Post query', () => {
const dmsId = 1;
const dmsIndex = 0;
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller.$.model, 'remove');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$.model, 'remove');
controller.ticketDms = [{dmsFk: 1}];
controller.dmsIndex = dmsIndex;

View File

@ -21,7 +21,7 @@ describe('Ticket', () => {
describe('returnDialog()', () => {
it('should perform a DELETE query', () => {
spyOn($scope.model, 'refresh');
jest.spyOn($scope.model, 'refresh');
let response = 'accept';
controller.expeditionId = 1;

View File

@ -69,7 +69,7 @@ describe('Component vnTicketIndex', () => {
describe('preview()', () => {
it('should show the dialog summary', () => {
controller.$.summary = {show: () => {}};
spyOn(controller.$.summary, 'show');
jest.spyOn(controller.$.summary, 'show');
let event = new MouseEvent('click', {
view: $window,

View File

@ -207,7 +207,7 @@ class Controller {
onStateChange(value) {
let params = {ticketFk: this.$state.params.id, stateFk: value};
this.$http.post(`TicketTrackings/changeState`, params).then(() => {
this.$http.post('TicketTrackings/changeState', params).then(() => {
this.card.reload();
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
}).finally(() => {

View File

@ -26,7 +26,7 @@ describe('Ticket', () => {
describe('edit() setter', () => {
it('should set _edit value and call setNewDiscount', () => {
spyOn(controller, 'setNewDiscount');
jest.spyOn(controller, 'setNewDiscount');
controller.edit = {id: 1};
expect(controller.edit).toEqual({id: 1});
@ -36,7 +36,7 @@ describe('Ticket', () => {
describe('bulk() setter', () => {
it('should set _bulk value and call setNewDiscount', () => {
spyOn(controller, 'setNewDiscount');
jest.spyOn(controller, 'setNewDiscount');
controller.bulk = true;
expect(controller.bulk).toEqual(true);
@ -68,7 +68,7 @@ describe('Ticket', () => {
controller.bulk = false;
controller.newDiscount = 15;
controller.edit = [{discount: 15}];
spyOn(controller.vnApp, 'showError');
jest.spyOn(controller.vnApp, 'showError');
controller.updateDiscount();
expect(controller.vnApp.showError).toHaveBeenCalledWith('There are no changes to save');

View File

@ -61,7 +61,7 @@ describe('Ticket', () => {
describe('createClaim()', () => {
it('should perform a query and call windows open', () => {
spyOn(controller.$state, 'go');
jest.spyOn(controller.$state, 'go');
const claim = {id: 1};
const sales = [{id: 1}, {id: 2}];
@ -112,7 +112,7 @@ describe('Ticket', () => {
let filter = {where: {code: 'OK'}, fields: ['id']};
filter = encodeURIComponent(JSON.stringify(filter));
let res = [{id: 3}];
spyOn(controller, 'onStateChange');
jest.spyOn(controller, 'onStateChange').mockReturnThis();
$httpBackend.whenGET(`States?filter=${filter}`).respond(res);
$httpBackend.expectGET(`Tickets/1/subtotal`).respond(200, 227.5);
@ -156,7 +156,7 @@ describe('Ticket', () => {
describe('unmarkAsReserved()', () => {
it('should call setReserved with false', () => {
spyOn(controller, 'setReserved');
jest.spyOn(controller, 'setReserved');
controller.unmarkAsReserved(false);
@ -166,7 +166,7 @@ describe('Ticket', () => {
describe('markAsReserved()', () => {
it('should call setReserved with true', () => {
spyOn(controller, 'setReserved');
jest.spyOn(controller, 'setReserved');
controller.markAsReserved(true);
@ -196,7 +196,7 @@ describe('Ticket', () => {
describe('showSMSDialog()', () => {
it('should open an SMS dialog with specified data', () => {
spyOn(controller.$scope.sms, 'open');
jest.spyOn(controller.$scope.sms, 'open');
controller.sales[0].checked = true;
controller.showSMSDialog();
@ -209,7 +209,7 @@ describe('Ticket', () => {
describe('updateQuantity()', () => {
it('should make a POST query saving sale quantity', () => {
spyOn(controller.$scope.watcher, 'updateOriginalData');
jest.spyOn(controller.$scope.watcher, 'updateOriginalData');
const data = {quantity: 10};
const sale = sales[0];
sale.quantity = 10;
@ -229,7 +229,7 @@ describe('Ticket', () => {
describe('updateConcept()', () => {
it('should make a POST query saving sale concept', () => {
spyOn(controller.$scope.watcher, 'updateOriginalData');
jest.spyOn(controller.$scope.watcher, 'updateOriginalData');
const data = {newConcept: 'My new weapon'};
const sale = sales[0];
sale.concept = 'My new weapon';
@ -249,7 +249,7 @@ describe('Ticket', () => {
describe('addSale()', () => {
it('should make a POST query adding a new sale', () => {
spyOn(controller.$scope.watcher, 'updateOriginalData');
jest.spyOn(controller.$scope.watcher, 'updateOriginalData');
const newSale = {itemFk: 4, quantity: 10};
const params = {itemId: 4, quantity: 10};
@ -280,7 +280,7 @@ describe('Ticket', () => {
describe('transferSales()', () => {
it('should transfer sales to a ticket', () => {
spyOn(controller, 'goToTicket');
jest.spyOn(controller, 'goToTicket');
controller.transfer = {
sales: [{id: 1, itemFk: 1}, {id: 2, itemFk: 4}]
};

View File

@ -26,7 +26,7 @@ describe('Ticket', () => {
let params = {destinationFk: 101, destination: 111111111, message: 'My SMS'};
controller.sms = {destinationFk: 101, destination: 111111111, message: 'My SMS'};
spyOn(controller.vnApp, 'showMessage');
jest.spyOn(controller.vnApp, 'showMessage');
$httpBackend.expect('POST', `Tickets/11/sendSms`, params).respond(200, params);
controller.onResponse('accept');
@ -38,7 +38,7 @@ describe('Ticket', () => {
it('should call onResponse without the destination and show an error snackbar', () => {
controller.sms = {destinationFk: 101, message: 'My SMS'};
spyOn(controller.vnApp, 'showError');
jest.spyOn(controller.vnApp, 'showError');
controller.onResponse('accept');
@ -48,7 +48,7 @@ describe('Ticket', () => {
it('should call onResponse without the message and show an error snackbar', () => {
controller.sms = {destinationFk: 101, destination: 222222222};
spyOn(controller.vnApp, 'showError');
jest.spyOn(controller.vnApp, 'showError');
controller.onResponse('accept');

View File

@ -14,7 +14,7 @@ describe('Ticket', () => {
}));
describe('ticket()', () => {
it('should perform a GET query and define summary property', () => {
it('should perform a GET query and define the summary property', () => {
let res = {id: 1, nickname: 'Batman'};
$httpBackend.when('GET', `Tickets/1/summary`).respond(200, res);
$httpBackend.expect('GET', `Tickets/1/summary`);

View File

@ -55,10 +55,10 @@ describe('Ticket', () => {
describe('onSubmit()', () => {
it('should POST the data, call updateOriginalData, reload, showSuccess and go functions', () => {
controller.params = {stateFk: 22, workerFk: 101};
spyOn(controller.card, 'reload');
spyOn(controller.$.watcher, 'updateOriginalData');
spyOn(controller.vnApp, 'showSuccess');
spyOn(controller.$state, 'go');
jest.spyOn(controller.card, 'reload');
jest.spyOn(controller.$.watcher, 'updateOriginalData');
jest.spyOn(controller.vnApp, 'showSuccess');
jest.spyOn(controller.$state, 'go');
$httpBackend.expectPOST(`TicketTrackings/changeState`, controller.params).respond({});
controller.onSubmit();

View File

@ -24,7 +24,7 @@ describe('ticket', () => {
describe('sales() setter', () => {
it('should set sales property on controller an then call applyVolumes() method', () => {
spyOn(controller, 'applyVolumes');
jest.spyOn(controller, 'applyVolumes');
controller.sales = [{id: 1}];
@ -34,7 +34,7 @@ describe('ticket', () => {
describe('volumes() setter', () => {
it('should set volumes property on controller an then call applyVolumes() method', () => {
spyOn(controller, 'applyVolumes');
jest.spyOn(controller, 'applyVolumes');
controller.volumes = [{id: 1}];

View File

@ -63,6 +63,10 @@ module.exports = Self => {
type: 'Number',
description: 'The totalEntries filter',
http: {source: 'query'}
}, {
arg: 'ref',
type: 'string',
description: 'The reference'
}
],
returns: {
@ -80,9 +84,11 @@ module.exports = Self => {
let where = buildFilter(ctx.args, (param, value) => {
switch (param) {
case 'search':
return {'t.id': value};
return /^\d+$/.test(value)
? {'t.id': value}
: {'t.ref': {like: `%${value}%`}};
case 'ref':
return {[param]: {regexp: value}};
return {'t.ref': {like: `%${value}%`}};
case 'shippedFrom':
return {'t.shipped': {gte: value}};
case 'shippedTo':

View File

@ -2,38 +2,53 @@ const app = require('vn-loopback/server/server');
describe('Travel filter()', () => {
it('should return the travel matching "search"', async() => {
let ctx = {
const ctx = {
args: {
search: 1
}
};
let result = await app.models.Travel.filter(ctx);
const result = await app.models.Travel.filter(ctx);
const firstRow = result[0];
expect(result.length).toEqual(1);
expect(result[0].id).toEqual(1);
expect(firstRow.id).toEqual(1);
});
it('should return the travel matching "search" by ref', async() => {
const ctx = {
args: {
search: 'third'
}
};
const result = await app.models.Travel.filter(ctx);
const firstRow = result[0];
expect(result.length).toEqual(1);
expect(firstRow.id).toEqual(3);
});
it('should return the travel matching "warehouse out"', async() => {
let ctx = {
const ctx = {
args: {
warehouseOutFk: 2
}
};
let result = await app.models.Travel.filter(ctx);
const result = await app.models.Travel.filter(ctx);
expect(result.length).toEqual(8);
});
it('should return the travel matching "total entries"', async() => {
let ctx = {
const ctx = {
args: {
totalEntries: 1,
}
};
let result = await app.models.Travel.filter(ctx);
const result = await app.models.Travel.filter(ctx);
expect(result.length).toEqual(5);
});
@ -44,14 +59,14 @@ describe('Travel filter()', () => {
from.setHours(0, 0, 0, 0);
to.setHours(23, 59, 59, 999);
to.setDate(to.getDate() + 1);
let ctx = {
const ctx = {
args: {
shippedFrom: from,
shippedTo: to
}
};
let result = await app.models.Travel.filter(ctx);
const result = await app.models.Travel.filter(ctx);
expect(result.length).toEqual(1);
});

View File

@ -16,8 +16,8 @@ describe('Travel Component vnTravelBasicData', () => {
describe('onSubmit()', () => {
it('should call the card reload method after the watcher submits', done => {
spyOn(controller.card, 'reload');
spyOn(controller.$.watcher, 'submit').and.returnValue(Promise.resolve());
jest.spyOn(controller.card, 'reload');
jest.spyOn(controller.$.watcher, 'submit').mockReturnValue(Promise.resolve());
controller.onSubmit().then(() => {
expect(controller.card.reload).toHaveBeenCalledWith();

View File

@ -19,7 +19,7 @@ describe('Travel Component vnTravelCreate', () => {
describe('onSubmit()', () => {
it(`should call submit() on the watcher then expect a callback`, () => {
spyOn($state, 'go');
jest.spyOn($state, 'go');
controller.onSubmit();

View File

@ -22,7 +22,7 @@ describe('travel Component vnTravelDescriptorPopover', () => {
it(`should not apply any changes if the received id is the same stored in _travelId`, () => {
controller.travel = 'I exist!';
controller._travelId = 1;
spyOn(controller, 'loadData');
jest.spyOn(controller, 'loadData');
controller.travelId = 1;
expect(controller.travel).toEqual('I exist!');
@ -33,7 +33,7 @@ describe('travel Component vnTravelDescriptorPopover', () => {
it(`should set the received id into _travelId, set the travel to null and then call loadData()`, () => {
controller.travel = `Please don't`;
controller._travelId = 1;
spyOn(controller, 'loadData');
jest.spyOn(controller, 'loadData');
controller.travelId = 999;
expect(controller.travel).toBeNull();
@ -44,7 +44,7 @@ describe('travel Component vnTravelDescriptorPopover', () => {
describe('show()', () => {
it(`should call the show()`, () => {
spyOn(controller.$.popover, 'show');
jest.spyOn(controller.$.popover, 'show');
controller.show();
expect(controller.$.popover.show).toHaveBeenCalledWith();

View File

@ -21,9 +21,9 @@ describe('component vnTravelSummary', () => {
describe('travel setter/getter', () => {
it('should return the travel and then call both getTravel() and getEntries()', () => {
spyOn(controller, 'getTravel');
spyOn(controller, 'getEntries');
spyOn(controller, 'getThermographs');
jest.spyOn(controller, 'getTravel');
jest.spyOn(controller, 'getEntries');
jest.spyOn(controller, 'getThermographs');
controller.travel = {id: 99};

View File

@ -23,8 +23,8 @@ describe('Ticket', () => {
describe('travel() setter', () => {
it('should set the travel data and then call setDefaultParams() and getAllowedContentTypes()', () => {
spyOn(controller, 'setDefaultParams');
spyOn(controller, 'getAllowedContentTypes');
jest.spyOn(controller, 'setDefaultParams');
jest.spyOn(controller, 'getAllowedContentTypes');
controller.travel = {
id: travelId
};

View File

@ -14,7 +14,7 @@
"name": {
"type": "String"
},
"rgb": {
"hexColour": {
"type": "String"
}
},

Some files were not shown because too many files have changed in this diff Show More