UNPKG

wistroni40-bnft

Version:

Benefit platform parameters publish job template

161 lines (137 loc) 3.79 kB
/** * 專案名稱: @wistroni40/bnft * 部門代號: ML8100 * 檔案說明: 抽象效益計算範本單元測試 * @CREATE Fri Jan 22 2021 上午11:26:40 * @author Steve Y Lin * @contact Steve_Y_Lin@wistron.com #1342 * ----------------------------------------------------------------------------- * @NOTE */ /* eslint-disable */ import * as should from 'should'; import * as sinon from 'sinon'; import { Server } from '../../src/api'; import { BenefitPlantEntity, BenefitQueryModel, Bnft } from './../../src/bnft'; import { BnftMock, BnftMockAllPlant, BNFT_CONF, BNFT_PARAM1, BNFT_PARAM2, BNFT_SAVING, } from './../mock'; /** * 抽象效益計算範本單元測試 */ describe('BnftTemplate', () => { /** * 效益計算範本 */ let bnft: BnftMock; /** * 測試前準備 */ beforeEach(() => { Server.instance.stop(); bnft = new BnftMock(BNFT_CONF); }); /** * 測試過濾無須或異常的廠別,該廠別要計算 */ it(`filterPlant: filter plant that need to calculate`, () => { // Arrange const plant = new BenefitPlantEntity({ plantcode: 'F232' }); // Act const result = bnft.filterPlant(plant); // Assert should(result).be.true(); }); /** * 測試過濾無須或異常的廠別,該廠別無須計算 */ it(`filterPlant: filter plant that not need to calculate`, () => { // Arrange const plant = new BenefitPlantEntity({ plantcode: 'F237' }); // Act const result = bnft.filterPlant(plant); // Assert should(result).be.false(); }); /** * 測試過濾無須或異常的廠別,所有廠別都要計算 */ it(`filterPlant: all plant need to calculate`, () => { // Arrange const benefit = new BnftMockAllPlant(BNFT_CONF); const plant = new BenefitPlantEntity({ plantcode: 'F237' }); // Act const result = benefit.filterPlant(plant); // Assert should(result).be.true(); }); /** * 測試建構效益參數資料 */ it(`buildPayload: get benefit saving data`, () => { // Arrange const timestamp = new Date(); const site = 'WKS'; const company = 'WSD'; const plant = 'WKS-P5'; const plantCode = 'F232'; const start = new Date(); const end = new Date(); const condition: BenefitQueryModel = { site, company, plant, plantCode, start, end, }; const param1 = BNFT_PARAM1; const param2 = BNFT_PARAM2; const expect = BNFT_SAVING; expect.evt_dt = timestamp.getTime(); expect.params = [param1, param2]; bnft.config = BNFT_CONF; sinon .stub(bnft, 'getBenefitParams') .withArgs(condition) .returns(Promise.resolve([param1, param2])); // Act const result = bnft.buildPayload(timestamp, condition); // Assert result.subscribe((benefit) => should(benefit).containDeep(expect)); }); /** * 測試取得效益參數 */ it(`getBenefitParams: get benefit paramters`, async () => { // Arrange const site = 'WKS'; const company = 'WSD'; const plant = 'WKS-P5'; const plantCode = 'F232'; const start = new Date(); const end = new Date(); const condition: BenefitQueryModel = { site, company, plant, plantCode, start, end, }; const expect: Bnft.Param[] = [BNFT_PARAM1]; sinon .stub(bnft, 'getBenefitParams') .withArgs(condition) .returns(Promise.resolve(expect)); // Act const result = await bnft.getBenefitParams(condition); // Assert should(result).containDeep(expect); }); });