@dizzlkheinz/ynab-mcpb 0.16.1 → 0.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +33 -33
- package/.github/workflows/ci-tests.yml +45 -45
- package/.github/workflows/claude-code-review.yml +57 -57
- package/.github/workflows/claude.yml +50 -50
- package/.github/workflows/full-integration.yml +22 -22
- package/.github/workflows/publish.yml +11 -2
- package/CLAUDE.md +33 -47
- package/README.md +8 -10
- package/dist/bundle/index.cjs +54 -54
- package/dist/server/YNABMCPServer.d.ts +120 -54
- package/dist/server/YNABMCPServer.js +28 -381
- package/dist/server/config.d.ts +2 -0
- package/dist/server/config.js +1 -0
- package/dist/server/securityMiddleware.d.ts +37 -8
- package/dist/tools/accountTools.d.ts +2 -0
- package/dist/tools/accountTools.js +45 -0
- package/dist/tools/adapters.d.ts +12 -0
- package/dist/tools/adapters.js +25 -0
- package/dist/tools/budgetTools.d.ts +2 -0
- package/dist/tools/budgetTools.js +30 -0
- package/dist/tools/categoryTools.d.ts +2 -0
- package/dist/tools/categoryTools.js +45 -0
- package/dist/tools/monthTools.d.ts +2 -0
- package/dist/tools/monthTools.js +32 -0
- package/dist/tools/payeeTools.d.ts +2 -0
- package/dist/tools/payeeTools.js +32 -0
- package/dist/tools/reconciliation/index.d.ts +2 -0
- package/dist/tools/reconciliation/index.js +33 -0
- package/dist/tools/schemas/common.d.ts +3 -0
- package/dist/tools/schemas/common.js +3 -0
- package/dist/tools/schemas/outputs/comparisonOutputs.d.ts +1 -1
- package/dist/tools/schemas/outputs/index.d.ts +2 -2
- package/dist/tools/schemas/outputs/index.js +2 -2
- package/dist/tools/schemas/outputs/utilityOutputs.d.ts +0 -15
- package/dist/tools/schemas/outputs/utilityOutputs.js +0 -9
- package/dist/tools/transactionTools.d.ts +2 -0
- package/dist/tools/transactionTools.js +124 -0
- package/dist/tools/utilityTools.d.ts +2 -7
- package/dist/tools/utilityTools.js +19 -38
- package/dist/types/index.d.ts +1 -0
- package/dist/types/toolRegistration.d.ts +27 -0
- package/dist/types/toolRegistration.js +1 -0
- package/docs/maintainers/npm-publishing.md +27 -0
- package/docs/reference/API.md +15 -70
- package/docs/technical/reconciliation-system-architecture.md +2251 -2251
- package/package.json +6 -6
- package/scripts/analyze-bundle.mjs +41 -41
- package/scripts/generate-mcpb.ps1 +95 -95
- package/scripts/run-domain-integration-tests.js +4 -1
- package/scripts/watch-and-restart.ps1 +49 -49
- package/src/__tests__/comprehensive.integration.test.ts +0 -28
- package/src/__tests__/performance.test.ts +4 -12
- package/src/__tests__/setup.ts +45 -14
- package/src/__tests__/workflows.e2e.test.ts +1 -51
- package/src/server/YNABMCPServer.ts +33 -519
- package/src/server/__tests__/YNABMCPServer.test.ts +0 -1
- package/src/server/__tests__/toolRegistration.test.ts +236 -0
- package/src/server/config.ts +1 -0
- package/src/tools/__tests__/adapters.test.ts +113 -0
- package/src/tools/__tests__/transactionTools.integration.test.ts +63 -3
- package/src/tools/__tests__/utilityTools.integration.test.ts +1 -85
- package/src/tools/__tests__/utilityTools.test.ts +1 -123
- package/src/tools/accountTools.ts +53 -0
- package/src/tools/adapters.ts +74 -0
- package/src/tools/budgetTools.ts +37 -0
- package/src/tools/categoryTools.ts +53 -0
- package/src/tools/monthTools.ts +39 -0
- package/src/tools/payeeTools.ts +39 -0
- package/src/tools/reconciliation/index.ts +45 -0
- package/src/tools/schemas/common.ts +18 -0
- package/src/tools/schemas/outputs/index.ts +0 -3
- package/src/tools/schemas/outputs/utilityOutputs.ts +2 -43
- package/src/tools/toolCategories.ts +0 -1
- package/src/tools/transactionTools.ts +140 -0
- package/src/tools/utilityTools.ts +24 -55
- package/src/types/index.ts +3 -0
- package/src/types/toolRegistration.ts +88 -0
- package/vitest.config.ts +2 -1
- package/.chunkhound.json +0 -11
- package/.code/agents/01a13ef4-3f23-4f52-b33b-3585b73cfa60/error.txt +0 -3
- package/.code/agents/084fd32f-e298-4728-9103-a78d7dc39613/error.txt +0 -3
- package/.code/agents/0fed51e1-a943-4b97-a2a8-a6f0f27c844d/status.txt +0 -1
- package/.code/agents/1059b6bd-5ccd-4d83-a12c-7c9d89137399/error.txt +0 -5
- package/.code/agents/110/exec-call_F9BDNG7JfxKkq7Vc8ESAvdft.txt +0 -1569
- package/.code/agents/11ebcef3-b13f-4e44-ad80-d94a866804b7/error.txt +0 -3
- package/.code/agents/1398/exec-call_CjItcWMU1G6JoPshX62QvpaR.txt +0 -2832
- package/.code/agents/1398/exec-call_SUVq2ivmONQ5LMCmd7ngmOqr.txt +0 -2709
- package/.code/agents/1398/exec-call_SdNY4NOffdcC5pRYjVXHjPCK.txt +0 -2832
- package/.code/agents/1398/exec-call_qblJo9et1gsFFB63TtLOiji2.txt +0 -2832
- package/.code/agents/1398/exec-call_zaRrzlGz7GJcNzVfkAmML7Zg.txt +0 -2709
- package/.code/agents/171834fd-5905-42fc-bbcc-2c755145b0fc/status.txt +0 -1
- package/.code/agents/1724/exec-call_HvHQe0w5CCG3T7Q3ULT6MO3g.txt +0 -5217
- package/.code/agents/1724/exec-call_QwUNESVzfxxk78K1frh1Vahb.txt +0 -2594
- package/.code/agents/1724/exec-call_aJ1Xwz71XmIpD4SBxSHERzLe.txt +0 -2594
- package/.code/agents/1d7d7ab7-7473-4b69-8b97-6e914f56056a/result.txt +0 -231
- package/.code/agents/210/exec-call_0tQCsKNJ1WTuIchb8wlcFJpW.txt +0 -2590
- package/.code/agents/210/exec-call_8ZlY9cUc8Ft1twi4ch8UJ6IN.txt +0 -5195
- package/.code/agents/2188/exec-call_5HqayBxIteJtoI8oPTiLWgvJ.txt +0 -286
- package/.code/agents/2188/exec-call_XRbBKBq3adZe6dcppAvQtM7G.txt +0 -218
- package/.code/agents/2188/exec-call_ehA0SjpYtrUi6GJXmibLjp4i.txt +0 -180
- package/.code/agents/21902821-ecaf-4759-bb9d-222b90921af5/error.txt +0 -3
- package/.code/agents/232073be-aa0e-46da-b478-5b64dbf03cf5/status.txt +0 -1
- package/.code/agents/234ff534-2336-4771-a8d9-aa04421a63be/result.txt +0 -747
- package/.code/agents/253e2695-dc36-4022-b436-27655e0fc6c7/status.txt +0 -1
- package/.code/agents/2583/exec-call_M59I4eDjpjlBIWBiSxyS0YlJ.txt +0 -2594
- package/.code/agents/2583/exec-call_usLRGh7OhVHtsRBL4iUwRhjq.txt +0 -2594
- package/.code/agents/292aa3ff-dbab-470f-97c9-e7e8fd65e0db/result.txt +0 -144
- package/.code/agents/3134/exec-call_IgCAMGx19lWfuo8zfYIt5FFC.txt +0 -416
- package/.code/agents/3134/exec-call_IxvLR2Oo7kba2QTsI1gHVko8.txt +0 -2590
- package/.code/agents/3134/exec-call_jYvc8hksZChSiysbzKjl2ZbB.txt +0 -2590
- package/.code/agents/329/exec-call_4QdP3SfSO7HGPCwVcqZIth6s.txt +0 -2590
- package/.code/agents/472/exec-call_4AxzEEcWwkKhpqRB3bE8Ha4L.txt +0 -790
- package/.code/agents/472/exec-call_CB3LPYQA8QIZRi8I6kj4J17A.txt +0 -766
- package/.code/agents/472/exec-call_YeoUWvaFoktay2nqVUsa9KKX.txt +0 -790
- package/.code/agents/472/exec-call_jPWgKVquBBXTg0T3Lks5ZfkK.txt +0 -2594
- package/.code/agents/472/exec-call_qBkvunpGBDEHph2jPmTwtcsb.txt +0 -1000
- package/.code/agents/472/exec-call_v0ffRV1p0kTckBmJPzzHAEy0.txt +0 -3489
- package/.code/agents/472/exec-call_xAX5FXqWIlk02d9WubHbHWh8.txt +0 -766
- package/.code/agents/5346/exec-call_9q0muXUuLaucwEqI51Pt7idT.txt +0 -2594
- package/.code/agents/5346/exec-call_B2el3B79rVkq9LhWTI2VYlz7.txt +0 -2456
- package/.code/agents/5346/exec-call_BfX08f02qkZI9uJD5dvCvuoj.txt +0 -2594
- package/.code/agents/543328d0-61d6-4fd1-a723-bb168656e2e2/error.txt +0 -18
- package/.code/agents/5580c02c-1383-4d18-9cbd-cc8a06e3408d/result.txt +0 -48
- package/.code/agents/60ce1a22-5126-44b2-b977-1d5b56142a7b/status.txt +0 -1
- package/.code/agents/6215d9db-7fa9-4429-aeec-3835c3212291/error.txt +0 -1
- package/.code/agents/6743db55-30e5-4b4e-9366-a8214fc7f714/error.txt +0 -1
- package/.code/agents/6bf9591b-b9c9-422c-b0a5-e968c7d8422a/status.txt +0 -1
- package/.code/agents/7/exec-call_eww3GfdEiJZx61sJEQ9wNmt3.txt +0 -1271
- package/.code/agents/70/exec-call_owUtDMYiVgqDf8vsz1i32PFf.txt +0 -1570
- package/.code/agents/8/exec-call_UtrjAcLbhYLatxR4O97fZgnm.txt +0 -2590
- package/.code/agents/82490bc9-f34e-4b1b-8a8e-bccc2e6254f5/error.txt +0 -3
- package/.code/agents/841/exec-call_7nTNhSBCNjTDUIJv7py6CepO.txt +0 -3299
- package/.code/agents/841/exec-call_TLI0yUdUijuUAvI4o3DXEvHO.txt +0 -3299
- package/.code/agents/9/exec-call_XaABQT1hIlRpnKZ2uyBMWsTC.txt +0 -1882
- package/.code/agents/941/exec-call_GuGHRx7NNXWIDAnxUG2NEWPa.txt +0 -2594
- package/.code/agents/95d9fbab-19a2-48af-83f9-c792566a347f/error.txt +0 -1
- package/.code/agents/b0098cb8-cb32-4ada-9bc4-37c587518896/result.txt +0 -170
- package/.code/agents/b4fe59a4-81df-42e2-a112-0153e504faca/error.txt +0 -1
- package/.code/agents/bf4ce152-f623-49d7-aa52-c18631625c3c/error.txt +0 -3
- package/.code/agents/d7d1db75-d7eb-468e-adea-4ef4d916d187/status.txt +0 -1
- package/.code/agents/e2baa9c8-bac3-49e3-a39d-024333e6a990/status.txt +0 -1
- package/.code/agents/e350b8c3-8483-408c-b2bb-94515f492a11/error.txt +0 -3
- package/.code/agents/e63f9919-719f-4ad0-bccf-01b1a596e1e9/status.txt +0 -1
- package/.code/agents/e71695a8-3044-478d-8f12-ed13d02884c7/status.txt +0 -1
- package/.code/agents/f95b7464-3e25-4897-b153-c8dfd63fd605/error.txt +0 -5
- package/.code/agents/fa3c5ddf-cdf7-47a2-930a-b806c6363689/status.txt +0 -1
- package/.github/workflows/pr-description-check.yml +0 -88
- package/AGENTS.md +0 -36
- package/NUL +0 -1
- package/docs/README.md +0 -72
- package/docs/getting-started/CONFIGURATION.md +0 -175
- package/docs/getting-started/INSTALLATION.md +0 -333
- package/docs/getting-started/QUICKSTART.md +0 -282
- package/docs/guides/ARCHITECTURE.md +0 -533
- package/docs/guides/DEPLOYMENT.md +0 -189
- package/docs/guides/INTEGRATION_TESTING.md +0 -730
- package/docs/guides/TESTING.md +0 -591
- package/docs/reconciliation-flow.md +0 -83
- package/docs/reference/EXAMPLES.md +0 -946
- package/docs/reference/TOOLS.md +0 -348
- package/docs/reference/TROUBLESHOOTING.md +0 -481
- package/package.json.tmp +0 -105
- package/temp-recon.ts +0 -126
- package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_09-04-53.json +0 -23
- package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_10-37-42.json +0 -23
- package/test-exports/ynab_account_e9ddc2a6_minimal_4items_2025-11-19_09-02-09.json +0 -44
- package/test-exports/ynab_account_e9ddc2a6_minimal_6items_2025-11-19_10-37-52.json +0 -58
- package/test-exports/ynab_since_2025-10-16_account_53298e13_238items_2025-11-28_13-46-20.json +0 -3662
- package/test-exports/ynab_since_2025-11-01_account_4c18e9f0_minimal_14items_2025-11-16_10-07-10.json +0 -115
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
[1m[46m RUN [49m[22m [36mv3.2.4 [39m[90mC:/Users/ksutk/projects/ynab-mcpb[39m
|
|
3
|
-
|
|
4
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould format a basic report with header and sections[32m 4[2mms[22m[39m
|
|
5
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould show statement date range[32m 1[2mms[22m[39m
|
|
6
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould show balanced status when no discrepancy[32m 1[2mms[22m[39m
|
|
7
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould show discrepancy with correct direction when YNAB higher[32m 1[2mms[22m[39m
|
|
8
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould show discrepancy with correct direction when bank higher[32m 0[2mms[22m[39m
|
|
9
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould show transaction analysis counts[32m 0[2mms[22m[39m
|
|
10
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould list unmatched bank transactions[32m 1[2mms[22m[39m
|
|
11
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould truncate long unmatched lists[32m 1[2mms[22m[39m
|
|
12
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould show suggested matches[32m 1[2mms[22m[39m
|
|
13
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould include insights section when insights present[32m 1[2mms[22m[39m
|
|
14
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould use correct severity icons[32m 1[2mms[22m[39m
|
|
15
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould truncate insights list[32m 0[2mms[22m[39m
|
|
16
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould include execution section when execution provided[32m 1[2mms[22m[39m
|
|
17
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould show dry run notice when dry run enabled[32m 1[2mms[22m[39m
|
|
18
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould show execution recommendations[32m 0[2mms[22m[39m
|
|
19
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould show next steps when no execution[32m 0[2mms[22m[39m
|
|
20
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould handle empty next steps gracefully[32m 0[2mms[22m[39m
|
|
21
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould use default account name when not provided[32m 0[2mms[22m[39m
|
|
22
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatBalanceInfo[2m > [22mshould format balance info correctly[32m 1[2mms[22m[39m
|
|
23
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatTransactionList[2m > [22mshould format bank transactions[32m 1[2mms[22m[39m
|
|
24
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatTransactionList[2m > [22mshould format YNAB transactions[32m 1[2mms[22m[39m
|
|
25
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatTransactionList[2m > [22mshould truncate long lists[32m 0[2mms[22m[39m
|
|
26
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatTransactionList[2m > [22mshould handle empty list[32m 1[2mms[22m[39m
|
|
27
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22medge cases[2m > [22mshould handle negative amounts correctly[32m 0[2mms[22m[39m
|
|
28
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22medge cases[2m > [22mshould handle positive amounts correctly[32m 0[2mms[22m[39m
|
|
29
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22medge cases[2m > [22mshould handle long payee names gracefully[32m 0[2mms[22m[39m
|
|
30
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22medge cases[2m > [22mshould handle zero discrepancy[32m 0[2mms[22m[39m
|
|
31
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22medge cases[2m > [22mshould format insight evidence when available[32m 0[2mms[22m[39m
|
|
32
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizePayee[2m > [22mshould convert to lowercase[32m 3[2mms[22m[39m
|
|
33
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizePayee[2m > [22mshould remove all spaces[32m 0[2mms[22m[39m
|
|
34
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizePayee[2m > [22mshould remove special characters[32m 1[2mms[22m[39m
|
|
35
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizePayee[2m > [22mshould keep only alphanumeric characters[32m 2[2mms[22m[39m
|
|
36
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizePayee[2m > [22mshould handle null and undefined[32m 1[2mms[22m[39m
|
|
37
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizePayee[2m > [22mshould handle empty string[32m 0[2mms[22m[39m
|
|
38
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizePayee[2m > [22mshould handle real-world examples[32m 1[2mms[22m[39m
|
|
39
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizedMatch[2m > [22mshould match identical normalized strings[32m 0[2mms[22m[39m
|
|
40
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizedMatch[2m > [22mshould match despite different special characters[32m 1[2mms[22m[39m
|
|
41
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizedMatch[2m > [22mshould not match different strings[32m 1[2mms[22m[39m
|
|
42
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizedMatch[2m > [22mshould handle null and undefined[32m 0[2mms[22m[39m
|
|
43
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizedMatch[2m > [22mshould match empty strings[32m 0[2mms[22m[39m
|
|
44
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizedMatch[2m > [22mshould match real-world examples[32m 1[2mms[22m[39m
|
|
45
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mfuzzyMatch[2m > [22mshould return 100 for identical strings[32m 1[2mms[22m[39m
|
|
46
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mfuzzyMatch[2m > [22mshould return high score for similar strings[32m 1[2mms[22m[39m
|
|
47
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mfuzzyMatch[2m > [22mshould return lower score for different strings[32m 0[2mms[22m[39m
|
|
48
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mfuzzyMatch[2m > [22mshould return 0 for completely different strings[32m 0[2mms[22m[39m
|
|
49
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mfuzzyMatch[2m > [22mshould handle null and undefined[32m 0[2mms[22m[39m
|
|
50
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mfuzzyMatch[2m > [22mshould calculate Levenshtein distance correctly[32m 0[2mms[22m[39m
|
|
51
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mfuzzyMatch[2m > [22mshould handle real-world payee variations[32m 0[2mms[22m[39m
|
|
52
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mtokenBasedSimilarity[2m > [22mshould return 100 for identical tokens[32m 0[2mms[22m[39m
|
|
53
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mtokenBasedSimilarity[2m > [22mshould return score for same tokens in different order[32m 0[2mms[22m[39m
|
|
54
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mtokenBasedSimilarity[2m > [22mshould return partial score for partial overlap[32m 0[2mms[22m[39m
|
|
55
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mtokenBasedSimilarity[2m > [22mshould return 0 for no overlap[32m 0[2mms[22m[39m
|
|
56
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mtokenBasedSimilarity[2m > [22mshould handle null and undefined[32m 0[2mms[22m[39m
|
|
57
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mtokenBasedSimilarity[2m > [22mshould split on alpha/numeric boundaries[32m 0[2mms[22m[39m
|
|
58
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mtokenBasedSimilarity[2m > [22mshould handle real-world examples[32m 0[2mms[22m[39m
|
|
59
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeSimilarity[2m > [22mshould return 100 for exact normalized match[32m 0[2mms[22m[39m
|
|
60
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeSimilarity[2m > [22mshould return best score from fuzzy or token matching[32m 22[2mms[22m[39m
|
|
61
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeSimilarity[2m > [22mshould handle typos with fuzzy matching[32m 4[2mms[22m[39m
|
|
62
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeSimilarity[2m > [22mshould return 0 for completely different payees[32m 1[2mms[22m[39m
|
|
63
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeSimilarity[2m > [22mshould handle null and undefined[32m 0[2mms[22m[39m
|
|
64
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeSimilarity[2m > [22mreal-world examples from design spec[2m > [22mshould match Shell variations[32m 0[2mms[22m[39m
|
|
65
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeSimilarity[2m > [22mreal-world examples from design spec[2m > [22mshould match Amazon variations[32m 0[2mms[22m[39m
|
|
66
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeSimilarity[2m > [22mreal-world examples from design spec[2m > [22mshould match Netflix variations[32m 0[2mms[22m[39m
|
|
67
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeContains[2m > [22mshould return true when payee contains substring[32m 0[2mms[22m[39m
|
|
68
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeContains[2m > [22mshould be case insensitive[32m 0[2mms[22m[39m
|
|
69
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeContains[2m > [22mshould ignore special characters[32m 53[2mms[22m[39m
|
|
70
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeContains[2m > [22mshould return false when substring not found[32m 0[2mms[22m[39m
|
|
71
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeContains[2m > [22mshould handle null and undefined[32m 0[2mms[22m[39m
|
|
72
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeContains[2m > [22mshould match partial words[32m 0[2mms[22m[39m
|
|
73
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22medge cases[2m > [22mshould handle very long payee names[32m 0[2mms[22m[39m
|
|
74
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22medge cases[2m > [22mshould handle Unicode characters[32m 0[2mms[22m[39m
|
|
75
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22medge cases[2m > [22mshould handle numbers only[32m 0[2mms[22m[39m
|
|
76
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22medge cases[2m > [22mshould handle mixed case with numbers[32m 0[2mms[22m[39m
|
|
77
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mhigh confidence matches (≥90%)[2m > [22mshould return high confidence for exact match[32m 10[2mms[22m[39m
|
|
78
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mhigh confidence matches (≥90%)[2m > [22mshould return high confidence for normalized payee match[32m 1[2mms[22m[39m
|
|
79
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mhigh confidence matches (≥90%)[2m > [22mshould handle date within tolerance[32m 1[2mms[22m[39m
|
|
80
|
-
[31m×[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mmedium confidence matches (60-89%)[2m > [22mshould return medium confidence for fuzzy payee match[32m 17[2mms[22m[39m
|
|
81
|
-
[31m → expected 'high' to be 'medium' // Object.is equality[39m
|
|
82
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mmedium confidence matches (60-89%)[2m > [22mshould provide multiple candidates for medium confidence[32m 3[2mms[22m[39m
|
|
83
|
-
[31m×[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mlow/no confidence matches[2m > [22mshould return no match when amount differs[32m 2[2mms[22m[39m
|
|
84
|
-
[31m → expected 'medium' to be 'none' // Object.is equality[39m
|
|
85
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mlow/no confidence matches[2m > [22mshould not match opposite-signed transactions[32m 1[2mms[22m[39m
|
|
86
|
-
[31m×[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mprioritization[2m > [22mshould prioritize uncleared transactions over cleared[32m 2[2mms[22m[39m
|
|
87
|
-
[31m → expected 'y1' to be 'y2' // Object.is equality[39m
|
|
88
|
-
[31m×[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mprioritization[2m > [22mshould use date proximity as tiebreaker[32m 2[2mms[22m[39m
|
|
89
|
-
[31m → expected 'y1' to be 'y2' // Object.is equality[39m
|
|
90
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mamount tolerance[2m > [22mshould match within amount tolerance[32m 1[2mms[22m[39m
|
|
91
|
-
[31m×[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mamount tolerance[2m > [22mshould not match outside amount tolerance[32m 2[2mms[22m[39m
|
|
92
|
-
[31m → expected 'high' to be 'none' // Object.is equality[39m
|
|
93
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mused IDs[2m > [22mshould skip already-used YNAB transaction IDs[32m 0[2mms[22m[39m
|
|
94
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould match multiple bank transactions[32m 2[2mms[22m[39m
|
|
95
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould prevent duplicate matching of YNAB transactions[32m 38[2mms[22m[39m
|
|
96
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould handle mix of matched and unmatched transactions[32m 8[2mms[22m[39m
|
|
97
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould use custom configuration[32m 1[2mms[22m[39m
|
|
98
|
-
[31m×[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22medge cases[2m > [22mshould handle empty YNAB transactions list[32m 3[2mms[22m[39m
|
|
99
|
-
[31m → expected 'Consider adding this transaction to Y…' to contain 'not in YNAB'[39m
|
|
100
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22medge cases[2m > [22mshould handle null payee names[32m 1[2mms[22m[39m
|
|
101
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22medge cases[2m > [22mshould handle very small amounts[32m 0[2mms[22m[39m
|
|
102
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22medge cases[2m > [22mshould handle large amounts[32m 0[2mms[22m[39m
|
|
103
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/scenarios/adapterCurrency.scenario.test.ts[2m > [22mscenario: non-USD formatting in adapter payload[2m > [22memits CAD currency values and csv_format metadata when provided[32m 7[2mms[22m[39m
|
|
104
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/adapter.causes.test.ts[2m > [22mbuildReconciliationPayload discrepancy causes mapping[2m > [22mmaps legacy causes to MoneyValue entries with CAD currency[32m 46[2mms[22m[39m
|
|
105
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/adapter.test.ts[2m > [22mbuildReconciliationPayload[2m > [22mreturns human narrative and structured payload with MoneyValue fields[32m 44[2mms[22m[39m
|
|
106
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/adapter.test.ts[2m > [22mbuildReconciliationPayload[2m > [22mincludes execution data when provided[32m 4[2mms[22m[39m
|
|
107
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mempty context scenarios[2m > [22mshould return empty array for completely empty context[32m 43[2mms[22m[39m
|
|
108
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mempty context scenarios[2m > [22mshould return empty array with no insights and no unmatched transactions[32m 5[2mms[22m[39m
|
|
109
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22minsight processing[2m > [22mshould process near_match insights[32m 9[2mms[22m[39m
|
|
110
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22minsight processing[2m > [22mshould process repeat_amount insights[32m 4[2mms[22m[39m
|
|
111
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22minsight processing[2m > [22mshould process anomaly insights[32m 4[2mms[22m[39m
|
|
112
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22minsight processing[2m > [22mshould process critical anomaly insights with higher severity[32m 4[2mms[22m[39m
|
|
113
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22minsight processing[2m > [22mshould process multiple insights[32m 10[2mms[22m[39m
|
|
114
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22munmatched bank transactions[2m > [22mshould create create_transaction recommendation for unmatched bank transaction[32m 3[2mms[22m[39m
|
|
115
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22munmatched bank transactions[2m > [22mshould include memo if present in bank transaction[32m 3[2mms[22m[39m
|
|
116
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22munmatched bank transactions[2m > [22mshould not include memo if not present in bank transaction[32m 4[2mms[22m[39m
|
|
117
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22munmatched bank transactions[2m > [22mshould create recommendations for multiple unmatched bank transactions[32m 5[2mms[22m[39m
|
|
118
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22munmatched YNAB transactions[2m > [22mshould create update_cleared recommendation for uncleared YNAB transaction[32m 3[2mms[22m[39m
|
|
119
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22munmatched YNAB transactions[2m > [22mshould not create recommendation for already cleared YNAB transaction[32m 3[2mms[22m[39m
|
|
120
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/scenarios/repeatAmount.scenario.test.ts[2m > [22mscenario: repeat amount collisions[2m > [22mprioritizes repeat-amount insight when multiple bank rows share totals[32m 27[2mms[22m[39m
|
|
121
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/scenarios/extremes.scenario.test.ts[2m > [22mscenario: zero, negative, and large statements[2m > [22mhandles zero and negative statement balances with mixed unmatched items[32m 31[2mms[22m[39m
|
|
122
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/analyzer.test.ts[2m > [22manalyzer[2m > [22manalyzeReconciliation[2m > [22mshould perform full analysis and return structured results[32m 28[2mms[22m[39m
|
|
123
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/analyzer.test.ts[2m > [22manalyzer[2m > [22manalyzeReconciliation[2m > [22mshould categorize high-confidence matches as auto-matches[32m 2[2mms[22m[39m
|
|
124
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/analyzer.test.ts[2m > [22manalyzer[2m > [22manalyzeReconciliation[2m > [22mshould categorize medium-confidence matches as suggested[32m 2[2mms[22m[39m
|
|
125
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/analyzer.test.ts[2m > [22manalyzer[2m > [22manalyzeReconciliation[2m > [22mshould identify unmatched bank transactions[32m 2[2mms[22m[39m
|
|
126
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/analyzer.test.ts[2m > [22manalyzer[2m > [22manalyzeReconciliation[2m > [22mshould identify unmatched YNAB transactions[32m 2[2mms[22m[39m
|
|
127
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/analyzer.test.ts[2m > [22manalyzer[2m > [22manalyzeReconciliation[2m > [22mshould calculate balance information correctly[32m 2[2mms[22m[39m
|
|
128
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/analyzer.test.ts[2m > [22manalyzer[2m > [22manalyzeReconciliation[2m > [22mshould generate appropriate summary[32m 2[2mms[22m[39m
|
|
129
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22munmatched YNAB transactions[2m > [22mshould not create recommendation for reconciled YNAB transaction[32m 3[2mms[22m[39m
|
|
130
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22munmatched YNAB transactions[2m > [22mshould handle null payee_name in YNAB transaction[32m 4[2mms[22m[39m
|
|
131
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22msuggested matches[2m > [22mshould create review_duplicate recommendation for suggested match[32m 4[2mms[22m[39m
|
|
132
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22msuggested matches[2m > [22mshould create create_transaction for suggested match with no YNAB transaction[32m 3[2mms[22m[39m
|
|
133
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22msuggested matches[2m > [22mshould create manual_review for combination match with multiple candidates[32m 5[2mms[22m[39m
|
|
134
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mamount sign preservation (CRITICAL)[2m > [22mshould preserve negative amounts for expenses in create_transaction[32m 4[2mms[22m[39m
|
|
135
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mamount sign preservation (CRITICAL)[2m > [22mshould preserve positive amounts for income in create_transaction[32m 3[2mms[22m[39m
|
|
136
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mamount sign preservation (CRITICAL)[2m > [22mshould preserve negative amounts in suggested match create_transaction[32m 3[2mms[22m[39m
|
|
137
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mamount sign preservation (CRITICAL)[2m > [22mshould handle zero amounts correctly[32m 3[2mms[22m[39m
|
|
138
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22msorting logic[2m > [22mshould sort by priority (high > medium > low)[32m 3[2mms[22m[39m
|
|
139
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22msorting logic[2m > [22mshould sort by confidence when priorities are equal[32m 3[2mms[22m[39m
|
|
140
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22msorting logic[2m > [22mshould handle mixed priorities and confidence[32m 4[2mms[22m[39m
|
|
141
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mrecommendation metadata[2m > [22mshould include correct metadata in all recommendations[32m 4[2mms[22m[39m
|
|
142
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mrecommendation metadata[2m > [22mshould generate unique IDs for each recommendation[32m 4[2mms[22m[39m
|
|
143
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mrecommendation metadata[2m > [22mshould use correct currency from balance info[32m 9[2mms[22m[39m
|
|
144
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mrecommendation metadata[2m > [22mshould include enhanced metadata in insight-based manual review recommendations[32m 4[2mms[22m[39m
|
|
145
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mrecommendation metadata[2m > [22mshould include enhanced metadata for all insight-based recommendation types[32m 12[2mms[22m[39m
|
|
146
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22medge cases[2m > [22mshould handle empty insights array[32m 7[2mms[22m[39m
|
|
147
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22medge cases[2m > [22mshould handle empty unmatched arrays[32m 3[2mms[22m[39m
|
|
148
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22medge cases[2m > [22mshould handle missing optional fields[32m 4[2mms[22m[39m
|
|
149
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22medge cases[2m > [22mshould handle very large arrays of recommendations[32m 22[2mms[22m[39m
|
|
150
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22medge cases[2m > [22mshould handle insight without evidence[32m 4[2mms[22m[39m
|
|
151
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22medge cases[2m > [22mshould handle transactions with very small amounts[32m 3[2mms[22m[39m
|
|
152
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22medge cases[2m > [22mshould handle transactions with very large amounts[32m 3[2mms[22m[39m
|
|
153
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mcombined scenarios[2m > [22mshould handle combination of insights, unmatched bank, and unmatched YNAB[32m 4[2mms[22m[39m
|
|
154
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/recommendationEngine.test.ts[2m > [22mrecommendationEngine[2m > [22mgenerateRecommendations[2m > [22mcombined scenarios[2m > [22mshould handle all recommendation types at once[32m 4[2mms[22m[39m
|
|
155
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/schemaUrl.test.ts[2m > [22mbuildReconciliationPayload schema reference[2m > [22mpoints to the master branch schema file on raw.githubusercontent.com[32m 4[2mms[22m[39m
|
|
156
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22merror normalization helpers[2m > [22mnormalizes YNAB SDK error objects with status and detail[32m 2[2mms[22m[39m
|
|
157
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22merror normalization helpers[2m > [22mretains status from Error-like objects and propagates HTTP code decisions[32m 0[2mms[22m[39m
|
|
158
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation (dry run)[2m > [22mproduces action plan without calling YNAB APIs when dry_run=true[32m 20[2mms[22m[39m
|
|
159
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation (apply mode)[2m > [22mcreates, updates, and adjusts when dry_run=false[32m 3[2mms[22m[39m
|
|
160
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation (ordered halting)[2m > [22mprocesses newest auto matches first and stops once balances align[32m 1[2mms[22m[39m
|
|
161
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation - bulk create mode[2m > [22muses bulk create API for batches with multiple transactions[32m 5[2mms[22m[39m
|
|
162
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation - bulk create mode[2m > [22mfalls back to sequential mode for single transaction scenarios[32m 2[2mms[22m[39m
|
|
163
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation - bulk create mode[2m > [22mfalls back to sequential creation when bulk request fails[32m 2[2mms[22m[39m
|
|
164
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation - bulk create mode[2m > [22mpropagates rate-limit error payloads with status codes from bulk create[32m 2[2mms[22m[39m
|
|
165
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation - bulk create mode[2m > [22msplits large batches into 100-transaction chunks[32m 14[2mms[22m[39m
|
|
166
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation - bulk create mode[2m > [22mthrows on fatal sequential creation errors surfaced as objects[32m 1[2mms[22m[39m
|
|
167
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation - bulk create mode[2m > [22mflags duplicate transactions returned by YNAB API[32m 1[2mms[22m[39m
|
|
168
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation - bulk create mode[2m > [22mhonors halting logic when balance aligns mid-batch[32m 1[2mms[22m[39m
|
|
169
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation - bulk create mode[2m > [22mprocesses multiple chunks and halts at chunk boundaries when balance aligns[32m 5[2mms[22m[39m
|
|
170
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/executor.test.ts[2m > [22mexecuteReconciliation - bulk create mode[2m > [22msimulates bulk preview during dry-run mode[32m 1[2mms[22m[39m
|
|
171
|
-
|
|
172
|
-
[31m⎯⎯⎯⎯⎯⎯⎯[39m[1m[41m Failed Tests 6 [49m[22m[31m⎯⎯⎯⎯⎯⎯⎯[39m
|
|
173
|
-
|
|
174
|
-
[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mmedium confidence matches (60-89%)[2m > [22mshould return medium confidence for fuzzy payee match
|
|
175
|
-
[31m[1mAssertionError[22m: expected 'high' to be 'medium' // Object.is equality[39m
|
|
176
|
-
|
|
177
|
-
Expected: [32m"medium"[39m
|
|
178
|
-
Received: [31m"high"[39m
|
|
179
|
-
|
|
180
|
-
[36m [2m❯[22m src/tools/reconciliation/__tests__/matcher.test.ts:[2m127:34[22m[39m
|
|
181
|
-
[90m125| [39m const match = findBestMatch(bankTxn, ynabTxns, new Set(), conf…
|
|
182
|
-
[90m126| [39m
|
|
183
|
-
[90m127| [39m [34mexpect[39m(match[33m.[39mconfidence)[33m.[39m[34mtoBe[39m([32m'medium'[39m)[33m;[39m
|
|
184
|
-
[90m | [39m [31m^[39m
|
|
185
|
-
[90m128| [39m [34mexpect[39m(match[33m.[39mconfidence_score)[33m.[39m[34mtoBeGreaterThanOrEqual[39m([34m60[39m)[33m;[39m
|
|
186
|
-
[90m129| [39m [34mexpect[39m(match[33m.[39mconfidence_score)[33m.[39m[34mtoBeLessThan[39m([34m90[39m)[33m;[39m
|
|
187
|
-
|
|
188
|
-
[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/6]⎯[22m[39m
|
|
189
|
-
|
|
190
|
-
[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mlow/no confidence matches[2m > [22mshould return no match when amount differs
|
|
191
|
-
[31m[1mAssertionError[22m: expected 'medium' to be 'none' // Object.is equality[39m
|
|
192
|
-
|
|
193
|
-
Expected: [32m"none"[39m
|
|
194
|
-
Received: [31m"medium"[39m
|
|
195
|
-
|
|
196
|
-
[36m [2m❯[22m src/tools/reconciliation/__tests__/matcher.test.ts:[2m196:34[22m[39m
|
|
197
|
-
[90m194| [39m const match = findBestMatch(bankTxn, ynabTxns, new Set(), conf…
|
|
198
|
-
[90m195| [39m
|
|
199
|
-
[90m196| [39m [34mexpect[39m(match[33m.[39mconfidence)[33m.[39m[34mtoBe[39m([32m'none'[39m)[33m;[39m
|
|
200
|
-
[90m | [39m [31m^[39m
|
|
201
|
-
[90m197| [39m [34mexpect[39m(match[33m.[39mconfidence_score)[33m.[39m[34mtoBe[39m([34m0[39m)[33m;[39m
|
|
202
|
-
[90m198| [39m [34mexpect[39m(match[33m.[39maction_hint)[33m.[39m[34mtoBe[39m([32m'add_to_ynab'[39m)[33m;[39m
|
|
203
|
-
|
|
204
|
-
[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/6]⎯[22m[39m
|
|
205
|
-
|
|
206
|
-
[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mprioritization[2m > [22mshould prioritize uncleared transactions over cleared
|
|
207
|
-
[31m[1mAssertionError[22m: expected 'y1' to be 'y2' // Object.is equality[39m
|
|
208
|
-
|
|
209
|
-
Expected: [32m"y[7m2[27m"[39m
|
|
210
|
-
Received: [31m"y[7m1[27m"[39m
|
|
211
|
-
|
|
212
|
-
[36m [2m❯[22m src/tools/reconciliation/__tests__/matcher.test.ts:[2m263:44[22m[39m
|
|
213
|
-
[90m261| [39m
|
|
214
|
-
[90m262| [39m [90m// Should prefer uncleared transaction[39m
|
|
215
|
-
[90m263| [39m [34mexpect[39m(match[33m.[39mynab_transaction[33m?.[39mid)[33m.[39m[34mtoBe[39m([32m'y2'[39m)[33m;[39m
|
|
216
|
-
[90m | [39m [31m^[39m
|
|
217
|
-
[90m264| [39m })[33m;[39m
|
|
218
|
-
[90m265| [39m
|
|
219
|
-
|
|
220
|
-
[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/6]⎯[22m[39m
|
|
221
|
-
|
|
222
|
-
[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mprioritization[2m > [22mshould use date proximity as tiebreaker
|
|
223
|
-
[31m[1mAssertionError[22m: expected 'y1' to be 'y2' // Object.is equality[39m
|
|
224
|
-
|
|
225
|
-
Expected: [32m"y[7m2[27m"[39m
|
|
226
|
-
Received: [31m"y[7m1[27m"[39m
|
|
227
|
-
|
|
228
|
-
[36m [2m❯[22m src/tools/reconciliation/__tests__/matcher.test.ts:[2m299:44[22m[39m
|
|
229
|
-
[90m297| [39m
|
|
230
|
-
[90m298| [39m [90m// Should prefer closer date[39m
|
|
231
|
-
[90m299| [39m [34mexpect[39m(match[33m.[39mynab_transaction[33m?.[39mid)[33m.[39m[34mtoBe[39m([32m'y2'[39m)[33m;[39m
|
|
232
|
-
[90m | [39m [31m^[39m
|
|
233
|
-
[90m300| [39m })[33m;[39m
|
|
234
|
-
[90m301| [39m })[33m;[39m
|
|
235
|
-
|
|
236
|
-
[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/6]⎯[22m[39m
|
|
237
|
-
|
|
238
|
-
[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22mfindBestMatch[2m > [22mamount tolerance[2m > [22mshould not match outside amount tolerance
|
|
239
|
-
[31m[1mAssertionError[22m: expected 'high' to be 'none' // Object.is equality[39m
|
|
240
|
-
|
|
241
|
-
Expected: [32m"none"[39m
|
|
242
|
-
Received: [31m"high"[39m
|
|
243
|
-
|
|
244
|
-
[36m [2m❯[22m src/tools/reconciliation/__tests__/matcher.test.ts:[2m356:34[22m[39m
|
|
245
|
-
[90m354| [39m const match = findBestMatch(bankTxn, ynabTxns, new Set(), conf…
|
|
246
|
-
[90m355| [39m
|
|
247
|
-
[90m356| [39m [34mexpect[39m(match[33m.[39mconfidence)[33m.[39m[34mtoBe[39m([32m'none'[39m)[33m;[39m
|
|
248
|
-
[90m | [39m [31m^[39m
|
|
249
|
-
[90m357| [39m })[33m;[39m
|
|
250
|
-
[90m358| [39m })[33m;[39m
|
|
251
|
-
|
|
252
|
-
[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/6]⎯[22m[39m
|
|
253
|
-
|
|
254
|
-
[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/matcher.test.ts[2m > [22mmatcher[2m > [22medge cases[2m > [22mshould handle empty YNAB transactions list
|
|
255
|
-
[31m[1mAssertionError[22m: expected 'Consider adding this transaction to Y…' to contain 'not in YNAB'[39m
|
|
256
|
-
|
|
257
|
-
Expected: [32m"[7mnot in[27m YNAB"[39m
|
|
258
|
-
Received: [31m"[7mConsider adding this transaction to[27m YNAB"[39m
|
|
259
|
-
|
|
260
|
-
[36m [2m❯[22m src/tools/reconciliation/__tests__/matcher.test.ts:[2m568:36[22m[39m
|
|
261
|
-
[90m566| [39m
|
|
262
|
-
[90m567| [39m [34mexpect[39m(match[33m.[39mconfidence)[33m.[39m[34mtoBe[39m([32m'none'[39m)[33m;[39m
|
|
263
|
-
[90m568| [39m [34mexpect[39m(match[33m.[39mrecommendation)[33m.[39m[34mtoContain[39m([32m'not in YNAB'[39m)[33m;[39m
|
|
264
|
-
[90m | [39m [31m^[39m
|
|
265
|
-
[90m569| [39m })[33m;[39m
|
|
266
|
-
[90m570| [39m
|
|
267
|
-
|
|
268
|
-
[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/6]⎯[22m[39m
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
[2m Test Files [22m [1m[31m1 failed[39m[22m[2m | [22m[1m[32m11 passed[39m[22m[90m (12)[39m
|
|
272
|
-
[2m Tests [22m [1m[31m6 failed[39m[22m[2m | [22m[1m[32m155 passed[39m[22m[90m (161)[39m
|
|
273
|
-
[2m Start at [22m 20:23:36
|
|
274
|
-
[2m Duration [22m 1.82s[2m (transform 1.36s, setup 0ms, collect 6.18s, tests 745ms, environment 6ms, prepare 3.07s)[22m
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
📊 Test results written to test-results/
|
|
278
|
-
- summary.json (overview)
|
|
279
|
-
- *-tests.json (1 project file(s))
|
|
280
|
-
- failed-tests.json (6 failure(s))
|
|
281
|
-
- passed-tests-summary.json
|
|
282
|
-
- index.html (interactive report)
|
|
283
|
-
|
|
284
|
-
💡 test-results.json contains a pointer to the detailed results
|
|
285
|
-
[1m[7m[35m HTML [39m[27m[22m [35mReport is generated[39m
|
|
286
|
-
[2m You can run [22m[1mnpx vite preview --outDir test-results[22m[2m to see the test results.[22m
|