{"numFailedTestSuites":1,"numFailedTests":1,"numPassedTestSuites":0,"numPassedTests":12,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":13,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1792646242669,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":51,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 지정 적립 엑셀 전건 거부: 담당 밖 회원이 한 명이라도 섞이면 미리보기와 적용이 모두 거부되고 행이 늘지 않는다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"지정 적립 엑셀 전건 거부: 담당 밖 회원이 한 명이라도 섞이면 미리보기와 적용이 모두 거부되고 행이 늘지 않는다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":12,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 지정 적립 엑셀 전건 거부 · 대조: 같은 파일의 담당 범위 안 미리보기는 통과하고 쓰지 않는다","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"지정 적립 엑셀 전건 거부 · 대조: 같은 파일의 담당 범위 안 미리보기는 통과하고 쓰지 않는다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":16,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 지정 지급 엑셀 전건 거부: 기업 담당이 범위 밖이면 지급 배치 · 대상 행 · 지갑 행 · 기업머니가 바뀌지 않는다","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"지정 지급 엑셀 전건 거부: 기업 담당이 범위 밖이면 지급 배치 · 대상 행 · 지갑 행 · 기업머니가 바뀌지 않는다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":12,"failureDetails":[{"message":"expect(received).rejects.toBeInstanceOf()\n\nReceived promise resolved instead of rejected\nResolved to value: {\"dryRun\": true, \"rows\": [{\"afterBalance\": 100, \"agcCode\": null, \"agcName\": \"합성기업A\", \"amount\": 100, \"currentBalance\": 0, \"expiryDays\": null, \"memLoginId\": \"synm9301\", \"memName\": null, \"memberType\": \"일반\", \"rowNum\": 2, \"type\": \"적립\"}, {\"afterBalance\": 100, \"agcCode\": null, \"agcName\": \"합성기업B\", \"amount\": 100, \"currentBalance\": 0, \"expiryDays\": null, \"memLoginId\": \"synm9304\", \"memName\": null, \"memberType\": \"일반\", \"rowNum\": 3, \"type\": \"적립\"}], \"summary\": {\"count\": 2, \"netAmount\": 200, \"totalEarn\": 200, \"totalRecovery\": 0}}"}],"failureMessages":["Error: expect(received).rejects.toBeInstanceOf()\n\nReceived promise resolved instead of rejected\nResolved to value: {\"dryRun\": true, \"rows\": [{\"afterBalance\": 100, \"agcCode\": null, \"agcName\": \"합성기업A\", \"amount\": 100, \"currentBalance\": 0, \"expiryDays\": null, \"memLoginId\": \"synm9301\", \"memName\": null, \"memberType\": \"일반\", \"rowNum\": 2, \"type\": \"적립\"}, {\"afterBalance\": 100, \"agcCode\": null, \"agcName\": \"합성기업B\", \"amount\": 100, \"currentBalance\": 0, \"expiryDays\": null, \"memLoginId\": \"synm9304\", \"memName\": null, \"memberType\": \"일반\", \"rowNum\": 3, \"type\": \"적립\"}], \"summary\": {\"count\": 2, \"netAmount\": 200, \"totalEarn\": 200, \"totalRecovery\": 0}}\n    at expect (/home/madsc/work/insuniverse-temp/.worktrees/admin-rbac/insuniverse-server/node_modules/expect/build/index.js:113:15)\n    at Object.<anonymous> (/home/madsc/work/insuniverse-temp/.worktrees/admin-rbac/insuniverse-server/apps/api/src/modules/money/money-bulk-scope.itspec.ts:155:11)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)"],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 지정 적립 엑셀 뒤 행 밖 전건 거부: 첫 행이 담당 안이어도 뒤 행이 밖이면 미리보기와 적용이 모두 거부되고 행이 늘지 않는다","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"status":"failed","title":"지정 적립 엑셀 뒤 행 밖 전건 거부: 첫 행이 담당 안이어도 뒤 행이 밖이면 미리보기와 적용이 모두 거부되고 행이 늘지 않는다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 기업머니 충전 담당 밖 거부: 담당 영업 밖이면 기업머니 행을 바꾸지 않는다","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"기업머니 충전 담당 밖 거부: 담당 영업 밖이면 기업머니 행을 바꾸지 않는다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":6,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 지정 지급 담당 밖 거부: 담당 영업 밖이면 지급 배치와 대상 행이 생기지 않는다","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"지정 지급 담당 밖 거부: 담당 영업 밖이면 지급 배치와 대상 행이 생기지 않는다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":5,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 지정 지급 단건 담당 밖 거부: 담당 영업 밖이면 지급 배치와 지갑 행이 늘지 않는다","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"지정 지급 단건 담당 밖 거부: 담당 영업 밖이면 지급 배치와 지갑 행이 늘지 않는다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":2,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 충전 취소 타 기업 거부: 다른 기업의 충전 요청은 찾을 수 없다고 응답하고 상태를 바꾸지 않는다","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"충전 취소 타 기업 거부: 다른 기업의 충전 요청은 찾을 수 없다고 응답하고 상태를 바꾸지 않는다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":13,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 지정 적립 사전 거부는 존재 · 잔액을 새지 않는다: 담당 밖 잔액 부족 회원과 없는 회원이 같은 403 이다","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"status":"passed","title":"지정 적립 사전 거부는 존재 · 잔액을 새지 않는다: 담당 밖 잔액 부족 회원과 없는 회원이 같은 403 이다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":17,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 지정 적립 엑셀 범위 안 적용: 담당 범위 안 회원만 있으면 잠금 뒤 판정을 지나 행이 늘어난다","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"지정 적립 엑셀 범위 안 적용: 담당 범위 안 회원만 있으면 잠금 뒤 판정을 지나 행이 늘어난다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 지정 적립 전체 대상 담당 밖: 트랜잭션을 열지 않고 거부한다 (전 회원 행을 잠그지 않는다)","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"지정 적립 전체 대상 담당 밖: 트랜잭션을 열지 않고 거부한다 (전 회원 행을 잠그지 않는다)"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":4,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 지정 적립 기업 번호 불일치: 담당 영업이 회원 기업과 다른 기업 번호를 주면 거부하고 행을 늘리지 않는다","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"status":"passed","title":"지정 적립 기업 번호 불일치: 담당 영업이 회원 기업과 다른 기업 번호를 주면 거부하고 행을 늘리지 않는다"},{"ancestorTitles":["머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL)"],"duration":20,"failureDetails":[],"failureMessages":[],"fullName":"머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) 단건 기업 키: 대상 회원이 두 기업에 걸친 적립 행은 기업 키가 null 이고, 한 기업이면 그 기업이다","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"status":"passed","title":"단건 기업 키: 대상 회원이 두 기업에 걸친 적립 행은 기업 키가 null 이고, 한 기업이면 그 기업이다"}],"endTime":1792646243940,"message":"  ● 머니 일괄 · 엑셀 · 단건 지급의 담당 범위 거부 (격리 MySQL) › 지정 적립 엑셀 뒤 행 밖 전건 거부: 첫 행이 담당 안이어도 뒤 행이 밖이면 미리보기와 적용이 모두 거부되고 행이 늘지 않는다\n\n    expect(received).rejects.toBeInstanceOf()\n\n    Received promise resolved instead of rejected\n    Resolved to value: {\"dryRun\": true, \"rows\": [{\"afterBalance\": 100, \"agcCode\": null, \"agcName\": \"합성기업A\", \"amount\": 100, \"currentBalance\": 0, \"expiryDays\": null, \"memLoginId\": \"synm9301\", \"memName\": null, \"memberType\": \"일반\", \"rowNum\": 2, \"type\": \"적립\"}, {\"afterBalance\": 100, \"agcCode\": null, \"agcName\": \"합성기업B\", \"amount\": 100, \"currentBalance\": 0, \"expiryDays\": null, \"memLoginId\": \"synm9304\", \"memName\": null, \"memberType\": \"일반\", \"rowNum\": 3, \"type\": \"적립\"}], \"summary\": {\"count\": 2, \"netAmount\": 200, \"totalEarn\": 200, \"totalRecovery\": 0}}\n\n      153 |     ]);\n      154 |     const before = await snapshot();\n    > 155 |     await expect(\n          |           ^\n      156 |       svc.uploadIssue(null, file, 'OTHER', AUDIT, true, OWNER_IN),\n      157 |     ).rejects.toBeInstanceOf(ForbiddenException);\n      158 |     await expect(\n\n      at expect (node_modules/expect/build/index.js:113:15)\n      at Object.<anonymous> (apps/api/src/modules/money/money-bulk-scope.itspec.ts:155:11)\n","name":"/home/madsc/work/insuniverse-temp/.worktrees/admin-rbac/insuniverse-server/apps/api/src/modules/money/money-bulk-scope.itspec.ts","startTime":1792646242796,"status":"failed","summary":""}],"wasInterrupted":false}
