Selaa lähdekoodia

标段、台账审批,单元测试

MaiXinRong 6 vuotta sitten
vanhempi
commit
827cd26705

+ 3 - 3
app/service/tender.js

@@ -237,7 +237,7 @@ module.exports = app => {
                 status: this.status.DISABLE,
                 id,
             };
-            const result = this.db.update(this.tableName, updateData);
+            const result = await this.db.update(this.tableName, updateData);
 
             return result.affectedRows > 0;
         }
@@ -256,13 +256,13 @@ module.exports = app => {
                 await transaction.delete(this.ctx.service.ledgerAudit.tableName, {tender_id: id});
                 await transaction.delete(this.ctx.service.ledgerAudit.tableName + '_copy', {tender_id: id});
                 await transaction.delete(this.ctx.service.pos.tableName, {tid: id});
-                //await transaction.delete(this.ctx.service.pay.tableName, {tid: id});
+                await transaction.delete(this.ctx.service.pay.tableName, {tid: id});
                 await transaction.delete(this.ctx.service.stage.tableName, {tid: id});
                 await transaction.delete(this.ctx.service.stageAudit.tableName, {tid: id});
                 await transaction.delete(this.ctx.service.stageBills.tableName, {tid: id});
                 await transaction.delete(this.ctx.service.stagePos.tableName, {tid: id});
                 await transaction.delete(this.ctx.service.stageDetail.tableName, {tid: id});
-                //await transaction.delete(this.ctx.service.stagePay.tableName, {tid: id});
+                await transaction.delete(this.ctx.service.stagePay.tableName, {tid: id});
                 await transaction.delete(this.ctx.service.change.tableName, {tid: id});
                 await transaction.delete(this.ctx.service.changeAudit.tableName, {tid: id});
                 await transaction.delete(this.ctx.service.changeAuditList.tableName, {tid: id});

+ 0 - 20
app/service/tree_sort.js

@@ -1,20 +0,0 @@
-'use strict';
-
-/**
- * 树结构整理相关
- *
- * @author Mai
- * @date
- * @version
- */
-
-const Service = require('egg').Service;
-module.exports = app => {
-    class TreeSort extends Service {
-        fxExcelTreeSort(sheet) {
-
-        }
-    }
-
-    return TreeSort;
-}

+ 185 - 19
test/app/service/ledger_audit.test.js

@@ -10,42 +10,208 @@
 
 const { app, assert } = require('egg-mock/bootstrap');
 const testTenderId = 3, testProjectId = 17;
+const addData = {
+    name: 'test_ledger_audit',
+    category: null,
+};
+const mockData = {};
+let times = 1;
+const auditConst = require('../../../app/const/audit');
 
 describe('test/app/service/ledger_audit.test.js', () => {
-    let times = 1;
-    // 清理旧测试数据
-    it('clear history test data', function* () {
-        const ctx = app.mockContext();
-        const result = yield ctx.service.ledgerAudit.db.delete(ctx.service.ledgerAudit.tableName, { tender_id: testTenderId });
-        assert(result.affectedRows >= 0);
+    // 准备测试数据
+    before(function* () {
+        const ctx = app.mockContext(mockData);
+        // 模拟登录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 tenderData = yield ctx.service.tender.getDataByCondition({
+            user_id: ctx.session.sessionUser.accountId,
+            name: addData.name,
+        });
+        if (tenderData) {
+            const result = yield ctx.service.tender.deleteTenderNoBackup(tenderData.id);
+            assert(result);
+        }
+        // 新建测试标段
+        const addResult = yield ctx.service.tender.add(addData);
+        assert(addResult);
+        // 模拟打开标段
+        mockData.tender = {};
+        mockData.tender.data = yield ctx.service.tender.getDataByCondition({
+            user_id: ctx.session.sessionUser.accountId,
+            name: addData.name,
+        });
+        mockData.tender.id = mockData.tender.data.id;
+        mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(mockData.tender.id);
     });
+    /**
+     * 流程   名称          id
+     * 原报   CinYung      11
+     */
     // 新增审核人
     it('test addAuditor', function* () {
-        const ctx = app.mockContext();
-        const result = yield ctx.service.ledgerAudit.addAuditor(testTenderId, 11, times);
-        assert(result);
+        const ctx = app.mockContext(mockData);
+        // 该测试项目存在4个用户,11/13/14/15
+        const result1 = yield ctx.service.ledgerAudit.addAuditor(ctx.tender.id, 14, ctx.tender.data.ledger_times);
+        assert(result1);
+        const result2 = yield ctx.service.ledgerAudit.addAuditor(ctx.tender.id, 15, ctx.tender.data.ledger_times);
+        assert(result2);
     });
+    /**
+     * 流程   名称          id
+     * 原报   CinYung      11
+     * 1审    陈特         14
+     * 2审    付青青       15
+     */
     // 查询审核人
     it('test getAuditor', function* () {
-        const ctx = app.mockContext();
-        const result = yield ctx.service.ledgerAudit.getAuditor(testTenderId, 11, times);
+        const ctx = app.mockContext(mockData);
+        const result = yield ctx.service.ledgerAudit.getAuditor(ctx.tender.id, 14, ctx.tender.data.ledger_times);
         assert(result);
         assert(result.audit_order === 1);
-        assert(result.name === 'olymcai');
+        assert(result.name === '陈特');
     });
     // 获取台账审核人列表
     it('test getAuditors', function* () {
-        const ctx = app.mockContext();
-        const result = yield ctx.service.ledgerAudit.getAuditors(testTenderId, times);
+        const ctx = app.mockContext(mockData);
+        const result = yield ctx.service.ledgerAudit.getAuditors(ctx.tender.id, ctx.tender.data.ledger_times);
         assert(result);
-        assert(result.length === 1);
+        assert(result.length === 2);
         assert(result[0].audit_order === 1);
-        assert(result[0].name === 'olymcai');
+        assert(result[0].name === '陈特');
+        assert(result[1].audit_order === 2);
+        assert(result[1].name === '付青青');
     });
     // 获取New Order
     it('test getNewOrder', function* () {
-        const ctx = app.mockContext();
-        const result = yield ctx.service.ledgerAudit.getNewOrder(testTenderId, times);
-        assert(result === 2);
+        const ctx = app.mockContext(mockData);
+        const result = yield ctx.service.ledgerAudit.getNewOrder(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(result === 3);
+    });
+    it('test deleteAuditor', function* () {
+        const ctx = app.mockContext(mockData);
+        const result = yield ctx.service.ledgerAudit.deleteAuditor(ctx.tender.id, 14, ctx.tender.data.ledger_times);
+        assert(result);
+        const auditors = yield ctx.service.ledgerAudit.getAuditors(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(auditors.length === 1);
+        assert(auditors[0].audit_order === 1);
+        assert(auditors[0].audit_id === 15);
+        assert(auditors[0].name === '付青青');
+    });
+    /**
+     * 流程   名称          id
+     * 原报   CinYung      11
+     * 1审    付青青        15
+     */
+    // 获取当前审核人 未上报
+    it('test getCurAuditor 未上报', function* () {
+        const ctx = app.mockContext(mockData);
+        let curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(curAuditor === null);
+    });
+    // 上报
+    it('test start', function* () {
+        const ctx = app.mockContext(mockData);
+        const result = yield ctx.service.ledgerAudit.start(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(result);
+
+        const tender = yield ctx.service.tender.getTender(ctx.tender.id);
+        assert(tender.ledger_status === auditConst.ledger.status.checking);
+
+        const auditors = yield ctx.service.ledgerAudit.getAuditors(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(auditors);
+        assert(auditors.length === 1);
+        assert(auditors[0].status === auditConst.ledger.status.checking);
+    });
+    // 获取当前审核人 审批中
+    it('test getCurAuditor 审批中', function* () {
+        const ctx = app.mockContext(mockData);
+        let curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(curAuditor);
+        assert(curAuditor.name === '付青青');
+    });
+    // 审批退回
+    it('test check 审批退回', function* () {
+        const ctx = app.mockContext(mockData);
+        yield ctx.service.ledgerAudit.check(ctx.tender.id, auditConst.ledger.status.checkNo, '审批不通过', ctx.tender.data.ledger_times);
+
+        const copyData = yield app.mysql.select(ctx.service.ledgerAudit.tableName + '_copy', {where: {tender_id: ctx.tender.id, times: ctx.tender.data.ledger_times}});
+        assert(copyData.length === 53);
+
+        const auditors = yield ctx.service.ledgerAudit.getAuditors(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(auditors);
+        assert(auditors.length === 1);
+        assert(auditors[0].status === auditConst.ledger.status.checkNo);
+
+        mockData.tender.data = yield ctx.service.tender.getTender(ctx.tender.id);
+        assert(mockData.tender.data.ledger_times === 1);
+        assert(mockData.tender.data.ledger_status === auditConst.ledger.status.checkNo);
+    });
+    // 获取当前审核人 审批退回
+    it('test getCurAuditor 审批退回', function* () {
+        const ctx = app.mockContext(mockData);
+        let curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(curAuditor === null);
+    });
+    it('test start 重新上报', function* () {
+        const ctx = app.mockContext(mockData);
+        const addRst = yield ctx.service.ledgerAudit.addAuditor(ctx.tender.id, 14, ctx.tender.data.ledger_times);
+        assert(addRst);
+
+        const auditors = yield ctx.service.ledgerAudit.getAuditors(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(auditors);
+        assert(auditors.length === 2);
+        assert(auditors[0].audit_order === 1);
+        assert(auditors[0].name === '付青青');
+        assert(auditors[1].audit_order === 2);
+        assert(auditors[1].name === '陈特');
+
+        const result = yield ctx.service.ledgerAudit.start(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(result);
+        const tender = yield ctx.service.tender.getTender(ctx.tender.id);
+        assert(tender.ledger_status === auditConst.ledger.status.checking);
+
+        const curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, times);
+        assert(curAuditor);
+        assert(curAuditor.audit_order === 1);
+        assert(curAuditor.name === '付青青');
+    });
+    it('test check 审批通过', function* () {
+        const ctx = app.mockContext(mockData);
+
+        yield ctx.service.ledgerAudit.check(ctx.tender.id, auditConst.ledger.status.checked, '审批通过', ctx.tender.data.ledger_times);
+
+        const tender = yield ctx.service.tender.getTender(ctx.tender.id);
+        assert(tender.ledger_status === auditConst.ledger.status.checking);
+
+        const curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, times);
+        assert(curAuditor);
+        assert(curAuditor.audit_order === 2);
+        assert(curAuditor.name === '陈特');
+    });
+    it('test check 终审 审批通过', function* () {
+        const ctx = app.mockContext(mockData);
+
+        yield ctx.service.ledgerAudit.check(ctx.tender.id, auditConst.ledger.status.checked, '审批通过', ctx.tender.data.ledger_times);
+
+        const tender = yield ctx.service.tender.getTender(ctx.tender.id);
+        assert(tender.ledger_status === auditConst.ledger.status.checked);
+
+        const curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, times);
+        assert(curAuditor === null);
+    });
+    it('test getCurAuditor 审批完成', function* () {
+        const ctx = app.mockContext(mockData);
+        let curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, ctx.tender.data.ledger_times);
+        assert(curAuditor === null);
     });
 });

+ 64 - 22
test/app/service/tender.test.js

@@ -38,27 +38,17 @@ describe('test/app/service/tender.test.js', () => {
         const loginResult = yield ctx.service.projectAccount.accountLogin(postData, 2);
         assert(loginResult);
         mockData.session = ctx.session;
-        // 移除以往测试脏数据
+        // 检查是否存在以往测试数据,存在则清除
         const tender = yield ctx.service.tender.getDataByCondition({
             name: renderbody.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);
+            const result = yield ctx.service.tender.deleteTenderNoBackup(tender.id);
+            assert(result);
         }
     });
-
+    // 新增标段
     it('test addTender', function* () {
         const ctx = app.mockContext(mockData);
         const result = yield ctx.service.tender.add(addData);
@@ -82,20 +72,72 @@ describe('test/app/service/tender.test.js', () => {
         payNode = _.find(payNodes, {ptype: PayConst.payType.sf});
         assert(payNode.name === '本期实付');
     });
-
-    it('test getinfo', function* () {
+    // 获取标段信息
+    it('test getTenderData', function* () {
         const ctx = app.mockContext(mockData);
-        mockData.data = yield ctx.service.tender.getDataById(testTenderId);
-        assert(mockData.data.id === testTenderId);
-        assert(mockData.data.name === addData.name);
+        const tender = yield ctx.service.tender.getDataById(testTenderId);
+        assert(tender.id === testTenderId);
+        assert(tender.name === addData.name);
     });
-
-    it('save test',function* () {
+    // 修改标段信息
+    it('test save',function* () {
         const ctx = app.mockContext(mockData);
         const result = yield ctx.service.tender.save(renderbody, testTenderId);
         assert(result);
         const data = yield ctx.service.tender.getTender(testTenderId);
         assert(data.name === renderbody.name);
-    })
+    });
+    // 假删除
+    it('test deleteTenderById', function* () {
+        const ctx = app.mockContext(mockData);
+        const result = yield ctx.service.tender.deleteTenderById(testTenderId);
+        assert(result);
+        const tender = yield ctx.service.tender.getTender(testTenderId);
+        assert(tender.status === ctx.service.tender.status.DISABLE);
+    });
+    // 真删除
+    it('test deleteTenderNoBackup', function* () {
+        const ctx = app.mockContext(mockData);
+        const result = yield ctx.service.tender.deleteTenderNoBackup(testTenderId);
+        assert(result);
+        let count;
+
+        count = yield ctx.service.tender.count({id: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.tenderInfo.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.ledger.count({tender_id: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.ledgerAudit.count({tender_id: testTenderId});
+        assert(count === 0);
+        count = yield app.mysql.count(ctx.service.ledgerAudit.tableName + '_copy', {tender_id: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.pos.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.pay.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.stage.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.stageAudit.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.stageBills.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.stagePos.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.stageDetail.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.stagePay.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.change.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.changeAudit.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.changeAuditList.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.changeCompany.count({tid: testTenderId});
+        assert(count === 0);
+        count = yield ctx.service.changeAtt.count({tid: testTenderId});
+        assert(count === 0);
+    });
 
 });