| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 | 
							- 'use strict';
 
- /**
 
-  *
 
-  *
 
-  * @author Mai
 
-  * @date
 
-  * @version
 
-  */
 
- const { app, assert } = require('egg-mock/bootstrap');
 
- const excel = require('node-xlsx');
 
- const xlsx = require('js-xlsx');
 
- const addData = {
 
-     name: 'test_deal_bills',
 
-     category: null,
 
- };
 
- const mockData = {};
 
- const _ = require('lodash');
 
- describe('test/app/service/deal_bills.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 testTender = yield ctx.service.tender.getDataByCondition({
 
-             name: addData.name,
 
-             project_id: ctx.session.sessionProject.id,
 
-         });
 
-         if (testTender) {
 
-             const result = yield ctx.service.tender.deleteTenderNoBackup(testTender.id);
 
-             assert(result);
 
-         }
 
-         // 新增测试用标段
 
-         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};
 
-         ctx.tender = mockData.tender;
 
-     });
 
-     // 导入 Excel数据(数据源:node-xlsx导入)
 
-     it('test import Excel data by node-xlsx', function* () {
 
-         const ctx = app.mockContext(mockData);
 
-         const file = app.baseDir  + '/test/app/test_file/deal-upload-test.xls';
 
-         const sheets = excel.parse(file);
 
-         const result = yield ctx.service.dealBills.importData(sheets[0], ctx.tender.id);
 
-         assert(result);
 
-         const bills = yield ctx.service.dealBills.getAllDataByCondition({where: {tender_id: ctx.tender.id}});
 
-         assert(bills.length === 1);
 
-         assert(bills[0].code === '101-1');
 
-         assert(bills[0].tender_id === ctx.tender.id);
 
-     });
 
-     // 导入 Excel数据(数据源:js-xlsx导入)
 
-     it('test import Excel data by js-xlsx', function* () {
 
-         const ctx = app.mockContext(mockData);
 
-         const file = app.baseDir  + '/test/app/test_file/deal-upload-test.xls';
 
-         const wb = xlsx.readFile(file);
 
-         const name = wb.SheetNames[0];
 
-         const sheetData = {
 
-             rows: xlsx.utils.sheet_to_json(wb.Sheets[name], {header: 1}),
 
-             merge: wb.Sheets[name]["!merges"],
 
-         };
 
-         const result = yield ctx.service.dealBills.importDataJsXlsx(sheetData, ctx.tender.id);
 
-         assert(result);
 
-         const bills = yield ctx.service.dealBills.getAllDataByCondition({where: {tender_id: ctx.tender.id}});
 
-         assert(bills.length === 1);
 
-         assert(bills[0].code === '101-1');
 
-         assert(bills[0].tender_id === ctx.tender.id);
 
-     });
 
-     // 导入 数据类型有误的excel(数据源:js-xlsx导入)
 
-     it('test import Excel data with Type-Error by js-xlsx', function* () {
 
-         const ctx = app.mockContext(mockData);
 
-         const file = app.baseDir  + '/test/app/test_file/deal-bills-typeError.xlsx';
 
-         const wb = xlsx.readFile(file);
 
-         const name = wb.SheetNames[0];
 
-         const sheetData = {
 
-             rows: xlsx.utils.sheet_to_json(wb.Sheets[name], {header: 1}),
 
-             merge: wb.Sheets[name]["!merges"],
 
-         };
 
-         try {
 
-             const result = yield ctx.service.dealBills.importDataJsXlsx(sheetData, ctx.tender.id);
 
-             assert(false);
 
-         } catch (err) {
 
-             assert(err);
 
-             assert(err.indexOf('数据类型有误') > 0);
 
-         }
 
-     });
 
-     // 导入 表头定义有误的excel(数据源:js-xlsx导入)
 
-     it('test import Excel data with Col-Define-Error by js-xlsx', function* () {
 
-         const ctx = app.mockContext(mockData);
 
-         const file = app.baseDir  + '/test/app/test_file/deal-bills-colDefError.xlsx';
 
-         const wb = xlsx.readFile(file);
 
-         const name = wb.SheetNames[0];
 
-         const sheetData = {
 
-             rows: xlsx.utils.sheet_to_json(wb.Sheets[name], {header: 1}),
 
-             merge: wb.Sheets[name]["!merges"],
 
-         };
 
-         try {
 
-             const result = yield ctx.service.dealBills.importDataJsXlsx(sheetData, ctx.tender.id);
 
-             assert(false);
 
-         } catch (err) {
 
-             assert(err);
 
-             assert(err.indexOf('表头定义有误') > 0);
 
-         }
 
-     });
 
-     // 导入 表头定义有误的excel(数据源:js-xlsx导入)
 
-     it('test import Excel data with Col-Define-Error by js-xlsx', function* () {
 
-         const ctx = app.mockContext(mockData);
 
-         const file = app.baseDir  + '/test/app/test_file/deal-bills-filterInvalidRows.xlsx';
 
-         const wb = xlsx.readFile(file);
 
-         const name = wb.SheetNames[0];
 
-         const sheetData = {
 
-             rows: xlsx.utils.sheet_to_json(wb.Sheets[name], {header: 1}),
 
-             merge: wb.Sheets[name]["!merges"],
 
-         };
 
-         const result = yield ctx.service.dealBills.importDataJsXlsx(sheetData, ctx.tender.id);
 
-         assert(result);
 
-         const bills = yield ctx.service.dealBills.getAllDataByCondition({where: {tender_id: ctx.tender.id}});
 
-         assert(bills.length === 98);
 
-     });
 
-     // 导入 存在数量单价为空的数据
 
-     it('test import Excel data by js-xlsx', function* () {
 
-         const ctx = app.mockContext(mockData);
 
-         const file = app.baseDir  + '/test/app/test_file/deal-bills-emptyCalcField.xls';
 
-         const wb = xlsx.readFile(file);
 
-         const name = wb.SheetNames[0];
 
-         const sheetData = {
 
-             rows: xlsx.utils.sheet_to_json(wb.Sheets[name], {header: 1}),
 
-             merge: wb.Sheets[name]["!merges"],
 
-         };
 
-         const result = yield ctx.service.dealBills.importDataJsXlsx(sheetData, ctx.tender.id);
 
-         assert(result);
 
-         const bills = yield ctx.service.dealBills.getAllDataByCondition({where: {tender_id: ctx.tender.id}});
 
-         assert(bills.length === 4);
 
-         assert(bills[0].code === '101-1');
 
-         assert(bills[0].unit_price === 20000);
 
-         assert(bills[0].quantity === 1);
 
-         assert(bills[0].total_price === 1000);
 
-         assert(bills[1].code === '101-2');
 
-         assert(bills[1].unit_price === 1200);
 
-         assert(!bills[1].quantity || bills[0].quantity === 1);
 
-         assert(bills[1].total_price === 200);
 
-         assert(bills[2].code === '101-3');
 
-         assert(!bills[2].unit_price || bills[0].unit_price === 0);
 
-         assert(bills[2].quantity === 2);
 
-         assert(bills[2].total_price === 4000);
 
-         assert(bills[3].code === '101-4');
 
-         assert(bills[3].unit_price === 2000);
 
-         assert(bills[3].quantity === 3);
 
-         assert(!bills[3].total_price || bills[0].total_price === 0);
 
-     });
 
- });
 
 
  |