|
@@ -9,6 +9,7 @@
|
|
|
|
|
|
const excel = require('node-xlsx');
|
|
|
const _ = require('lodash');
|
|
|
+const mockData = {};
|
|
|
|
|
|
/*const testNodeData = [
|
|
|
{ ledger_id: 1, ledger_pid: -1, order: 1, level: 1, full_path: '1', code: '1', is_leaf: false },
|
|
@@ -46,8 +47,6 @@ const testNodeData = [
|
|
|
{ id: 16, pid: 4, order: 1, level: 3, full_path: '1.4.16', code: '1-3-1', is_leaf: true },
|
|
|
{ id: 5, pid: 1, order: 4, level: 2, full_path: '1.5', code: '1-4', is_leaf: true },
|
|
|
];
|
|
|
-const testTenderId = 3;
|
|
|
-const testUserId = 2;
|
|
|
|
|
|
const { app, assert } = require('egg-mock/bootstrap');
|
|
|
const findById = function(nodes, Id) {
|
|
@@ -59,22 +58,55 @@ const findById = function(nodes, Id) {
|
|
|
|
|
|
describe('test/app/service/ledger.test.js', () => {
|
|
|
// 准备测试数据
|
|
|
- it('clear history test data', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
- const result = yield ctx.service.ledger.db.delete(ctx.service.ledger.tableName, { tender_id: testTenderId });
|
|
|
- const posResult = yield ctx.service.pos.db.delete(ctx.service.ledger.tableName, { tender_id: testTenderId });
|
|
|
+ // 准备测试数据,新增测试标段
|
|
|
+ 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;
|
|
|
+
|
|
|
+ // 模拟打开标段
|
|
|
+ mockData.tender = {};
|
|
|
+ const addData = {
|
|
|
+ name: 'test_ledger',
|
|
|
+ category: null,
|
|
|
+ };
|
|
|
+ const tenderData = yield ctx.service.tender.getDataByCondition({
|
|
|
+ user_id: ctx.session.sessionUser.accountId,
|
|
|
+ name: addData.name,
|
|
|
+ });
|
|
|
+ if (tenderData) {
|
|
|
+ mockData.tender.data = tenderData;
|
|
|
+ } else {
|
|
|
+ const addResult = yield ctx.service.tender.add(addData);
|
|
|
+ assert(addResult);
|
|
|
+ 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);
|
|
|
+ ctx.tender = mockData.tender;
|
|
|
+
|
|
|
+ // 清理旧测试数据
|
|
|
+ let result = yield ctx.service.ledger.db.delete(ctx.service.ledger.tableName, { tender_id: ctx.tender.id });
|
|
|
+ const posResult = yield ctx.service.pos.db.delete(ctx.service.ledger.tableName, { tender_id: ctx.tender.id });
|
|
|
assert(result.affectedRows >= 0 && posResult.affectedRows >= 0);
|
|
|
- });
|
|
|
- it('add test data(test add)', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ // 初始化测试基础数据
|
|
|
for (const data of testNodeData) {
|
|
|
- data.tender_id = testTenderId;
|
|
|
+ data.tender_id = ctx.tender.id;
|
|
|
}
|
|
|
- //const result = yield ctx.service.ledger.db.insert(ctx.service.ledger.tableName, testNodeData);
|
|
|
- //assert(result.affectedRows === testNodeData.length);
|
|
|
- const result = yield ctx.service.ledger.add(testNodeData, testTenderId);
|
|
|
+ result = yield ctx.service.ledger.add(testNodeData, ctx.tender.id);
|
|
|
assert(result);
|
|
|
- ctx.service.ledger.cache.set('tender_node_maxId:' + testTenderId, 16, 'EX', ctx.app.config.cacheTime);
|
|
|
+ ctx.service.ledger.cache.set('tender_node_maxId:' + ctx.tender.id, 16, 'EX', ctx.app.config.cacheTime);
|
|
|
});
|
|
|
/* 期望运行结果:
|
|
|
1
|
|
@@ -97,29 +129,29 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
|
|
|
// 测试R类方法
|
|
|
it('test getDataByTenderId', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 查询前4层节点
|
|
|
- const result1 = yield ctx.service.ledger.getDataByTenderId(testTenderId);
|
|
|
+ const result1 = yield ctx.service.ledger.getDataByTenderId(ctx.tender.id);
|
|
|
assert(result1.length === 12);
|
|
|
// 查询前3层节点
|
|
|
- const result2 = yield ctx.service.ledger.getDataByTenderId(testTenderId, 3);
|
|
|
+ const result2 = yield ctx.service.ledger.getDataByTenderId(ctx.tender.id, 3);
|
|
|
assert(result2.length === 10);
|
|
|
});
|
|
|
it('test getDataByNodeId', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 查询节点202-1
|
|
|
- const node = yield ctx.service.ledger.getDataByNodeId(testTenderId, 7);
|
|
|
+ const node = yield ctx.service.ledger.getDataByNodeId(ctx.tender.id, 7);
|
|
|
assert(node);
|
|
|
assert(node.code === '202-1');
|
|
|
assert(node.full_path === '1.2.6.7');
|
|
|
});
|
|
|
it('test getDataByNodeIds', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 查询节点202-1-a与201-1-b
|
|
|
- const result = yield ctx.service.ledger.getDataByNodeIds(testTenderId, [10, 9]);
|
|
|
+ const result = yield ctx.service.ledger.getDataByNodeIds(ctx.tender.id, [10, 9]);
|
|
|
assert(result.length === 2);
|
|
|
|
|
|
let node = findById(result, 10);
|
|
@@ -129,33 +161,33 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
assert(node.full_path === '1.2.6.7.9');
|
|
|
});
|
|
|
it('test getDataByIds', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 查询节点202-1
|
|
|
- const node = yield ctx.service.ledger.getDataByNodeId(testTenderId, 7);
|
|
|
+ const node = yield ctx.service.ledger.getDataByNodeId(ctx.tender.id, 7);
|
|
|
const result = yield ctx.service.ledger.getDataByIds([node.id]);
|
|
|
assert(result.length === 1);
|
|
|
assert(node.code === result[0].code);
|
|
|
assert(node.full_path === result[0].full_path);
|
|
|
});
|
|
|
it('test getLastChildData', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 查询节点202-1最后一个子节点
|
|
|
- const result = yield ctx.service.ledger.getLastChildData(testTenderId, 7);
|
|
|
+ const result = yield ctx.service.ledger.getLastChildData(ctx.tender.id, 7);
|
|
|
assert(result.ledger_id === 10);
|
|
|
assert(result.full_path === '1.2.6.7.10');
|
|
|
});
|
|
|
it('test getDataByParentAndOrder', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 查询节点202-1 第1子节点
|
|
|
- const result1 = yield ctx.service.ledger.getDataByParentAndOrder(testTenderId, 8, 1);
|
|
|
+ const result1 = yield ctx.service.ledger.getDataByParentAndOrder(ctx.tender.id, 8, 1);
|
|
|
assert(result1.ledger_id === 11);
|
|
|
assert(result1.full_path === '1.2.6.8.11');
|
|
|
|
|
|
// 查询节点1-1 第2/3子节点
|
|
|
- const result2 = yield ctx.service.ledger.getDataByParentAndOrder(testTenderId, 2, [2, 3]);
|
|
|
+ const result2 = yield ctx.service.ledger.getDataByParentAndOrder(ctx.tender.id, 2, [2, 3]);
|
|
|
assert(result2.length === 2);
|
|
|
|
|
|
let node = findById(result2, 13);
|
|
@@ -167,10 +199,10 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
assert(node.code === '1-1-3');
|
|
|
});
|
|
|
it('test getChildrenByParentId', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 查询节点202-1最后一个子节点
|
|
|
- const result = yield ctx.service.ledger.getChildrenByParentId(testTenderId, 8);
|
|
|
+ const result = yield ctx.service.ledger.getChildrenByParentId(ctx.tender.id, 8);
|
|
|
assert(result.length === 2);
|
|
|
|
|
|
let node = findById(result, 11);
|
|
@@ -182,10 +214,10 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
assert(node.full_path === '1.2.6.8.12');
|
|
|
});
|
|
|
it('test getNextsData', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 查询节点1-1-1的全部子节点
|
|
|
- const result = yield ctx.service.ledger.getNextsData(testTenderId, 2, 1);
|
|
|
+ const result = yield ctx.service.ledger.getNextsData(ctx.tender.id, 2, 1);
|
|
|
assert(result.length === 2);
|
|
|
|
|
|
let node = findById(result, 13);
|
|
@@ -197,10 +229,10 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
assert(node.code === '1-1-3');
|
|
|
});
|
|
|
it('test getDataByFullPath', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 查询节点202-2及其子节点
|
|
|
- const result = yield ctx.service.ledger.getDataByFullPath(testTenderId, '1.2.6.8%');
|
|
|
+ const result = yield ctx.service.ledger.getDataByFullPath(ctx.tender.id, '1.2.6.8%');
|
|
|
assert(result.length === 3);
|
|
|
|
|
|
let node = findById(result, 8);
|
|
@@ -216,26 +248,26 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
assert(node.full_path === '1.2.6.8.12');
|
|
|
|
|
|
// 查询1-1-1的子孙节点
|
|
|
- const result1 = yield ctx.service.ledger.getDataByFullPath(testTenderId, '1.2.6.%');
|
|
|
+ const result1 = yield ctx.service.ledger.getDataByFullPath(ctx.tender.id, '1.2.6.%');
|
|
|
assert(result1.length === 6);
|
|
|
});
|
|
|
it('test getFullLevelDataByFullPath', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 查询202-2-c及其全部父节点
|
|
|
- const result1 = yield ctx.service.ledger.getFullLevelDataByFullPath(testTenderId, '1.2.6.8.11');
|
|
|
+ const result1 = yield ctx.service.ledger.getFullLevelDataByFullPath(ctx.tender.id, '1.2.6.8.11');
|
|
|
assert(result1.length === 5);
|
|
|
|
|
|
- const result2 = yield ctx.service.ledger.getFullLevelDataByFullPath(testTenderId, ['1.2.6.8.11', '1.2.6.7.9']);
|
|
|
+ const result2 = yield ctx.service.ledger.getFullLevelDataByFullPath(ctx.tender.id, ['1.2.6.8.11', '1.2.6.7.9']);
|
|
|
assert(result2.length === 7);
|
|
|
});
|
|
|
|
|
|
// 测试CUD类方法
|
|
|
// 基本树结构操作
|
|
|
it('test addNode', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 选中1-1-1,插入节点
|
|
|
- const resultData = yield ctx.service.ledger.addNode(testTenderId, 6);
|
|
|
+ const resultData = yield ctx.service.ledger.addNode(ctx.tender.id, 6);
|
|
|
assert(resultData.create.length === 1);
|
|
|
assert(resultData.update.length === 2);
|
|
|
assert(resultData.create[0].is_leaf === 1);
|
|
@@ -261,9 +293,9 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test deleteNode', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 选中202-1,删除节点
|
|
|
- const resultData = yield ctx.service.ledger.deleteNode(testTenderId, 7);
|
|
|
+ const resultData = yield ctx.service.ledger.deleteNode(ctx.tender.id, 7);
|
|
|
assert(resultData.delete.length === 3);
|
|
|
assert(resultData.update.length === 1);
|
|
|
});
|
|
@@ -284,9 +316,9 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test upMoveNode', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 选中202-2-e上移
|
|
|
- const resultData = yield ctx.service.ledger.upMoveNode(testTenderId, 12);
|
|
|
+ const resultData = yield ctx.service.ledger.upMoveNode(ctx.tender.id, 12);
|
|
|
resultData.update.sort(function(x, y) {
|
|
|
return x.order - y.order;
|
|
|
});
|
|
@@ -310,9 +342,9 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test downMoveNode', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 选中202-2-e下移
|
|
|
- const resultData = yield ctx.service.ledger.downMoveNode(testTenderId, 12);
|
|
|
+ const resultData = yield ctx.service.ledger.downMoveNode(ctx.tender.id, 12);
|
|
|
resultData.update.sort(function(x, y) {
|
|
|
return x.order - y.order;
|
|
|
});
|
|
@@ -336,9 +368,9 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test upLevelNode', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 选中 1-1-2 升级
|
|
|
- const resultData = yield ctx.service.ledger.upLevelNode(testTenderId, 13);
|
|
|
+ const resultData = yield ctx.service.ledger.upLevelNode(ctx.tender.id, 13);
|
|
|
assert(resultData);
|
|
|
assert(resultData.update.length === 6);
|
|
|
|
|
@@ -377,9 +409,9 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test downLevelNode', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 选中1-3 降级
|
|
|
- const resultData = yield ctx.service.ledger.downLevelNode(testTenderId, 4);
|
|
|
+ const resultData = yield ctx.service.ledger.downLevelNode(ctx.tender.id, 4);
|
|
|
// 1-2/1-3/1-3-1/1-4修改
|
|
|
assert(resultData.update.length === 4);
|
|
|
|
|
@@ -414,9 +446,9 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
*/
|
|
|
// 复制整块
|
|
|
it('test pasteBlock', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 选中1-2-1, 粘贴1-1-1和new
|
|
|
- const resultData = yield ctx.service.ledger.pasteBlock(testTenderId, 15, [6, 17]);
|
|
|
+ const resultData = yield ctx.service.ledger.pasteBlock(ctx.tender.id, 15, [6, 17]);
|
|
|
|
|
|
const ledger = resultData.ledger;
|
|
|
assert(ledger.create.length === 5);
|
|
@@ -456,13 +488,13 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
*/
|
|
|
// 增量计算
|
|
|
it('test updateInfo', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 修改new(id=17)的code 为 1-1-4
|
|
|
- const node = yield ctx.service.ledger.getDataByNodeId(testTenderId, 17);
|
|
|
+ const node = yield ctx.service.ledger.getDataByNodeId(ctx.tender.id, 17);
|
|
|
assert(node);
|
|
|
|
|
|
- const resultData = yield ctx.service.ledger.updateInfo(testTenderId, {
|
|
|
+ const resultData = yield ctx.service.ledger.updateInfo(ctx.tender.id, {
|
|
|
id: node.id,
|
|
|
tender_id: node.tender_id,
|
|
|
ledger_id: node.ledger_id,
|
|
@@ -492,15 +524,15 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test updateInfos', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 修改1-1-1(id=18)的code 为 1-2-2、修改new(id=22)的code 为 1-2-3
|
|
|
- const node1 = yield ctx.service.ledger.getDataByNodeId(testTenderId, 18);
|
|
|
+ const node1 = yield ctx.service.ledger.getDataByNodeId(ctx.tender.id, 18);
|
|
|
assert(node1);
|
|
|
- const node2 = yield ctx.service.ledger.getDataByNodeId(testTenderId, 22);
|
|
|
+ const node2 = yield ctx.service.ledger.getDataByNodeId(ctx.tender.id, 22);
|
|
|
assert(node2);
|
|
|
|
|
|
- const resultData = yield ctx.service.ledger.updateInfos(testTenderId, [{
|
|
|
+ const resultData = yield ctx.service.ledger.updateInfos(ctx.tender.id, [{
|
|
|
id: node1.id,
|
|
|
tender_id: node1.tender_id,
|
|
|
ledger_id: node1.ledger_id,
|
|
@@ -537,18 +569,18 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test updateCalc - update 1', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 计算需使用清单精度、小数位数
|
|
|
- ctx.tender = {id: testTenderId};
|
|
|
- ctx.tender.data = yield ctx.service.tender.getTender(testTenderId);
|
|
|
- ctx.tender.info = yield ctx.service.tenderInfo.getTenderInfo(testTenderId);
|
|
|
+ ctx.tender = {id: ctx.tender.id};
|
|
|
+ ctx.tender.data = yield ctx.service.tender.getTender(ctx.tender.id);
|
|
|
+ ctx.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
|
|
|
// 修改202-2-e(1-1-1下)(id=12)的quantity为2.00000001, unit_price位3.0000005
|
|
|
const qty = 2.00000001, fQty = ctx.helper.round(qty, ctx.tender.info.precision.other.value);
|
|
|
const up = 3.0000005, fUp = ctx.helper.round(up, ctx.tender.info.decimal.up);
|
|
|
const tp = 6.00000103, fTp = ctx.helper.times(fQty, fUp);
|
|
|
- const node1 = yield ctx.service.ledger.getDataByNodeId(testTenderId, 12);
|
|
|
+ const node1 = yield ctx.service.ledger.getDataByNodeId(ctx.tender.id, 12);
|
|
|
assert(node1);
|
|
|
- const resultData = yield ctx.service.ledger.updateCalc(testTenderId, {
|
|
|
+ const resultData = yield ctx.service.ledger.updateCalc(ctx.tender.id, {
|
|
|
id: node1.id,
|
|
|
tender_id: node1.tender_id,
|
|
|
ledger_id: node1.ledger_id,
|
|
@@ -583,11 +615,11 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test updateCalc - update N', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 计算需使用清单精度、小数位数
|
|
|
- ctx.tender = {id: testTenderId};
|
|
|
- ctx.tender.data = yield ctx.service.tender.getTender(testTenderId);
|
|
|
- ctx.tender.info = yield ctx.service.tenderInfo.getTenderInfo(testTenderId);
|
|
|
+ ctx.tender = {id: ctx.tender.id};
|
|
|
+ ctx.tender.data = yield ctx.service.tender.getTender(ctx.tender.id);
|
|
|
+ ctx.tender.info = yield ctx.service.tenderInfo.getTenderInfo(ctx.tender.id);
|
|
|
// 修改202-2-c(1-1-1下)(id=11)的quantity为4.00000025, unit_price为6.0000083
|
|
|
// 202-2-c(1-2-2下)(id=20)的quantity为2.0000001, unit_price为5.000065
|
|
|
// 202-2-e(1-2-2下)(id=21)的quantity为8.0000579, unit_price为4.0000086
|
|
@@ -606,14 +638,14 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
fTp.push(ctx.helper.times(fQty[i], fUp[i]));
|
|
|
}
|
|
|
|
|
|
- const node1 = yield ctx.service.ledger.getDataByNodeId(testTenderId, 11);
|
|
|
+ const node1 = yield ctx.service.ledger.getDataByNodeId(ctx.tender.id, 11);
|
|
|
assert(node1);
|
|
|
- const node2 = yield ctx.service.ledger.getDataByNodeId(testTenderId, 20);
|
|
|
+ const node2 = yield ctx.service.ledger.getDataByNodeId(ctx.tender.id, 20);
|
|
|
assert(node2);
|
|
|
- const node3 = yield ctx.service.ledger.getDataByNodeId(testTenderId, 21);
|
|
|
+ const node3 = yield ctx.service.ledger.getDataByNodeId(ctx.tender.id, 21);
|
|
|
assert(node3);
|
|
|
|
|
|
- const resultData = yield ctx.service.ledger.updateCalc(testTenderId, [{
|
|
|
+ const resultData = yield ctx.service.ledger.updateCalc(ctx.tender.id, [{
|
|
|
id: node1.id,
|
|
|
tender_id: node1.tender_id,
|
|
|
ledger_id: node1.ledger_id,
|
|
@@ -671,9 +703,9 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
*/
|
|
|
// 复制整块+实时计算
|
|
|
it('test pasteBlock - with Increment Calculate', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 选中1-1-4, 粘贴202-2(1-1-1下)
|
|
|
- const resultData = yield ctx.service.ledger.pasteBlock(testTenderId, 17, [8]);
|
|
|
+ const resultData = yield ctx.service.ledger.pasteBlock(ctx.tender.id, 17, [8]);
|
|
|
|
|
|
assert(resultData.ledger.create.length === 3);
|
|
|
assert(resultData.ledger.update.length === 0);
|
|
@@ -704,9 +736,9 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
*/
|
|
|
// 树结构基本操作+实时计算
|
|
|
it('test downLevel - with Increment Calculate', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
// 选中202-2(1-1-4后兄弟节点) 降级
|
|
|
- const resultData = yield ctx.service.ledger.downLevelNode(testTenderId, 23);
|
|
|
+ const resultData = yield ctx.service.ledger.downLevelNode(ctx.tender.id, 23);
|
|
|
assert(resultData.update.length === 4);
|
|
|
});
|
|
|
/* 期望运行结果:
|
|
@@ -734,8 +766,8 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test upLevel - with Increment Calculate', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
- yield ctx.service.ledger.pasteBlock(testTenderId, 23, [23]);
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
+ yield ctx.service.ledger.pasteBlock(ctx.tender.id, 23, [23]);
|
|
|
/* 期望运行结果:
|
|
|
1
|
|
|
├── 1-1
|
|
@@ -764,7 +796,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
// 选中202-2-c(1-1-4下)(id=23)升级
|
|
|
- const resultData = yield ctx.service.ledger.upLevelNode(testTenderId, 23);
|
|
|
+ const resultData = yield ctx.service.ledger.upLevelNode(ctx.tender.id, 23);
|
|
|
assert(resultData.update.length === 7);
|
|
|
});
|
|
|
/* 期望运行结果:
|
|
@@ -795,10 +827,10 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test deleteNode - with Increment Calculate', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 选中202-2-c(1-2-2下)(id=20),删除节点
|
|
|
- const resultData = yield ctx.service.ledger.deleteNode(testTenderId, 20);
|
|
|
+ const resultData = yield ctx.service.ledger.deleteNode(ctx.tender.id, 20);
|
|
|
assert(resultData.delete.length === 1);
|
|
|
assert(resultData.update.length === 1);
|
|
|
});
|
|
@@ -831,10 +863,10 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
// 从标准库添加数据
|
|
|
// 检查添加,直接添加为选中节点子节点
|
|
|
it('test addStdNode', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 选中1-1-4
|
|
|
- const selectData = yield ctx.service.ledger.getDataByCondition({ tender_id: testTenderId, code: '1-1-4' });
|
|
|
+ const selectData = yield ctx.service.ledger.getDataByCondition({ tender_id: ctx.tender.id, code: '1-1-4' });
|
|
|
assert(selectData);
|
|
|
// 从标准库中添加1-1-5
|
|
|
const condition1 = { list_id: 1, code: '1-1-5' };
|
|
@@ -843,7 +875,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
const stdData1 = yield ctx.service.stdChapter.getDataByDataId(1, libData1.chapter_id);
|
|
|
assert(stdData1);
|
|
|
assert(stdData1.id === libData1.id);
|
|
|
- const result1 = yield ctx.service.ledger.addStdNode(testTenderId, selectData.ledger_id, stdData1);
|
|
|
+ const result1 = yield ctx.service.ledger.addStdNode(ctx.tender.id, selectData.ledger_id, stdData1);
|
|
|
assert(result1);
|
|
|
assert(result1.create.length === 1);
|
|
|
assert(result1.update.length === 1);
|
|
@@ -877,7 +909,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
└── 1-4
|
|
|
*/
|
|
|
it('test addStdNodeWithParent', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 从标准库添加1-4-2-1
|
|
|
const condition1 = { list_id: 1, code: '1-4-2-1'};
|
|
@@ -886,7 +918,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
const stdData1 = yield ctx.service.stdChapter.getDataByDataId(1, libData1.chapter_id);
|
|
|
assert(stdData1);
|
|
|
assert(stdData1.id === libData1.id);
|
|
|
- const result1 = yield ctx.service.ledger.addStdNodeWithParent(testTenderId, stdData1, ctx.service.stdChapter);
|
|
|
+ const result1 = yield ctx.service.ledger.addStdNodeWithParent(ctx.tender.id, stdData1, ctx.service.stdChapter);
|
|
|
assert(result1);
|
|
|
assert(result1.create.length === 4);
|
|
|
assert(!result1.update || result1.update.length === 0);
|
|
@@ -898,7 +930,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
const stdData2 = yield ctx.service.stdChapter.getDataByDataId(1, libData2.chapter_id);
|
|
|
assert(stdData2);
|
|
|
assert(stdData2.id === libData2.id);
|
|
|
- const result2 = yield ctx.service.ledger.addStdNodeWithParent(testTenderId, stdData2, ctx.service.stdChapter);
|
|
|
+ const result2 = yield ctx.service.ledger.addStdNodeWithParent(ctx.tender.id, stdData2, ctx.service.stdChapter);
|
|
|
assert(result2);
|
|
|
assert(result2.create.length === 1);
|
|
|
assert(result2.update.length === 1);
|
|
@@ -911,7 +943,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
const stdData3 = yield ctx.service.stdChapter.getDataByDataId(1, libData3.chapter_id);
|
|
|
assert(stdData3);
|
|
|
assert(stdData3.id === libData3.id);
|
|
|
- const result3 = yield ctx.service.ledger.addStdNodeWithParent(testTenderId, stdData3, ctx.service.stdChapter);
|
|
|
+ const result3 = yield ctx.service.ledger.addStdNodeWithParent(ctx.tender.id, stdData3, ctx.service.stdChapter);
|
|
|
assert(result3);
|
|
|
assert(result3.create.length === 1);
|
|
|
assert(result3.create[0].order === 1);
|
|
@@ -952,17 +984,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
*/
|
|
|
// 批量插入
|
|
|
it('test batchInsertChild', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
- // 计算需使用清单精度、小数位数
|
|
|
- ctx.tender = {id: testTenderId};
|
|
|
- ctx.tender.data = yield ctx.service.tender.getTender(testTenderId);
|
|
|
- ctx.tender.info = yield ctx.service.tenderInfo.getTenderInfo(testTenderId);
|
|
|
- // pos需要记录createUserId
|
|
|
- ctx.session = {
|
|
|
- sessionUser: {
|
|
|
- accountId: testUserId,
|
|
|
- },
|
|
|
- };
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
const batchData = [
|
|
|
{
|
|
@@ -975,7 +997,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
},
|
|
|
];
|
|
|
// 选中1-1-3(id=14)
|
|
|
- const result = yield ctx.service.ledger.batchInsertChild(testTenderId, 14, batchData);
|
|
|
+ const result = yield ctx.service.ledger.batchInsertChild(ctx.tender.id, 14, batchData);
|
|
|
assert(result.ledger.create.length === 2);
|
|
|
let node = _.find(result.ledger.create, {name: 'A1'});
|
|
|
assert(node.quantity === 3);
|
|
@@ -1025,17 +1047,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
*/
|
|
|
// 批量插入
|
|
|
it('test batchInsertNext', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
- // 计算需使用清单精度、小数位数
|
|
|
- ctx.tender = {id: testTenderId};
|
|
|
- ctx.tender.data = yield ctx.service.tender.getTender(testTenderId);
|
|
|
- ctx.tender.info = yield ctx.service.tenderInfo.getTenderInfo(testTenderId);
|
|
|
- // pos需要记录createUserId
|
|
|
- ctx.session = {
|
|
|
- sessionUser: {
|
|
|
- accountId: testUserId,
|
|
|
- },
|
|
|
- };
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
const batchData = [
|
|
|
{
|
|
@@ -1048,7 +1060,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
},
|
|
|
];
|
|
|
// 选中1-1-3(id=14)
|
|
|
- const result = yield ctx.service.ledger.batchInsertNext(testTenderId, 14, batchData);
|
|
|
+ const result = yield ctx.service.ledger.batchInsertNext(ctx.tender.id, 14, batchData);
|
|
|
|
|
|
assert(result.ledger.create.length === 2);
|
|
|
let node = _.find(result.ledger.create, {name: 'A3'});
|
|
@@ -1106,25 +1118,25 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
|
|
|
// 测试统计类方法
|
|
|
it('test addUpChildren', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
// 统计202-2(id=23)前两个子节点的金额
|
|
|
- const result1 = yield ctx.service.ledger.addUpChildren(testTenderId, 23, 2, '<=');
|
|
|
+ const result1 = yield ctx.service.ledger.addUpChildren(ctx.tender.id, 23, 2, '<=');
|
|
|
assert(result1 && result1 === 30);
|
|
|
// 数据库不再存储父项金额,以下两个查询不能获得实际金额
|
|
|
// 统计202-2(id=23)后两个子节点的金额
|
|
|
- //const result2 = yield ctx.service.ledger.addUpChildren(testTenderId, 23, 2, '>=');
|
|
|
+ //const result2 = yield ctx.service.ledger.addUpChildren(ctx.tender.id, 23, 2, '>=');
|
|
|
//assert(result2 && result2.toFixed(8) == 36.00003676);
|
|
|
// 统计202-2(id=23)全部子节点的金额
|
|
|
- //const result3 = yield ctx.service.ledger.addUpChildren(testTenderId, 23, 0, '>');
|
|
|
+ //const result3 = yield ctx.service.ledger.addUpChildren(ctx.tender.id, 23, 0, '>');
|
|
|
//assert(result3 && result3.toFixed(8) == 60.00007146);
|
|
|
});
|
|
|
|
|
|
// 测试搜索类方法
|
|
|
it('test search', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
|
|
|
- const result = yield ctx.service.ledger.search(testTenderId, {
|
|
|
+ const result = yield ctx.service.ledger.search(ctx.tender.id, {
|
|
|
value: app.mysql.escape('%1-3%'),
|
|
|
operate: 'Like',
|
|
|
fields: ['code', 'name'],
|
|
@@ -1132,8 +1144,8 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
assert(result.length === 3);
|
|
|
});
|
|
|
it('test searchRange', function* () {
|
|
|
- const ctx = app.mockContext();
|
|
|
- const result = yield ctx.service.ledger.searchRange(testTenderId, {
|
|
|
+ const ctx = app.mockContext(mockData);
|
|
|
+ const result = yield ctx.service.ledger.searchRange(ctx.tender.id, {
|
|
|
value: app.mysql.escape('%1-3%'),
|
|
|
operate: 'Like',
|
|
|
fields: ['code', 'name'],
|
|
@@ -1148,7 +1160,7 @@ describe('test/app/service/ledger.test.js', () => {
|
|
|
});
|
|
|
|
|
|
// it('test ImportExcelData', function* () {
|
|
|
- // const ctx = app.mockContext();
|
|
|
+ // const ctx = app.mockContext(mockData);
|
|
|
//
|
|
|
// const file = ctx.app.baseDir + '/test/app/test_file/ledger-upload-test.xls';
|
|
|
// const sheets = excel.parse(file);
|