Explorar o código

标段属性,单元测试

MaiXinRong %!s(int64=6) %!d(string=hai) anos
pai
achega
b9c001a699
Modificáronse 1 ficheiros con 205 adicións e 0 borrados
  1. 205 0
      test/app/service/tender_info.test.js

+ 205 - 0
test/app/service/tender_info.test.js

@@ -0,0 +1,205 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Mai
+ * @date
+ * @version
+ */
+
+'use strict';
+
+const { app, assert } = require('egg-mock/bootstrap');
+const addData = {
+    name: 'test_tenderInfo',
+    category: null,
+};
+const mockData = {};
+const TenderInfo = require('../../../app/const/tender_info.js');
+const _ = require('lodash');
+
+describe('test/app/service/tender.test.js', () => {
+
+    // 准备测试数据,新增测试标段
+    before(function* () {
+        const ctx = app.mockContext();
+        // 模拟登录session
+        const postData = {
+            account: '734406061@qq.com',
+            project: 'T201711273363',
+            project_password: 'mai654321',
+        };
+        ctx.session = {};
+        const loginResult = yield ctx.service.projectAccount.accountLogin(postData, 2);
+        assert(loginResult);
+        mockData.session = ctx.session;
+        // 移除测试数据
+        const tender1 = yield ctx.service.tender.getDataByCondition({
+            name: addData.name,
+            project_id: ctx.session.sessionProject.id,
+        });
+        if (tender1) {
+            const tRst = yield ctx.service.tender.db.delete(ctx.service.tender.tableName, {
+                id: tender1.id
+            });
+            assert(tRst.affectedRows === 1);
+            const lRst = yield ctx.service.ledger.db.delete(ctx.service.ledger.tableName, {
+                tender_id: tender1.id
+            });
+            assert(lRst.affectedRows === 53);
+            const pRst = yield ctx.service.pay.db.delete(ctx.service.pay.tableName, {
+                tid: tender1.id
+            });
+            assert(pRst.affectedRows === 5);
+            const iRst = yield ctx.service.tenderInfo.db.delete(ctx.service.tenderInfo.tableName, {
+                tid: tender1.id
+            });
+            assert(iRst.affectedRows === 5);
+        }
+        // 新增测试用标段
+        const result = yield ctx.service.tender.add(addData);
+        assert(result);
+        const tender = yield ctx.service.tender.getDataByCondition({
+            name: addData.name,
+            project_id: ctx.session.sessionProject.id,
+        });
+        mockData.tender = {id: tender.id, data: tender};
+    });
+    // 移除测试数据
+    after(function* () {
+        const ctx = app.mockContext(mockData);
+        // 移除测试数据
+        // const tender = yield ctx.service.tender.getDataByCondition({
+        //     name: addData.name,
+        //     project_id: ctx.session.sessionProject.id,
+        // });
+        // if (tender) {
+        //     const tRst = yield ctx.service.tender.db.delete(ctx.service.tender.tableName, {
+        //         id: tender.id
+        //     });
+        //     assert(tRst.affectedRows === 1);
+        //     const lRst = yield ctx.service.ledger.db.delete(ctx.service.ledger.tableName, {
+        //         tender_id: tender.id
+        //     });
+        //     assert(lRst.affectedRows === 53);
+        //     const pRst = yield ctx.service.pay.db.delete(ctx.service.pay.tableName, {
+        //         tid: tender.id
+        //     });
+        //     assert(pRst.affectedRows === 5);
+        // }
+    });
+
+    it('test getTenderInfo', function* () {
+        const ctx = app.mockContext(mockData);
+        mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(mockData.tender.id);
+        for (const field in TenderInfo.parseInfo) {
+            assert(_.isEqual(TenderInfo.defaultInfo[field], mockData.tender.info[field]));
+        }
+    });
+
+    it('test saveTenderInfo 标段属性',function* () {
+        const ctx = app.mockContext(mockData);
+
+        const dealInfo = JSON.parse(JSON.stringify(ctx.tender.info.deal_info));
+        dealInfo.buildName = 'testBuildName';
+        dealInfo.dealCode = 'testDealCode';
+        dealInfo.dealName = 'testDealName';
+
+        const unit = JSON.parse(JSON.stringify(ctx.tender.info.construction_unit));
+        unit.build.company = '建设单位';
+        unit.build.corporation = '张三';
+        unit.build.date = '2019/06/10';
+        unit.contract1.company = '承包单位1';
+        unit.contract1.corporation = '李四';
+        unit.contract1.date = '2019/06/11';
+        unit.contract2.company = '承包单位2';
+        unit.contract2.corporation = '王五';
+        unit.contract2.date = '2019/06/11';
+        unit.supervision1.company = '监理单位1';
+        unit.supervision1.corporation = '路人甲';
+        unit.supervision1.date = '2019/06/12';
+        unit.supervision2.company = '监理单位1';
+        unit.supervision2.corporation = '友人A';
+        unit.supervision2.date = '2019/06/12';
+
+        const param = JSON.parse(JSON.stringify(ctx.tender.info.tech_param));
+        param.loadLevel = 1;
+        param.loadLength = 3.5;
+        param.startPeg = 'K0+000';
+        param.endPeg = 'k3+500';
+        param.laneCount = 4;
+        param.dealPeriod = '2019年3月~2020年3月';
+        param.startDate = '2019/3/20';
+        param.planEndDate = '2020/3/5';
+        yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {
+            deal_info: dealInfo,
+            construction_unit: unit,
+            tech_param: param,
+        });
+        mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
+        assert(_.isEqual(mockData.tender.info.deal_info, dealInfo));
+        assert(_.isEqual(mockData.tender.info.construction_unit, unit));
+        assert(_.isEqual(mockData.tender.info.tech_param, param));
+    });
+
+    it('test saveTenderInfo 清单精度', function* () {
+        const ctx = app.mockContext(mockData);
+
+        const precision = JSON.parse(JSON.stringify(ctx.tender.info.precision));
+        precision.other.value = 4;
+        yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {precision: precision});
+        mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
+        assert(mockData.tender.info.precision.other.value === 4);
+    });
+
+    it('test saveTenderInfo 合同参数', function* () {
+        const ctx = app.mockContext(mockData);
+
+        const param = JSON.parse(JSON.stringify(ctx.tender.info.deal_param));
+        param.contractPrice = 20000000;
+        param.zanLiePrice = 100000;
+        param.startAdvance = 200000;
+        param.materialAdvance = 150000;
+        yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {deal_param: param});
+        mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
+        assert(_.isEqual(mockData.tender.info.deal_param, param));
+    });
+
+    it('test saveTenderInfo 小数位数', function* () {
+        const ctx = app.mockContext(mockData);
+
+        const decimal = JSON.parse(JSON.stringify(ctx.tender.info.decimal));
+        decimal.up = 3;
+        decimal.tp = 2;
+        decimal.pay = true;
+        decimal.payTp = 4;
+        yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {decimal: decimal});
+        mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
+        assert(_.isEqual(mockData.tender.info.decimal, decimal));
+    });
+
+    it('test saveTenderInfo 显示设置', function* () {
+        const ctx = app.mockContext(mockData);
+
+        const display = JSON.parse(JSON.stringify(ctx.tender.info.display));
+        display.ledger.dgnQty = true;
+        yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {display: display});
+        mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
+        assert(_.isEqual(mockData.tender.info.display, display));
+    });
+
+    it('test saveTenderInfo 章节设置', function* () {
+        const ctx = app.mockContext(mockData);
+
+        const chapter = JSON.parse(JSON.stringify(ctx.tender.info.chapter));
+        const chapterCode = ['100', '200', '300', '400', '500', '600', '700', '800', '900', '1000', '1100', '1200', '1300'];
+        for (const code of chapterCode) {
+            const data = _.find(chapter, {code: code});
+            data.name = data.name + '1';
+        }
+        yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {chapter: chapter});
+        mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
+        assert(_.isEqual(mockData.tender.info.chapter, chapter));
+    });
+});