import './index.js'; import watcher from 'core/mocks/watcher'; import crudModel from 'core/mocks/crud-model'; describe('Supplier Component vnSupplierAccount', () => { let $scope; let controller; let $httpBackend; beforeEach(ngModule('supplier')); beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => { $httpBackend = _$httpBackend_; $scope = $rootScope.$new(); $scope.model = crudModel; $scope.watcher = watcher; $scope.bankEntity = { open: () => {} }; const $element = angular.element(''); controller = $componentController('vnSupplierAccount', {$element, $scope}); controller.supplierAccount = { supplierFk: 442, name: 'Verdnatura' }; })); describe('onAccept()', () => { it('should set the created bank entity id into the target account', () => { controller.supplierAccounts = [{}, {}, {}]; const data = { id: 999, index: 1 }; controller.onAccept(data); const targetAccount = controller.supplierAccounts[data.index]; expect(targetAccount.bankEntityFk).toEqual(data.id); }); }); describe('onSubmit()', () => { it(`should reload the card`, done => { controller.card = {reload: () => {}}; controller.$.payMethodToTransfer = {show: () => {}}; jest.spyOn(controller.$.payMethodToTransfer, 'show'); jest.spyOn(controller.$.model, 'save').mockReturnValue(new Promise(resolve => { return resolve({ id: 1234 }); })); jest.spyOn(controller.card, 'reload').mockReturnValue(new Promise(resolve => { return resolve({ id: 1234 }); })); controller.wireTransferFk = 'a'; controller.supplier = {payMethodFk: 'b'}; controller.onSubmit().then(() => { expect(controller.card.reload).toHaveBeenCalledWith(); expect(controller.$.payMethodToTransfer.show).toHaveBeenCalled(); done(); }).catch(done.fail); }); }); describe('setWireTransfer()', () => { it(`should make HTTP PATCH request to set wire transfer and call notifySaved`, () => { const supplierId = 1; const params = { id: supplierId, payMethodFk: 2 }; const response = { data: {id: 2} }; const uri = 'payMethods/findOne?filter=%7B%22where%22:%7B%22code%22:%22wireTransfer%22%7D%7D'; jest.spyOn($scope.watcher, 'notifySaved'); controller.$params.id = supplierId; controller.wireTransferFk = 2; controller.supplier = {payMethodFk: 1}; $httpBackend.expectGET(uri).respond(response); $httpBackend.expectPATCH(`Suppliers/${supplierId}`, params).respond(); controller.setWireTransfer(); $httpBackend.flush(); expect($scope.watcher.notifySaved).toHaveBeenCalledWith(); }); }); });