const models = require('vn-loopback/server/server').models; const LoopBackContext = require('loopback-context'); describe('loopback model Supplier-account', () => { describe('create', () => { const supplierId = 1; const bankEntityId = 2100; const activeCtx = { accessToken: {userId: 5}, http: { req: { headers: {origin: 'http://localhost'} } } }; activeCtx.http.req.__ = value => { return value; }; it('should throw an error when attempting to set an invalid iban account', async() => { let error; const expectedError = 'The IBAN does not have the correct format'; const iban = 'incorrect format'; try { await models.SupplierAccount.create( { supplierFk: supplierId, bankEntityFk: bankEntityId, iban: iban }); } catch (e) { error = e; expect(error.message).toContain(expectedError); } expect(error).toBeDefined(); }); it('should create a valid supplier account', async() => { const tx = await models.SupplierAccount.beginTransaction({}); try { const options = {transaction: tx}; const iban = 'ES91 2100 0418 4502 0005 1332'; spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ active: activeCtx }); const createdSupplierAccount = await models.SupplierAccount.create({ supplierFk: supplierId, bankEntityFk: bankEntityId, iban: iban }, options); expect(createdSupplierAccount.iban).toBe(iban); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); it('should change isPayMethodChecked to false', async() => { const tx = await models.SupplierAccount.beginTransaction({}); try { const options = {transaction: tx}; const iban = 'ES91 2100 0418 4502 0005 1332'; spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ active: activeCtx }); const supplierBefore = await models.Supplier.findById(supplierId, null, options); await models.SupplierAccount.create({ supplierFk: supplierId, bankEntityFk: bankEntityId, iban: iban }, options); const supplierAfter = await models.Supplier.findById(supplierId, null, options); expect(supplierBefore.isPayMethodChecked).toBeTruthy(); expect(supplierAfter.isPayMethodChecked).toBeFalsy(); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); }); });