tender_info.test.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. 'use strict';
  10. const { app, assert } = require('egg-mock/bootstrap');
  11. const addData = {
  12. name: 'test_tenderInfo',
  13. category: null,
  14. };
  15. const mockData = {};
  16. const TenderInfo = require('../../../app/const/tender_info.js');
  17. const _ = require('lodash');
  18. describe('test/app/service/tender.test.js', () => {
  19. // 准备测试数据,新增测试标段
  20. before(function* () {
  21. const ctx = app.mockContext();
  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 tender1 = yield ctx.service.tender.getDataByCondition({
  34. name: addData.name,
  35. project_id: ctx.session.sessionProject.id,
  36. });
  37. if (tender1) {
  38. const tRst = yield ctx.service.tender.db.delete(ctx.service.tender.tableName, {
  39. id: tender1.id
  40. });
  41. assert(tRst.affectedRows === 1);
  42. const lRst = yield ctx.service.ledger.db.delete(ctx.service.ledger.tableName, {
  43. tender_id: tender1.id
  44. });
  45. assert(lRst.affectedRows === 53);
  46. const pRst = yield ctx.service.pay.db.delete(ctx.service.pay.tableName, {
  47. tid: tender1.id
  48. });
  49. assert(pRst.affectedRows === 5);
  50. const iRst = yield ctx.service.tenderInfo.db.delete(ctx.service.tenderInfo.tableName, {
  51. tid: tender1.id
  52. });
  53. assert(iRst.affectedRows === 1);
  54. }
  55. // 新增测试用标段
  56. const result = yield ctx.service.tender.add(addData);
  57. assert(result);
  58. const tender = yield ctx.service.tender.getDataByCondition({
  59. name: addData.name,
  60. project_id: ctx.session.sessionProject.id,
  61. });
  62. mockData.tender = {id: tender.id, data: tender};
  63. });
  64. // 移除测试数据
  65. after(function* () {
  66. const ctx = app.mockContext(mockData);
  67. // 移除测试数据
  68. // const tender = yield ctx.service.tender.getDataByCondition({
  69. // name: addData.name,
  70. // project_id: ctx.session.sessionProject.id,
  71. // });
  72. // if (tender) {
  73. // const tRst = yield ctx.service.tender.db.delete(ctx.service.tender.tableName, {
  74. // id: tender.id
  75. // });
  76. // assert(tRst.affectedRows === 1);
  77. // const lRst = yield ctx.service.ledger.db.delete(ctx.service.ledger.tableName, {
  78. // tender_id: tender.id
  79. // });
  80. // assert(lRst.affectedRows === 53);
  81. // const pRst = yield ctx.service.pay.db.delete(ctx.service.pay.tableName, {
  82. // tid: tender.id
  83. // });
  84. // assert(pRst.affectedRows === 5);
  85. // }
  86. });
  87. it('test getTenderInfo', function* () {
  88. const ctx = app.mockContext(mockData);
  89. mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(mockData.tender.id);
  90. for (const field in TenderInfo.parseInfo) {
  91. assert(_.isEqual(TenderInfo.defaultInfo[field], mockData.tender.info[field]));
  92. }
  93. });
  94. it('test saveTenderInfo 标段属性',function* () {
  95. const ctx = app.mockContext(mockData);
  96. const dealInfo = JSON.parse(JSON.stringify(ctx.tender.info.deal_info));
  97. dealInfo.buildName = 'testBuildName';
  98. dealInfo.dealCode = 'testDealCode';
  99. dealInfo.dealName = 'testDealName';
  100. const unit = JSON.parse(JSON.stringify(ctx.tender.info.construction_unit));
  101. unit.build.company = '建设单位';
  102. unit.build.corporation = '张三';
  103. unit.build.date = '2019/06/10';
  104. unit.contract1.company = '承包单位1';
  105. unit.contract1.corporation = '李四';
  106. unit.contract1.date = '2019/06/11';
  107. unit.contract2.company = '承包单位2';
  108. unit.contract2.corporation = '王五';
  109. unit.contract2.date = '2019/06/11';
  110. unit.supervision1.company = '监理单位1';
  111. unit.supervision1.corporation = '路人甲';
  112. unit.supervision1.date = '2019/06/12';
  113. unit.supervision2.company = '监理单位1';
  114. unit.supervision2.corporation = '友人A';
  115. unit.supervision2.date = '2019/06/12';
  116. const param = JSON.parse(JSON.stringify(ctx.tender.info.tech_param));
  117. param.loadLevel = 1;
  118. param.loadLength = 3.5;
  119. param.startPeg = 'K0+000';
  120. param.endPeg = 'k3+500';
  121. param.laneCount = 4;
  122. param.dealPeriod = '2019年3月~2020年3月';
  123. param.startDate = '2019/3/20';
  124. param.planEndDate = '2020/3/5';
  125. yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {
  126. deal_info: dealInfo,
  127. construction_unit: unit,
  128. tech_param: param,
  129. });
  130. mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
  131. assert(_.isEqual(mockData.tender.info.deal_info, dealInfo));
  132. assert(_.isEqual(mockData.tender.info.construction_unit, unit));
  133. assert(_.isEqual(mockData.tender.info.tech_param, param));
  134. });
  135. it('test saveTenderInfo 清单精度', function* () {
  136. const ctx = app.mockContext(mockData);
  137. const precision = JSON.parse(JSON.stringify(ctx.tender.info.precision));
  138. precision.other.value = 4;
  139. yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {precision: precision});
  140. mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
  141. assert(mockData.tender.info.precision.other.value === 4);
  142. });
  143. it('test saveTenderInfo 合同参数', function* () {
  144. const ctx = app.mockContext(mockData);
  145. const param = JSON.parse(JSON.stringify(ctx.tender.info.deal_param));
  146. param.contractPrice = 20000000;
  147. param.zanLiePrice = 100000;
  148. param.startAdvance = 200000;
  149. param.materialAdvance = 150000;
  150. yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {deal_param: param});
  151. mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
  152. assert(_.isEqual(mockData.tender.info.deal_param, param));
  153. });
  154. it('test saveTenderInfo 小数位数', function* () {
  155. const ctx = app.mockContext(mockData);
  156. const decimal = JSON.parse(JSON.stringify(ctx.tender.info.decimal));
  157. decimal.up = 3;
  158. decimal.tp = 2;
  159. decimal.pay = true;
  160. decimal.payTp = 4;
  161. yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {decimal: decimal});
  162. mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
  163. assert(_.isEqual(mockData.tender.info.decimal, decimal));
  164. });
  165. it('test saveTenderInfo 显示设置', function* () {
  166. const ctx = app.mockContext(mockData);
  167. const display = JSON.parse(JSON.stringify(ctx.tender.info.display));
  168. display.ledger.dgnQty = true;
  169. yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {display: display});
  170. mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
  171. assert(_.isEqual(mockData.tender.info.display, display));
  172. });
  173. it('test saveTenderInfo 章节设置', function* () {
  174. const ctx = app.mockContext(mockData);
  175. const chapter = JSON.parse(JSON.stringify(ctx.tender.info.chapter));
  176. const chapterCode = ['100', '200', '300', '400', '500', '600', '700', '800', '900', '1000', '1100', '1200', '1300'];
  177. for (const code of chapterCode) {
  178. const data = _.find(chapter, {code: code});
  179. data.name = data.name + '1';
  180. }
  181. yield ctx.service.tenderInfo.saveTenderInfo(ctx.tender.id, {chapter: chapter});
  182. mockData.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
  183. assert(_.isEqual(mockData.tender.info.chapter, chapter));
  184. });
  185. });