import './index.js'; import watcher from 'core/mocks/watcher'; import crudModel from 'core/mocks/crud-model'; describe('InvoiceIn', () => { describe('Component tax', () => { let controller; let $scope; let vnApp; let $httpBackend; beforeEach(ngModule('invoiceIn')); beforeEach(inject(($componentController, $rootScope, _vnApp_, _$httpBackend_) => { $httpBackend = _$httpBackend_; vnApp = _vnApp_; jest.spyOn(vnApp, 'showError'); $scope = $rootScope.$new(); $scope.model = crudModel; $scope.watcher = watcher; const $element = angular.element(''); controller = $componentController('vnInvoiceInTax', {$element, $scope}); controller.$.model = crudModel; controller.invoiceIn = {id: 1}; })); describe('taxRate()', () => { it('should set tax rate with the Sage tax type value', () => { const taxRateSelection = { rate: 21 }; const invoiceInTax = { taxableBase: 200 }; const taxRate = controller.taxRate(invoiceInTax, taxRateSelection); expect(taxRate).toEqual(42); }); }); describe('onSubmit()', () => { it('should make HTTP POST request to save tax values', () => { controller.card = {reload: () => {}}; jest.spyOn($scope.watcher, 'check'); jest.spyOn($scope.watcher, 'notifySaved'); jest.spyOn($scope.watcher, 'updateOriginalData'); jest.spyOn(controller.card, 'reload'); jest.spyOn($scope.model, 'save'); controller.onSubmit(); expect($scope.model.save).toHaveBeenCalledWith(); expect($scope.watcher.updateOriginalData).toHaveBeenCalledWith(); expect($scope.watcher.check).toHaveBeenCalledWith(); expect($scope.watcher.notifySaved).toHaveBeenCalledWith(); expect(controller.card.reload).toHaveBeenCalledWith(); }); }); describe('onResponse()', () => { it('should return success message', () => { controller.expense = { code: 7050000005, isWithheld: 0, description: 'Test' }; const data = [{ id: controller.expense.code, isWithheld: controller.expense.isWithheld, name: controller.expense.description }]; jest.spyOn(controller.vnApp, 'showSuccess'); $httpBackend.expect('POST', `Expenses`, data).respond(); controller.onResponse(); $httpBackend.flush(); expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Expense saved!'); }); it('should return an error if code is empty', () => { controller.expense = { code: null, isWithheld: 0, description: 'Test' }; jest.spyOn(controller.vnApp, 'showError'); controller.onResponse(); expect(controller.vnApp.showError).toHaveBeenCalledWith(`The code can't be empty`); }); it('should return an error if description is empty', () => { controller.expense = { code: 7050000005, isWithheld: 0, description: null }; jest.spyOn(controller.vnApp, 'showError'); controller.onResponse(); expect(controller.vnApp.showError).toHaveBeenCalledWith(`The description can't be empty`); }); }); }); });