const fs = require('fs'); const path = require('path'); function read(relativePath) { return fs.readFileSync(path.join(__dirname, '..', relativePath), 'utf8'); } function floatingPositionTypeText(posiDirection, positionType) { return posiDirection === positionType ? '多头' : '空头'; } describe('收益互换浮动端多空方向展示', () => { test.each([ [1, 1, '多头'], [1, 2, '空头'], [2, 1, '空头'], [2, 2, '多头'] ])('收支方向=%i,多空方向=%i时展示%s', (posiDirection, positionType, expected) => { expect(floatingPositionTypeText(posiDirection, positionType)).toBe(expected); }); test('查看交易的初始持仓、实时持仓、平仓和互换记录均使用计算后的方向', () => { const source = read('Views/SwapTrade2/TradeView.cshtml'); expect(source).toContain('FloatingPositionTypeText(item.PosiDirection, item.PositionType)'); expect(source.match(/FloatingPositionTypeText\(item\.PosiDirection, item\.PositionType\)/g)).toHaveLength(2); expect(source.match(/FloatingPositionTypeText\(closeFloat\.PayDirection, closeFloat\.PositionType\)/g)).toHaveLength(2); }); test.each([ 'Views/SwapTrade2/SwapUnwind.cshtml', 'Views/SwapTrade2/SwapIncome.cshtml' ])('%s按收支方向和多空方向计算展示值', relativePath => { const source = read(relativePath); expect(source).toContain('floatPosition.PayDirection==floatPosition.PositionType?"多头":"空头"'); expect(source).toContain('floatPosition.PositionType==1?"多头":"空头"'); }); test('平仓详情隐藏浮动收支方向并计算多空展示值', () => { const source = read('Views/SwapTrade2/CloseDetial.cshtml'); expect(source).toContain('bool hideFloatingIncomeDirection = PS.Config.ErpElement.SwapFloatingIncomeReceiveOnlyMode;'); expect(source).toContain('FloatingPositionTypeText(item.PosiDirection, item.PositionType)'); expect(source).toMatch(/@if \(!hideFloatingIncomeDirection\)[\s\S]*收支方向<\/td>/); }); });