const models = require('vn-loopback/server/server').models; describe('sale canEdit()', () => { it('should return true if the role is production regardless of the saleTrackings', async() => { const tx = await models.Sale.beginTransaction({}); try { const options = {transaction: tx}; const productionUserID = 49; const ctx = {req: {accessToken: {userId: productionUserID}}}; const sales = [25]; const result = await models.Sale.canEdit(ctx, sales, options); expect(result).toEqual(true); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); it('should return true if the role is not production and none of the sales has saleTracking', async() => { const tx = await models.Sale.beginTransaction({}); try { const options = {transaction: tx}; const salesPersonUserID = 18; const ctx = {req: {accessToken: {userId: salesPersonUserID}}}; const sales = [10]; const result = await models.Sale.canEdit(ctx, sales, options); expect(result).toEqual(true); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); it('should return false if any of the sales has a saleTracking record', async() => { const tx = await models.Sale.beginTransaction({}); try { const options = {transaction: tx}; const buyerId = 35; const ctx = {req: {accessToken: {userId: buyerId}}}; const sales = [31]; const result = await models.Sale.canEdit(ctx, sales, options); expect(result).toEqual(false); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); it('should return false if any of the sales is cloned', async() => { const tx = await models.Sale.beginTransaction({}); try { const options = {transaction: tx}; const buyerId = 35; const ctx = {req: {accessToken: {userId: buyerId}}}; const sales = [26]; const result = await models.Sale.canEdit(ctx, sales, options); expect(result).toEqual(false); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); it('should return true if any of the sales is cloned and has the correct role', async() => { const tx = await models.Sale.beginTransaction({}); // modify? try { const options = {transaction: tx}; const productionId = 49; const ctx = {req: {accessToken: {userId: productionId}}}; const sales = [26]; const result = await models.Sale.canEdit(ctx, sales, options); expect(result).toEqual(true); await tx.rollback(); } catch (e) { await tx.rollback(); throw e; } }); });