ledger_audit.test.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. 'use strict';
  2. /**
  3. * 台账审批流程单元测试
  4. *
  5. * @author Mai
  6. * @date 2018/5/25
  7. * @version
  8. */
  9. const { app, assert } = require('egg-mock/bootstrap');
  10. const testTenderId = 3, testProjectId = 17;
  11. const addData = {
  12. name: 'test_ledger_audit',
  13. category: null,
  14. };
  15. const mockData = {};
  16. let times = 1;
  17. const auditConst = require('../../../app/const/audit');
  18. describe('test/app/service/ledger_audit.test.js', () => {
  19. // 准备测试数据
  20. before(function* () {
  21. const ctx = app.mockContext(mockData);
  22. // 模拟登录session
  23. const postData = {
  24. account: '734406061@qq.com',
  25. project: 'T201711273363',
  26. project_password: 'mai654321',
  27. };
  28. ctx.session = {};
  29. const loginResult = yield ctx.service.projectAccount.accountLogin(postData, 2);
  30. assert(loginResult);
  31. mockData.session = ctx.session;
  32. // 是否存在旧测试数据,存在则清除
  33. const tenderData = yield ctx.service.tender.getDataByCondition({
  34. user_id: ctx.session.sessionUser.accountId,
  35. name: addData.name,
  36. });
  37. if (tenderData) {
  38. const result = yield ctx.service.tender.deleteTenderNoBackup(tenderData.id);
  39. assert(result);
  40. }
  41. // 新建测试标段
  42. const addResult = yield ctx.service.tender.add(addData);
  43. assert(addResult);
  44. // 模拟打开标段
  45. mockData.tender = {};
  46. mockData.tender.data = yield ctx.service.tender.getDataByCondition({
  47. user_id: ctx.session.sessionUser.accountId,
  48. name: addData.name,
  49. });
  50. mockData.tender.id = mockData.tender.data.id;
  51. mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(mockData.tender.id);
  52. });
  53. /**
  54. * 流程 名称 id
  55. * 原报 CinYung 11
  56. */
  57. // 新增审核人
  58. it('test addAuditor', function* () {
  59. const ctx = app.mockContext(mockData);
  60. // 该测试项目存在4个用户,11/13/14/15
  61. const result1 = yield ctx.service.ledgerAudit.addAuditor(ctx.tender.id, 14, ctx.tender.data.ledger_times);
  62. assert(result1);
  63. const result2 = yield ctx.service.ledgerAudit.addAuditor(ctx.tender.id, 15, ctx.tender.data.ledger_times);
  64. assert(result2);
  65. });
  66. /**
  67. * 流程 名称 id
  68. * 原报 CinYung 11
  69. * 1审 陈特 14
  70. * 2审 付青青 15
  71. */
  72. // 查询审核人
  73. it('test getAuditor', function* () {
  74. const ctx = app.mockContext(mockData);
  75. const result = yield ctx.service.ledgerAudit.getAuditor(ctx.tender.id, 14, ctx.tender.data.ledger_times);
  76. assert(result);
  77. assert(result.audit_order === 1);
  78. assert(result.name === '陈特');
  79. });
  80. // 获取台账审核人列表
  81. it('test getAuditors', function* () {
  82. const ctx = app.mockContext(mockData);
  83. const result = yield ctx.service.ledgerAudit.getAuditors(ctx.tender.id, ctx.tender.data.ledger_times);
  84. assert(result);
  85. assert(result.length === 2);
  86. assert(result[0].audit_order === 1);
  87. assert(result[0].name === '陈特');
  88. assert(result[1].audit_order === 2);
  89. assert(result[1].name === '付青青');
  90. });
  91. // 获取New Order
  92. it('test getNewOrder', function* () {
  93. const ctx = app.mockContext(mockData);
  94. const result = yield ctx.service.ledgerAudit.getNewOrder(ctx.tender.id, ctx.tender.data.ledger_times);
  95. assert(result === 3);
  96. });
  97. it('test deleteAuditor', function* () {
  98. const ctx = app.mockContext(mockData);
  99. const result = yield ctx.service.ledgerAudit.deleteAuditor(ctx.tender.id, 14, ctx.tender.data.ledger_times);
  100. assert(result);
  101. const auditors = yield ctx.service.ledgerAudit.getAuditors(ctx.tender.id, ctx.tender.data.ledger_times);
  102. assert(auditors.length === 1);
  103. assert(auditors[0].audit_order === 1);
  104. assert(auditors[0].audit_id === 15);
  105. assert(auditors[0].name === '付青青');
  106. });
  107. /**
  108. * 流程 名称 id
  109. * 原报 CinYung 11
  110. * 1审 付青青 15
  111. */
  112. // 获取当前审核人 未上报
  113. it('test getCurAuditor 未上报', function* () {
  114. const ctx = app.mockContext(mockData);
  115. let curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, ctx.tender.data.ledger_times);
  116. assert(curAuditor === null);
  117. });
  118. // 上报
  119. it('test start', function* () {
  120. const ctx = app.mockContext(mockData);
  121. const result = yield ctx.service.ledgerAudit.start(ctx.tender.id, ctx.tender.data.ledger_times);
  122. assert(result);
  123. const tender = yield ctx.service.tender.getTender(ctx.tender.id);
  124. assert(tender.ledger_status === auditConst.ledger.status.checking);
  125. const auditors = yield ctx.service.ledgerAudit.getAuditors(ctx.tender.id, ctx.tender.data.ledger_times);
  126. assert(auditors);
  127. assert(auditors.length === 1);
  128. assert(auditors[0].status === auditConst.ledger.status.checking);
  129. });
  130. // 获取当前审核人 审批中
  131. it('test getCurAuditor 审批中', function* () {
  132. const ctx = app.mockContext(mockData);
  133. let curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, ctx.tender.data.ledger_times);
  134. assert(curAuditor);
  135. assert(curAuditor.name === '付青青');
  136. });
  137. // 审批退回
  138. it('test check 审批退回', function* () {
  139. const ctx = app.mockContext(mockData);
  140. yield ctx.service.ledgerAudit.check(ctx.tender.id, auditConst.ledger.status.checkNo, '审批不通过', ctx.tender.data.ledger_times);
  141. const auditors = yield ctx.service.ledgerAudit.getAuditors(ctx.tender.id, ctx.tender.data.ledger_times);
  142. assert(auditors);
  143. assert(auditors.length === 1);
  144. assert(auditors[0].status === auditConst.ledger.status.checkNo);
  145. mockData.tender.data = yield ctx.service.tender.getTender(ctx.tender.id);
  146. assert(mockData.tender.data.ledger_times === 1);
  147. assert(mockData.tender.data.ledger_status === auditConst.ledger.status.checkNo);
  148. });
  149. // 获取当前审核人 审批退回
  150. it('test getCurAuditor 审批退回', function* () {
  151. const ctx = app.mockContext(mockData);
  152. let curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, ctx.tender.data.ledger_times);
  153. assert(curAuditor === null);
  154. });
  155. it('test start 重新上报', function* () {
  156. const ctx = app.mockContext(mockData);
  157. const addRst = yield ctx.service.ledgerAudit.addAuditor(ctx.tender.id, 14, ctx.tender.data.ledger_times);
  158. assert(addRst);
  159. const auditors = yield ctx.service.ledgerAudit.getAuditors(ctx.tender.id, ctx.tender.data.ledger_times);
  160. assert(auditors);
  161. assert(auditors.length === 2);
  162. assert(auditors[0].audit_order === 1);
  163. assert(auditors[0].name === '付青青');
  164. assert(auditors[1].audit_order === 2);
  165. assert(auditors[1].name === '陈特');
  166. const result = yield ctx.service.ledgerAudit.start(ctx.tender.id, ctx.tender.data.ledger_times);
  167. assert(result);
  168. const tender = yield ctx.service.tender.getTender(ctx.tender.id);
  169. assert(tender.ledger_status === auditConst.ledger.status.checking);
  170. const curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, times);
  171. assert(curAuditor);
  172. assert(curAuditor.audit_order === 1);
  173. assert(curAuditor.name === '付青青');
  174. });
  175. it('test check 审批通过', function* () {
  176. const ctx = app.mockContext(mockData);
  177. yield ctx.service.ledgerAudit.check(ctx.tender.id, auditConst.ledger.status.checked, '审批通过', ctx.tender.data.ledger_times);
  178. const tender = yield ctx.service.tender.getTender(ctx.tender.id);
  179. assert(tender.ledger_status === auditConst.ledger.status.checking);
  180. const curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, times);
  181. assert(curAuditor);
  182. assert(curAuditor.audit_order === 2);
  183. assert(curAuditor.name === '陈特');
  184. });
  185. it('test check 终审 审批通过', function* () {
  186. const ctx = app.mockContext(mockData);
  187. yield ctx.service.ledgerAudit.check(ctx.tender.id, auditConst.ledger.status.checked, '审批通过', ctx.tender.data.ledger_times);
  188. const tender = yield ctx.service.tender.getTender(ctx.tender.id);
  189. assert(tender.ledger_status === auditConst.ledger.status.checked);
  190. const curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, times);
  191. assert(curAuditor === null);
  192. });
  193. it('test getCurAuditor 审批完成', function* () {
  194. const ctx = app.mockContext(mockData);
  195. let curAuditor = yield ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, ctx.tender.data.ledger_times);
  196. assert(curAuditor === null);
  197. });
  198. });