| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 | '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 === 1);        }        // 新增测试用标段        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));    });});
 |