@dizzlkheinz/ynab-mcpb 0.17.0 → 0.18.0
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 +12 -3
- package/.github/workflows/release.yml +2 -2
- package/CHANGELOG.md +10 -1
- package/CLAUDE.md +16 -12
- package/README.md +6 -1
- package/dist/bundle/index.cjs +49 -49
- package/dist/server/YNABMCPServer.d.ts +125 -54
- package/dist/server/YNABMCPServer.js +42 -11
- package/dist/server/cacheManager.js +6 -5
- package/dist/server/completions.d.ts +25 -0
- package/dist/server/completions.js +160 -0
- package/dist/server/config.d.ts +2 -2
- package/dist/server/errorHandler.js +1 -0
- package/dist/server/rateLimiter.js +3 -1
- package/dist/server/resources.d.ts +1 -0
- package/dist/server/resources.js +33 -16
- package/dist/server/securityMiddleware.d.ts +38 -8
- package/dist/server/securityMiddleware.js +1 -0
- package/dist/server/toolRegistry.d.ts +9 -0
- package/dist/server/toolRegistry.js +11 -0
- package/dist/tools/adapters.d.ts +3 -1
- package/dist/tools/adapters.js +1 -0
- package/dist/tools/reconciliation/executor.d.ts +2 -0
- package/dist/tools/reconciliation/executor.js +26 -1
- package/dist/tools/reconciliation/index.d.ts +3 -2
- package/dist/tools/reconciliation/index.js +4 -3
- 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/utilityTools.d.ts +0 -7
- package/dist/tools/utilityTools.js +1 -50
- package/docs/maintainers/npm-publishing.md +27 -0
- package/docs/reference/API.md +83 -97
- 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/watch-and-restart.ps1 +49 -49
- package/src/__tests__/comprehensive.integration.test.ts +4 -32
- package/src/__tests__/performance.test.ts +5 -14
- package/src/__tests__/setup.ts +45 -14
- package/src/__tests__/smoke.e2e.test.ts +70 -0
- package/src/__tests__/testUtils.ts +2 -113
- package/src/server/YNABMCPServer.ts +64 -10
- package/src/server/__tests__/YNABMCPServer.test.ts +0 -1
- package/src/server/__tests__/completions.integration.test.ts +117 -0
- package/src/server/__tests__/completions.test.ts +319 -0
- package/src/server/__tests__/resources.template.test.ts +3 -3
- package/src/server/__tests__/resources.test.ts +3 -3
- package/src/server/__tests__/toolRegistration.test.ts +3 -3
- package/src/server/cacheManager.ts +7 -6
- package/src/server/completions.ts +279 -0
- package/src/server/errorHandler.ts +1 -0
- package/src/server/rateLimiter.ts +4 -1
- package/src/server/resources.ts +49 -13
- package/src/server/securityMiddleware.ts +1 -0
- package/src/server/toolRegistry.ts +42 -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/adapters.ts +22 -1
- package/src/tools/reconciliation/__tests__/executor.progress.test.ts +462 -0
- package/src/tools/reconciliation/executor.ts +55 -1
- package/src/tools/reconciliation/index.ts +7 -3
- 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/utilityTools.ts +5 -76
- package/vitest.config.ts +4 -1
- package/.chunkhound.json +0 -11
- package/.code/agents/0098661e-0fa3-4990-beb9-c0cbf3f123aa/status.txt +0 -1
- 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/1324/exec-call_tIpx9uV1TpARbAMZonRQm8AO.txt +0 -757
- 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/1572/exec-call_GjVFBFOWcY7lE0idc5nWlLNh.txt +0 -781
- 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/1846/exec-call_1YNAVD18RjrMN7JnfkkQhUP3.txt +0 -766
- package/.code/agents/1846/exec-call_lh3lDzE4WJAh1lFiomiiZ73D.txt +0 -766
- package/.code/agents/1d7d7ab7-7473-4b69-8b97-6e914f56056a/result.txt +0 -231
- package/.code/agents/2038/exec-call_DYwOukaYsL8VCONWmV2rUW5u.txt +0 -766
- package/.code/agents/2038/exec-call_c7fOQ7UrpVcTtvdfGBRM146V.txt +0 -652
- package/.code/agents/2038/exec-call_ySNyq9Mm55jWE480s54r5QcA.txt +0 -766
- 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/2256/exec-call_AtPcRWPmFPMcmX6qOFm1fCEY.txt +0 -766
- 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/2454/exec-call_aFJpupwjfZeOBm7ixI5Vc8z2.txt +0 -766
- package/.code/agents/2454/exec-call_wogZ4HfXTodTEXvdgXlVUBpv.txt +0 -766
- 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/2e905864-aa07-4314-bcf9-c5b32277e4ac/result.txt +0 -36
- package/.code/agents/3073/exec-call_Peeagc9DxGYLgE6pNdMZhqIE.txt +0 -766
- package/.code/agents/3073/exec-call_d2YSE3hXF08KRSoUM3qd8Z3x.txt +0 -766
- 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/335aa031-466d-4fb7-925f-3cd864e264d0/result.txt +0 -191
- package/.code/agents/3364/exec-call_NbhIrsM5HhyDZDmJZG5CuCYL.txt +0 -766
- package/.code/agents/3364/exec-call_cKtJg0NrXiwXEFwlsE3uPZRA.txt +0 -766
- package/.code/agents/36d98414-5cde-4d9d-9a67-a240a18c1f07/result.txt +0 -189
- package/.code/agents/4604e866-b7b8-44f5-992f-2f683b0a523b/status.txt +0 -1
- 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/5f8dc01c-47b3-4163-b0b3-aa31be89fcdc/status.txt +0 -1
- 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_HltHpkDox0Zm1vGEjdksUgpE.txt +0 -1120
- package/.code/agents/7/exec-call_LCATrOPPAgbxW9Q1z0XaVi2E.txt +0 -2646
- package/.code/agents/7/exec-call_W8DeRfNG9hvbgVFvf0clBf6R.txt +0 -2646
- 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/94a0ddf3-a304-4ec3-913e-3cceef509948/error.txt +0 -1
- 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/e2c752b7-711d-423a-af57-f53c809deb84/result.txt +0 -160
- 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/e6601719-c31f-4a0e-8c71-d70787d0ab71/status.txt +0 -1
- package/.code/agents/e71695a8-3044-478d-8f12-ed13d02884c7/status.txt +0 -1
- package/.code/agents/f250b7ed-5bd5-4036-aa8c-ce63caee7d61/result.txt +0 -20
- 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/AGENTS.md +0 -1
- package/NUL +0 -0
- package/package.json.tmp +0 -105
- package/src/__tests__/delta.performance.test.ts +0 -80
- package/src/__tests__/workflows.e2e.test.ts +0 -1702
- 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,2590 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
> @dizzlkheinz/ynab-mcpb@0.14.0 test:unit
|
|
3
|
-
> vitest run --project unit
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[1m[46m RUN [49m[22m [36mv3.2.4 [39m[90mC:/Users/ksutk/projects/ynab-mcpb[39m
|
|
7
|
-
|
|
8
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22misAllowed[2m > [22mshould allow requests within the limit[32m 4[2mms[22m[39m
|
|
9
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22misAllowed[2m > [22mshould track requests correctly[32m 1[2mms[22m[39m
|
|
10
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22misAllowed[2m > [22mshould limit requests when max is reached[32m 0[2mms[22m[39m
|
|
11
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22misAllowed[2m > [22mshould handle multiple identifiers independently[32m 1[2mms[22m[39m
|
|
12
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22misAllowed[2m > [22mshould reset after time window expires[32m 71[2mms[22m[39m
|
|
13
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mrecordRequest[2m > [22mshould record requests correctly[32m 0[2mms[22m[39m
|
|
14
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mrecordRequest[2m > [22mshould handle rapid successive requests[32m 0[2mms[22m[39m
|
|
15
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mgetStatus[2m > [22mshould return current status without modifying state[32m 0[2mms[22m[39m
|
|
16
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mreset[2m > [22mshould reset specific identifier[32m 1[2mms[22m[39m
|
|
17
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mreset[2m > [22mshould reset all identifiers when no specific identifier provided[32m 0[2mms[22m[39m
|
|
18
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mcleanup[2m > [22mshould remove expired requests[32m 76[2mms[22m[39m
|
|
19
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mlogging[2m > [22mshould log when logging is enabled[32m 14[2mms[22m[39m
|
|
20
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mlogging[2m > [22mshould not log when logging is disabled[32m 1[2mms[22m[39m
|
|
21
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mRateLimitError[2m > [22mshould create error with correct properties[32m 1[2mms[22m[39m
|
|
22
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mYNAB API compliance[2m > [22mshould use YNAB API limits by default[32m 0[2mms[22m[39m
|
|
23
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22mYNAB API compliance[2m > [22mshould handle YNAB-scale request volumes[32m 1[2mms[22m[39m
|
|
24
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/rateLimiter.test.ts[2m > [22mRateLimiter[2m > [22msecurity considerations[2m > [22mshould hash identifiers in logs to avoid token exposure[32m 1[2mms[22m[39m
|
|
25
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mBasic Functionality[2m > [22mshould store and retrieve data[32m 8[2mms[22m[39m
|
|
26
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mBasic Functionality[2m > [22mshould return null for non-existent keys[32m 2[2mms[22m[39m
|
|
27
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mBasic Functionality[2m > [22mshould delete entries[32m 2[2mms[22m[39m
|
|
28
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mBasic Functionality[2m > [22mshould clear all entries[32m 1[2mms[22m[39m
|
|
29
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mBasic Functionality[2m > [22mshould handle TTL expiration[32m 2[2mms[22m[39m
|
|
30
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mBasic Functionality[2m > [22mshould generate consistent cache keys[32m 1[2mms[22m[39m
|
|
31
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mBasic Functionality[2m > [22mshould filter undefined parameters in key generation[32m 1[2mms[22m[39m
|
|
32
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mHit/Miss Counters[2m > [22mshould track cache hits[32m 1[2mms[22m[39m
|
|
33
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mHit/Miss Counters[2m > [22mshould track cache misses[32m 2[2mms[22m[39m
|
|
34
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mHit/Miss Counters[2m > [22mshould track expired entries as misses[32m 1[2mms[22m[39m
|
|
35
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mHit/Miss Counters[2m > [22mshould calculate hit rate correctly[32m 1[2mms[22m[39m
|
|
36
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mHit/Miss Counters[2m > [22mshould reset counters on clear[32m 1[2mms[22m[39m
|
|
37
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mHit/Miss Counters[2m > [22mshould handle zero requests for hit rate[32m 1[2mms[22m[39m
|
|
38
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mLRU Eviction[2m > [22mshould not evict when under limit[32m 1[2mms[22m[39m
|
|
39
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mLRU Eviction[2m > [22mshould evict LRU entry when maxEntries is exceeded[32m 1[2mms[22m[39m
|
|
40
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mLRU Eviction[2m > [22mshould update access order on get[32m 4[2mms[22m[39m
|
|
41
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mLRU Eviction[2m > [22mshould handle zero maxEntries (no caching)[32m 1[2mms[22m[39m
|
|
42
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mLRU Eviction[2m > [22mshould evict multiple entries if needed[32m 1[2mms[22m[39m
|
|
43
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mLRU Eviction[2m > [22mshould not evict when updating existing key at maxEntries limit[32m 1[2mms[22m[39m
|
|
44
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPer-Entry Options[2m > [22mshould use custom TTL from options[32m 2[2mms[22m[39m
|
|
45
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPer-Entry Options[2m > [22mshould use default TTL when no options provided[32m 2[2mms[22m[39m
|
|
46
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPer-Entry Options[2m > [22mshould support staleWhileRevalidate[32m 1[2mms[22m[39m
|
|
47
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPer-Entry Options[2m > [22mshould not return data outside stale window[32m 1[2mms[22m[39m
|
|
48
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPer-Entry Options[2m > [22mshould maintain backward compatibility with number TTL[32m 1[2mms[22m[39m
|
|
49
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mwrap() Helper[2m > [22mshould return cached data immediately on hit[32m 4[2mms[22m[39m
|
|
50
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mwrap() Helper[2m > [22mshould call loader and cache result on miss[32m 2[2mms[22m[39m
|
|
51
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mwrap() Helper[2m > [22mshould deduplicate concurrent requests[32m 3[2mms[22m[39m
|
|
52
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mwrap() Helper[2m > [22mshould handle loader errors gracefully[32m 5[2mms[22m[39m
|
|
53
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mwrap() Helper[2m > [22mshould serve stale data and trigger background refresh[32m 2[2mms[22m[39m
|
|
54
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mwrap() Helper[2m > [22mshould apply cache options from wrap call[32m 1[2mms[22m[39m
|
|
55
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mwrap() Helper[2m > [22mshould clean up pending operations on completion[32m 1[2mms[22m[39m
|
|
56
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mwrap() Helper[2m > [22mshould preserve existing TTL/SWR when options omitted in background refresh[32m 4[2mms[22m[39m
|
|
57
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mCleanup Enhancement[2m > [22mshould update lastCleanup timestamp[32m 1[2mms[22m[39m
|
|
58
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mCleanup Enhancement[2m > [22mshould include cleanup removals in eviction count[32m 1[2mms[22m[39m
|
|
59
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mCleanup Enhancement[2m > [22mshould return zero when no cleanup needed[32m 1[2mms[22m[39m
|
|
60
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mCleanup Enhancement[2m > [22mshould provide detailed cleanup information[32m 1[2mms[22m[39m
|
|
61
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mCleanup Enhancement[2m > [22mshould maintain backward compatibility with cleanup() method[32m 1[2mms[22m[39m
|
|
62
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEnvironment Variable Configuration[2m > [22mshould use environment variable for maxEntries[32m 1[2mms[22m[39m
|
|
63
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEnvironment Variable Configuration[2m > [22mshould use environment variable for stale window[32m 1[2mms[22m[39m
|
|
64
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEnvironment Variable Configuration[2m > [22mshould fall back to defaults for invalid environment values[32m 1[2mms[22m[39m
|
|
65
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEnvironment Variable Configuration[2m > [22mshould use environment variable for default TTL[32m 1[2mms[22m[39m
|
|
66
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEnvironment Variable Configuration[2m > [22mshould fall back to defaults when environment variables are missing[32m 1[2mms[22m[39m
|
|
67
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEnhanced Statistics[2m > [22mshould return comprehensive stats[32m 2[2mms[22m[39m
|
|
68
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEnhanced Statistics[2m > [22mshould maintain backward compatibility with basic stats[32m 2[2mms[22m[39m
|
|
69
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEnhanced Statistics[2m > [22mshould handle getEntriesForSizeEstimation correctly[32m 2[2mms[22m[39m
|
|
70
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEnhanced Statistics[2m > [22mshould provide lightweight cache metadata without full entry data[32m 2[2mms[22m[39m
|
|
71
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEdge Cases and Error Handling[2m > [22mshould handle circular references in cache values[32m 1[2mms[22m[39m
|
|
72
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEdge Cases and Error Handling[2m > [22mshould handle very large cache sizes[32m 14[2mms[22m[39m
|
|
73
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEdge Cases and Error Handling[2m > [22mshould handle concurrent wrap calls with different keys independently[32m 2[2mms[22m[39m
|
|
74
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mEdge Cases and Error Handling[2m > [22mshould clean up failed operations[32m 5[2mms[22m[39m
|
|
75
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mdeleteByPrefix[2m > [22mshould delete entries matching prefix and return count[32m 1[2mms[22m[39m
|
|
76
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mdeleteByPrefix[2m > [22mshould return 0 when no matches found[32m 1[2mms[22m[39m
|
|
77
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mdeleteByPrefix[2m > [22mshould handle empty prefix safely[32m 1[2mms[22m[39m
|
|
78
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mdeleteByPrefix[2m > [22mshould not delete when prefix only partially matches a resource's namespace[32m 1[2mms[22m[39m
|
|
79
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mdeleteByPrefix[2m > [22mshould not affect cache hit or miss counters[32m 1[2mms[22m[39m
|
|
80
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mdeleteByBudgetId[2m > [22mshould delete entries containing the provided budget ID[32m 1[2mms[22m[39m
|
|
81
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mdeleteByBudgetId[2m > [22mshould return 0 when budget ID does not exist in cache[32m 1[2mms[22m[39m
|
|
82
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mdeleteByBudgetId[2m > [22mshould not match budget IDs that are substrings of other IDs[32m 1[2mms[22m[39m
|
|
83
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mdeleteByBudgetId[2m > [22mshould handle UUID formatted budget identifiers[32m 1[2mms[22m[39m
|
|
84
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mdeleteByBudgetId[2m > [22mshould not affect cache stats when deleting by budget ID[32m 1[2mms[22m[39m
|
|
85
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mgetKeys[2m > [22mshould return an empty array when cache is empty[32m 1[2mms[22m[39m
|
|
86
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mgetKeys[2m > [22mshould return all cache keys[32m 1[2mms[22m[39m
|
|
87
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mPrefix and Budget-based Deletion[2m > [22mgetKeys[2m > [22mshould preserve insertion order of cache keys[32m 1[2mms[22m[39m
|
|
88
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mIntegration with Existing Patterns[2m > [22mshould work with existing tool usage patterns[32m 1[2mms[22m[39m
|
|
89
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/cacheManager.test.ts[2m > [22mCacheManager[2m > [22mIntegration with Existing Patterns[2m > [22mshould maintain singleton behavior[32m 1[2mms[22m[39m
|
|
90
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mFeature Flag[2m > [22mshould use delta path when the feature flag is enabled[32m 16[2mms[22m[39m
|
|
91
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mFeature Flag[2m > [22mshould bypass delta logic when flag is disabled[32m 4[2mms[22m[39m
|
|
92
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mFeature Flag[2m > [22mshould still cache results when delta is disabled[32m 3[2mms[22m[39m
|
|
93
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mDelta Detection[2m > [22mshould detect delta when server knowledge increases[32m 4[2mms[22m[39m
|
|
94
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mDelta Detection[2m > [22mshould treat response as unchanged when knowledge stays equal[32m 2[2mms[22m[39m
|
|
95
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mDelta Detection[2m > [22mshould treat cache miss as full refresh[32m 2[2mms[22m[39m
|
|
96
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mDelta Detection[2m > [22mshould use merger when delta detected and cache exists[32m 2[2mms[22m[39m
|
|
97
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mDelta Detection[2m > [22mshould filter deleted entities on full refresh[32m 2[2mms[22m[39m
|
|
98
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mDelta Detection[2m > [22mshould handle initial fetch with no cache or knowledge[32m 3[2mms[22m[39m
|
|
99
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mKnowledge Gap Warnings[2m > [22mshould log warning when knowledge gap exceeds threshold[32m 5[2mms[22m[39m
|
|
100
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mKnowledge Gap Warnings[2m > [22mshould not log warning when gap is within tolerance[32m 2[2mms[22m[39m
|
|
101
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mKnowledge Gap Warnings[2m > [22mshould include cacheKey in warning metadata[32m 2[2mms[22m[39m
|
|
102
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mKnowledge Gap Warnings[2m > [22mshould continue processing even after warning[32m 2[2mms[22m[39m
|
|
103
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mCache Operations[2m > [22mshould store entries in cache manager format[32m 2[2mms[22m[39m
|
|
104
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mCache Operations[2m > [22mshould update knowledge store after fetch[32m 2[2mms[22m[39m
|
|
105
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mCache Operations[2m > [22mshould return cached data on cache hit[32m 2[2mms[22m[39m
|
|
106
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mCache Operations[2m > [22mshould respect custom TTL overrides[32m 2[2mms[22m[39m
|
|
107
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mCache Operations[2m > [22mshould use fresh cache but disable delta when forceFullRefresh is true[32m 2[2mms[22m[39m
|
|
108
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mMerge Options[2m > [22mshould pass merge options to merger[32m 2[2mms[22m[39m
|
|
109
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mMerge Options[2m > [22mshould allow preserveDeleted to keep deleted entities after merge[32m 1[2mms[22m[39m
|
|
110
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mMerge Options[2m > [22mshould support custom equality functions via merge options[32m 2[2mms[22m[39m
|
|
111
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mInvalidation[2m > [22mshould delete by prefix when resource type provided[32m 1[2mms[22m[39m
|
|
112
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mInvalidation[2m > [22mshould delete by budget when resource type omitted[32m 1[2mms[22m[39m
|
|
113
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mInvalidation[2m > [22mshould not reset knowledge on invalidate[32m 1[2mms[22m[39m
|
|
114
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mInvalidation[2m > [22mshould reset targeted knowledge during forceFullRefresh[32m 1[2mms[22m[39m
|
|
115
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mInvalidation[2m > [22mshould reset entire budget knowledge on forceFullRefresh without resource type[32m 1[2mms[22m[39m
|
|
116
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mInvalidation[2m > [22mshould support global forceFullRefresh without budgetId[32m 1[2mms[22m[39m
|
|
117
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mError Handling[2m > [22mshould propagate fetcher errors without caching[32m 4[2mms[22m[39m
|
|
118
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mError Handling[2m > [22mshould propagate merger errors[32m 2[2mms[22m[39m
|
|
119
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mError Handling[2m > [22mshould not cache when fetch fails before delta detection[32m 2[2mms[22m[39m
|
|
120
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mError Handling[2m > [22mshould not update knowledge when fetch fails[32m 2[2mms[22m[39m
|
|
121
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mResult Metadata[2m > [22mshould mark wasCached true on cache hits[32m 1[2mms[22m[39m
|
|
122
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mResult Metadata[2m > [22mshould mark wasCached false when cache misses[32m 1[2mms[22m[39m
|
|
123
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mResult Metadata[2m > [22mshould mark usedDelta true when merge applied[32m 2[2mms[22m[39m
|
|
124
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mResult Metadata[2m > [22mshould mark usedDelta false when no merge happens[32m 2[2mms[22m[39m
|
|
125
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mStats tracking[2m > [22mincrements deltaHits and mergeOperations when delta merge occurs[32m 3[2mms[22m[39m
|
|
126
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mStats tracking[2m > [22mincrements deltaMisses when full refresh is required[32m 2[2mms[22m[39m
|
|
127
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mStats tracking[2m > [22mtracks knowledge gap events and treats them as hits[32m 2[2mms[22m[39m
|
|
128
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mTTL Validation[2m > [22mshould throw when ttl is missing for fetchWithDelta[32m 2[2mms[22m[39m
|
|
129
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.test.ts[2m > [22mDeltaCache[2m > [22mTTL Validation[2m > [22mshould throw when ttl is not finite for fetchWithoutDelta[32m 2[2mms[22m[39m
|
|
130
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/config.test.ts[2m > [22mConfig Module[2m > [22mreloads environment variables on each loadConfig call[33m 528[2mms[22m[39m
|
|
131
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/config.test.ts[2m > [22mConfig Module[2m > [22mkeeps the config singleton as a one-time parse[32m 29[2mms[22m[39m
|
|
132
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/config.test.ts[2m > [22mConfig Module[2m > [22mthrows a detailed error if YNAB_ACCESS_TOKEN is missing[32m 16[2mms[22m[39m
|
|
133
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/config.test.ts[2m > [22mConfig Module[2m > [22mparses optional MCP_PORT correctly[32m 15[2mms[22m[39m
|
|
134
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/config.test.ts[2m > [22mConfig Module[2m > [22mhandles missing optional MCP_PORT[32m 13[2mms[22m[39m
|
|
135
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/config.test.ts[2m > [22mConfig Module[2m > [22mthrows an error for an invalid MCP_PORT[32m 16[2mms[22m[39m
|
|
136
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/config.test.ts[2m > [22mConfig Module[2m > [22mparses LOG_LEVEL and defaults to info[32m 41[2mms[22m[39m
|
|
137
|
-
[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 48[2mms[22m[39m
|
|
138
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/adapter.test.ts[2m > [22mbuildReconciliationPayload[2m > [22mincludes execution data when provided[32m 6[2mms[22m[39m
|
|
139
|
-
[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 45[2mms[22m[39m
|
|
140
|
-
[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 3[2mms[22m[39m
|
|
141
|
-
[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 10[2mms[22m[39m
|
|
142
|
-
[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
|
|
143
|
-
[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
|
|
144
|
-
[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
|
|
145
|
-
[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 6[2mms[22m[39m
|
|
146
|
-
[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 7[2mms[22m[39m
|
|
147
|
-
[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
|
|
148
|
-
[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 3[2mms[22m[39m
|
|
149
|
-
[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 3[2mms[22m[39m
|
|
150
|
-
[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 5[2mms[22m[39m
|
|
151
|
-
[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 7[2mms[22m[39m
|
|
152
|
-
[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 2[2mms[22m[39m
|
|
153
|
-
[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 2[2mms[22m[39m
|
|
154
|
-
[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
|
|
155
|
-
[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 2[2mms[22m[39m
|
|
156
|
-
[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 4[2mms[22m[39m
|
|
157
|
-
[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 3[2mms[22m[39m
|
|
158
|
-
[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 5[2mms[22m[39m
|
|
159
|
-
[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
|
|
160
|
-
[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 7[2mms[22m[39m
|
|
161
|
-
[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
|
|
162
|
-
[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
|
|
163
|
-
[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 3[2mms[22m[39m
|
|
164
|
-
[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 3[2mms[22m[39m
|
|
165
|
-
[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 3[2mms[22m[39m
|
|
166
|
-
[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 3[2mms[22m[39m
|
|
167
|
-
[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 3[2mms[22m[39m
|
|
168
|
-
[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 5[2mms[22m[39m
|
|
169
|
-
[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 2[2mms[22m[39m
|
|
170
|
-
[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 2[2mms[22m[39m
|
|
171
|
-
[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 3[2mms[22m[39m
|
|
172
|
-
[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 19[2mms[22m[39m
|
|
173
|
-
[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 2[2mms[22m[39m
|
|
174
|
-
[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 2[2mms[22m[39m
|
|
175
|
-
[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 2[2mms[22m[39m
|
|
176
|
-
[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 3[2mms[22m[39m
|
|
177
|
-
[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
|
|
178
|
-
[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 4[2mms[22m[39m
|
|
179
|
-
[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 1[2mms[22m[39m
|
|
180
|
-
[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 51[2mms[22m[39m
|
|
181
|
-
[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 5[2mms[22m[39m
|
|
182
|
-
[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
|
|
183
|
-
[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 13[2mms[22m[39m
|
|
184
|
-
[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
|
|
185
|
-
[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 6[2mms[22m[39m
|
|
186
|
-
[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 4[2mms[22m[39m
|
|
187
|
-
[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 24[2mms[22m[39m
|
|
188
|
-
[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
|
|
189
|
-
[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 2[2mms[22m[39m
|
|
190
|
-
[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 2[2mms[22m[39m
|
|
191
|
-
[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 8[2mms[22m[39m
|
|
192
|
-
[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 3[2mms[22m[39m
|
|
193
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mListTransactionsSchema[2m > [22mshould validate valid parameters[32m 6[2mms[22m[39m
|
|
194
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mListTransactionsSchema[2m > [22mshould require budget_id[32m 3[2mms[22m[39m
|
|
195
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mListTransactionsSchema[2m > [22mshould validate date format[32m 1[2mms[22m[39m
|
|
196
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mListTransactionsSchema[2m > [22mshould validate type enum[32m 1[2mms[22m[39m
|
|
197
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mListTransactionsSchema[2m > [22mshould allow optional parameters to be undefined[32m 1[2mms[22m[39m
|
|
198
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould bypass cache in test environment for unfiltered requests[32m 5[2mms[22m[39m
|
|
199
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould use cache when NODE_ENV is not test for unfiltered requests - obsolete test, caching now handled by DeltaFetcher
|
|
200
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould not cache filtered requests - obsolete test (account_id)
|
|
201
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould list all transactions when no filters are provided[32m 1[2mms[22m[39m
|
|
202
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould filter by account_id when provided[32m 1[2mms[22m[39m
|
|
203
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould filter by category_id when provided[32m 1[2mms[22m[39m
|
|
204
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould include since_date parameter when provided[32m 1[2mms[22m[39m
|
|
205
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould handle 401 authentication errors[32m 1[2mms[22m[39m
|
|
206
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould handle 404 not found errors[32m 1[2mms[22m[39m
|
|
207
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould handle 429 rate limit errors[32m 0[2mms[22m[39m
|
|
208
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould handle generic errors[32m 2[2mms[22m[39m
|
|
209
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleListTransactions[2m > [22mshould include cached property in large response path[32m 52[2mms[22m[39m
|
|
210
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mGetTransactionSchema[2m > [22mshould validate valid parameters[32m 1[2mms[22m[39m
|
|
211
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mGetTransactionSchema[2m > [22mshould require budget_id[32m 1[2mms[22m[39m
|
|
212
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mGetTransactionSchema[2m > [22mshould require transaction_id[32m 1[2mms[22m[39m
|
|
213
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mGetTransactionSchema[2m > [22mshould reject empty strings[32m 0[2mms[22m[39m
|
|
214
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleGetTransaction[2m > [22mshould get transaction details successfully[32m 1[2mms[22m[39m
|
|
215
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleGetTransaction[2m > [22mshould handle 404 not found errors[32m 1[2mms[22m[39m
|
|
216
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleGetTransaction[2m > [22mshould handle authentication errors[32m 0[2mms[22m[39m
|
|
217
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleGetTransaction[2m > [22mshould handle generic errors[32m 0[2mms[22m[39m
|
|
218
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionSchema[2m > [22mshould validate valid parameters with required fields only[32m 2[2mms[22m[39m
|
|
219
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionSchema[2m > [22mshould validate valid parameters with all optional fields[32m 0[2mms[22m[39m
|
|
220
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionSchema[2m > [22mshould require budget_id[32m 0[2mms[22m[39m
|
|
221
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionSchema[2m > [22mshould require account_id[32m 0[2mms[22m[39m
|
|
222
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionSchema[2m > [22mshould require amount to be an integer[32m 1[2mms[22m[39m
|
|
223
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionSchema[2m > [22mshould validate date format[32m 1[2mms[22m[39m
|
|
224
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionSchema[2m > [22mshould validate cleared status enum[32m 0[2mms[22m[39m
|
|
225
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionSchema[2m > [22mshould validate flag_color enum[32m 0[2mms[22m[39m
|
|
226
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionSchema[2m > [22mshould validate parameters with subtransactions when totals match[32m 1[2mms[22m[39m
|
|
227
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionSchema[2m > [22mshould reject parameters when subtransaction totals do not match amount[32m 1[2mms[22m[39m
|
|
228
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransaction[2m > [22mshould create transaction with required fields only[32m 4[2mms[22m[39m
|
|
229
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransaction[2m > [22mshould create transaction with all optional fields[32m 1[2mms[22m[39m
|
|
230
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransaction[2m > [22mshould create split transaction with subtransactions[32m 2[2mms[22m[39m
|
|
231
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransaction[2m > [22mshould handle 404 not found errors[32m 0[2mms[22m[39m
|
|
232
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransaction[2m > [22mshould handle authentication errors[32m 0[2mms[22m[39m
|
|
233
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransaction[2m > [22mshould handle generic errors[32m 0[2mms[22m[39m
|
|
234
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransaction[2m > [22mshould invalidate transaction cache on successful transaction creation[32m 2[2mms[22m[39m
|
|
235
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransaction[2m > [22mshould not invalidate cache on dry_run transaction creation[32m 1[2mms[22m[39m
|
|
236
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22msurfaces top-level validation errors with a reserved transaction index[32m 4[2mms[22m[39m
|
|
237
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mcombines reserved and per-transaction validation errors[32m 3[2mms[22m[39m
|
|
238
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateReceiptSplitTransactionSchema[2m > [22mshould validate a well-formed receipt split payload[32m 11[2mms[22m[39m
|
|
239
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateReceiptSplitTransactionSchema[2m > [22mshould reject when subtotal does not match categorized items[32m 1[2mms[22m[39m
|
|
240
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateReceiptSplitTransactionSchema[2m > [22mshould reject when total does not equal subtotal plus tax[32m 0[2mms[22m[39m
|
|
241
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateReceiptSplitTransaction[2m > [22mshould return a detailed dry-run summary without calling the API[32m 2[2mms[22m[39m
|
|
242
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateReceiptSplitTransaction[2m > [22mshould create a split transaction and attach receipt summary[32m 2[2mms[22m[39m
|
|
243
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionSchema[2m > [22mshould validate valid parameters with minimal fields[32m 1[2mms[22m[39m
|
|
244
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionSchema[2m > [22mshould validate valid parameters with all optional fields[32m 0[2mms[22m[39m
|
|
245
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionSchema[2m > [22mshould require budget_id[32m 0[2mms[22m[39m
|
|
246
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionSchema[2m > [22mshould require transaction_id[32m 0[2mms[22m[39m
|
|
247
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionSchema[2m > [22mshould require amount to be an integer when provided[32m 0[2mms[22m[39m
|
|
248
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionSchema[2m > [22mshould validate date format when provided[32m 0[2mms[22m[39m
|
|
249
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionSchema[2m > [22mshould validate cleared status enum when provided[32m 0[2mms[22m[39m
|
|
250
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionSchema[2m > [22mshould validate flag_color enum when provided[32m 0[2mms[22m[39m
|
|
251
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransaction[2m > [22mshould update transaction with single field[32m 2[2mms[22m[39m
|
|
252
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransaction[2m > [22mshould update transaction with multiple fields[32m 1[2mms[22m[39m
|
|
253
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransaction[2m > [22mshould handle 404 not found errors[32m 0[2mms[22m[39m
|
|
254
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransaction[2m > [22mshould handle authentication errors[32m 0[2mms[22m[39m
|
|
255
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransaction[2m > [22mshould handle generic errors[32m 0[2mms[22m[39m
|
|
256
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransaction[2m > [22mshould invalidate transaction cache on successful transaction update[32m 1[2mms[22m[39m
|
|
257
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransaction[2m > [22mshould not invalidate cache on dry_run transaction update[32m 1[2mms[22m[39m
|
|
258
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mDeleteTransactionSchema[2m > [22mshould validate valid parameters[32m 1[2mms[22m[39m
|
|
259
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mDeleteTransactionSchema[2m > [22mshould require budget_id[32m 0[2mms[22m[39m
|
|
260
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mDeleteTransactionSchema[2m > [22mshould require transaction_id[32m 0[2mms[22m[39m
|
|
261
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mDeleteTransactionSchema[2m > [22mshould reject empty strings[32m 0[2mms[22m[39m
|
|
262
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould accept a valid batch of multiple transactions[32m 1[2mms[22m[39m
|
|
263
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould accept the minimum batch size of one transaction[32m 0[2mms[22m[39m
|
|
264
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould accept the maximum batch size of 100 transactions[32m 2[2mms[22m[39m
|
|
265
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould reject an empty transactions array[32m 0[2mms[22m[39m
|
|
266
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould reject batches exceeding 100 transactions[32m 2[2mms[22m[39m
|
|
267
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould reject transactions missing required fields[32m 1[2mms[22m[39m
|
|
268
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould validate ISO date format for each transaction[32m 1[2mms[22m[39m
|
|
269
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould require integer milliunit amounts[32m 1[2mms[22m[39m
|
|
270
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould reject invalid cleared enum values[32m 0[2mms[22m[39m
|
|
271
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould reject transactions containing subtransactions[32m 1[2mms[22m[39m
|
|
272
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould fail when any transaction in the batch is invalid[32m 0[2mms[22m[39m
|
|
273
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mCreateTransactionsSchema[2m > [22mshould accept optional import_id values[32m 0[2mms[22m[39m
|
|
274
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleDeleteTransaction[2m > [22mshould delete transaction successfully[32m 1[2mms[22m[39m
|
|
275
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleDeleteTransaction[2m > [22mshould handle 404 not found errors[32m 0[2mms[22m[39m
|
|
276
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleDeleteTransaction[2m > [22mshould handle authentication errors[32m 0[2mms[22m[39m
|
|
277
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleDeleteTransaction[2m > [22mshould handle generic errors[32m 1[2mms[22m[39m
|
|
278
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleDeleteTransaction[2m > [22mshould invalidate transaction cache on successful transaction deletion[32m 1[2mms[22m[39m
|
|
279
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleDeleteTransaction[2m > [22mshould not invalidate cache on dry_run transaction deletion[32m 1[2mms[22m[39m
|
|
280
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mdry run[2m > [22mreturns validation summary without calling the API[32m 2[2mms[22m[39m
|
|
281
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mdry run[2m > [22msurfaces validation errors before execution[32m 1[2mms[22m[39m
|
|
282
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22msuccessful creation[2m > [22mcreates a small batch with import_ids and correlates results[32m 2[2mms[22m[39m
|
|
283
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22msuccessful creation[2m > [22mcorrelates transactions without import_ids using hashes[32m 1[2mms[22m[39m
|
|
284
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22msuccessful creation[2m > [22mhandles mixed import_id and hash correlation scenarios[32m 1[2mms[22m[39m
|
|
285
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mduplicate handling[2m > [22mmarks all transactions as duplicates when import_ids already exist[32m 1[2mms[22m[39m
|
|
286
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mduplicate handling[2m > [22mmarks partial duplicates while creating the rest[32m 1[2mms[22m[39m
|
|
287
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mresponse size management[2m > [22mkeeps full response when under 64KB[32m 1[2mms[22m[39m
|
|
288
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mresponse size management[2m > [22mdowngrades to summary mode when response exceeds 64KB[32m 1[2mms[22m[39m
|
|
289
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mresponse size management[2m > [22mdowngrades to ids_only mode when necessary[32m 1[2mms[22m[39m
|
|
290
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mresponse size management[2m > [22merrors when response cannot fit under 100KB[32m 1[2mms[22m[39m
|
|
291
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mcorrelation edge cases[2m > [22msupports multi-bucket matching for identical transactions[32m 1[2mms[22m[39m
|
|
292
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mcorrelation edge cases[2m > [22mrecords failures and logs correlation errors when correlation fails[32m 1[2mms[22m[39m
|
|
293
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mcache invalidation[2m > [22minvalidates transaction, account, and month caches for affected resources[32m 1[2mms[22m[39m
|
|
294
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mcache invalidation[2m > [22mdeduplicates cache keys for repeated accounts and months[32m 2[2mms[22m[39m
|
|
295
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22mcache invalidation[2m > [22mdoes not invalidate caches during dry runs[32m 1[2mms[22m[39m
|
|
296
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22merror handling and edge cases[2m > [22mpropagates API failures[32m 1[2mms[22m[39m
|
|
297
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22merror handling and edge cases[2m > [22mhandles general validation errors outside of dry run[32m 1[2mms[22m[39m
|
|
298
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22merror handling and edge cases[2m > [22msupports transactions without payees or categories and special memo characters[32m 1[2mms[22m[39m
|
|
299
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleCreateTransactions[2m > [22merror handling and edge cases[2m > [22mallows transfer transactions by passing transfer payee ids[32m 1[2mms[22m[39m
|
|
300
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould accept a valid batch of updates with all fields optional except id[32m 2[2mms[22m[39m
|
|
301
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould require id field for each transaction[32m 1[2mms[22m[39m
|
|
302
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould accept minimum batch size of one transaction[32m 0[2mms[22m[39m
|
|
303
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould accept maximum batch size of 100 transactions[32m 2[2mms[22m[39m
|
|
304
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould reject empty transactions array[32m 1[2mms[22m[39m
|
|
305
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould reject batches exceeding 100 transactions[32m 3[2mms[22m[39m
|
|
306
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould validate ISO date format for optional date field[32m 1[2mms[22m[39m
|
|
307
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould validate ISO date format for optional original_date field[32m 1[2mms[22m[39m
|
|
308
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould require integer milliunit amounts when provided[32m 1[2mms[22m[39m
|
|
309
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould reject invalid cleared enum values[32m 1[2mms[22m[39m
|
|
310
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould accept optional metadata fields for cache invalidation[32m 0[2mms[22m[39m
|
|
311
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould accept update with only id field (no changes)[32m 0[2mms[22m[39m
|
|
312
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mUpdateTransactionsSchema[2m > [22mshould reject account_id field (account moves not supported)[32m 1[2mms[22m[39m
|
|
313
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mdry run[2m > [22mreturns validation summary without calling the API[32m 4[2mms[22m[39m
|
|
314
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mdry run[2m > [22mprovides before/after preview showing only changed fields[32m 1[2mms[22m[39m
|
|
315
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mdry run[2m > [22msets before to "unavailable" when current state cannot be fetched[32m 1[2mms[22m[39m
|
|
316
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mdry run[2m > [22mincludes summary with accounts_affected and fields_to_update[32m 1[2mms[22m[39m
|
|
317
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mdry run[2m > [22msurfaces validation errors before execution[32m 1[2mms[22m[39m
|
|
318
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mdry run[2m > [22mreuses metadata resolution output for preview without duplicate fetches[32m 1[2mms[22m[39m
|
|
319
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22msuccessful updates[2m > [22mupdates transactions and correlates results[32m 2[2mms[22m[39m
|
|
320
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22msuccessful updates[2m > [22monly updates provided fields (partial updates)[32m 1[2mms[22m[39m
|
|
321
|
-
[90mstderr[2m | src/tools/__tests__/transactionTools.test.ts[2m > [22m[2mtransactionTools[2m > [22m[2mhandleUpdateTransactions[2m > [22m[2mmetadata completeness threshold[2m > [22m[2mthrows ValidationError when >5% of transactions have missing metadata (live mode)
|
|
322
|
-
[22m[39m[ERROR] ynab:update_transactions:resolve_metadata | FAILED | error:"Failed to resolve transaction metadata"
|
|
323
|
-
[ERROR] ynab:update_transactions:resolve_metadata | FAILED | error:"Failed to resolve transaction metadata"
|
|
324
|
-
|
|
325
|
-
[90mstderr[2m | src/tools/__tests__/transactionTools.test.ts[2m > [22m[2mtransactionTools[2m > [22m[2mhandleUpdateTransactions[2m > [22m[2mmetadata completeness threshold[2m > [22m[2msucceeds when <=5% of transactions have missing metadata (live mode)
|
|
326
|
-
[22m[39m[ERROR] ynab:update_transactions:resolve_metadata | FAILED | error:"Failed to resolve transaction metadata"
|
|
327
|
-
|
|
328
|
-
[90mstderr[2m | src/tools/__tests__/transactionTools.test.ts[2m > [22m[2mtransactionTools[2m > [22m[2mhandleUpdateTransactions[2m > [22m[2mmetadata completeness threshold[2m > [22m[2msucceeds when <=5% of transactions have missing metadata (live mode)
|
|
329
|
-
[22m[39m[INFO] ynab:update_transactions:metadata_resolution_warning | SUCCESS
|
|
330
|
-
|
|
331
|
-
[90mstderr[2m | src/tools/__tests__/transactionTools.test.ts[2m > [22m[2mtransactionTools[2m > [22m[2mhandleUpdateTransactions[2m > [22m[2mmetadata completeness threshold[2m > [22m[2mreturns warnings in dry_run mode when metadata is missing
|
|
332
|
-
[22m[39m[ERROR] ynab:update_transactions:resolve_metadata | FAILED | error:"Failed to resolve transaction metadata"
|
|
333
|
-
[ERROR] ynab:update_transactions:resolve_metadata | FAILED | error:"Failed to resolve transaction metadata"
|
|
334
|
-
|
|
335
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mmetadata resolution for cache invalidation[2m > [22muses client-supplied original_* metadata when provided[32m 1[2mms[22m[39m
|
|
336
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mmetadata resolution for cache invalidation[2m > [22mfalls back to cache when metadata not provided[32m 1[2mms[22m[39m
|
|
337
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mmetadata resolution for cache invalidation[2m > [22mfalls back to API when metadata not in cache[32m 1[2mms[22m[39m
|
|
338
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22merror handling[2m > [22mhandles network failures[32m 1[2mms[22m[39m
|
|
339
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22merror handling[2m > [22mhandles invalid transaction IDs gracefully[32m 1[2mms[22m[39m
|
|
340
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22merror handling[2m > [22mhandles metadata resolution failures without crashing[32m 1[2mms[22m[39m
|
|
341
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mmetadata completeness threshold[2m > [22mthrows ValidationError when >5% of transactions have missing metadata (live mode)[32m 10[2mms[22m[39m
|
|
342
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mmetadata completeness threshold[2m > [22msucceeds when <=5% of transactions have missing metadata (live mode)[32m 3[2mms[22m[39m
|
|
343
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mmetadata completeness threshold[2m > [22mreturns warnings in dry_run mode when metadata is missing[32m 2[2mms[22m[39m
|
|
344
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mmetadata completeness threshold[2m > [22mdoes not return warnings in dry_run when all metadata is resolved[32m 3[2mms[22m[39m
|
|
345
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mcorrelation_key in results[2m > [22mincludes correlation_key in successful update results[32m 4[2mms[22m[39m
|
|
346
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mcorrelation_key in results[2m > [22mincludes correlation_key in failed update results[32m 1[2mms[22m[39m
|
|
347
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mcorrelation_key in results[2m > [22mpreserves correlation_key in ids_only downgrade mode[32m 2[2mms[22m[39m
|
|
348
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mresponse size management[2m > [22mkeeps full response when under 64KB[32m 1[2mms[22m[39m
|
|
349
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mresponse size management[2m > [22mdowngrades to summary mode when response exceeds 64KB[32m 2[2mms[22m[39m
|
|
350
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mcache invalidation[2m > [22minvalidates transaction and account caches after successful updates[32m 1[2mms[22m[39m
|
|
351
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/transactionTools.test.ts[2m > [22mtransactionTools[2m > [22mhandleUpdateTransactions[2m > [22mcache invalidation[2m > [22mdoes not invalidate cache on dry run[32m 1[2mms[22m[39m
|
|
352
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleListAccounts[2m > [22mshould include cache metadata from delta fetcher results[32m 8[2mms[22m[39m
|
|
353
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleListAccounts[2m > [22mshould return formatted account list on success[32m 3[2mms[22m[39m
|
|
354
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleListAccounts[2m > [22mshould handle 404 budget not found errors[32m 3[2mms[22m[39m
|
|
355
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleListAccounts[2m > [22mshould handle 401 authentication errors[32m 1[2mms[22m[39m
|
|
356
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleListAccounts[2m > [22mshould handle generic errors[32m 5[2mms[22m[39m
|
|
357
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleGetAccount[2m > [22mshould return detailed account information on success[32m 2[2mms[22m[39m
|
|
358
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleGetAccount[2m > [22mshould report cached responses when cache entries exist[32m 1[2mms[22m[39m
|
|
359
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleGetAccount[2m > [22mshould handle 404 account not found errors[32m 1[2mms[22m[39m
|
|
360
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleGetAccount[2m > [22mshould handle authentication errors[32m 1[2mms[22m[39m
|
|
361
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleCreateAccount[2m > [22mshould create account with all supported types[32m 8[2mms[22m[39m
|
|
362
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleCreateAccount[2m > [22mshould create account without initial balance[32m 2[2mms[22m[39m
|
|
363
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleCreateAccount[2m > [22mshould convert balance to milliunits[32m 1[2mms[22m[39m
|
|
364
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleCreateAccount[2m > [22mshould handle creation errors[32m 1[2mms[22m[39m
|
|
365
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleCreateAccount[2m > [22mshould invalidate account list cache on successful account creation[32m 1[2mms[22m[39m
|
|
366
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mhandleCreateAccount[2m > [22mshould not invalidate cache on dry_run account creation[32m 3[2mms[22m[39m
|
|
367
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mListAccountsSchema[2m > [22mshould validate valid budget_id[32m 3[2mms[22m[39m
|
|
368
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mListAccountsSchema[2m > [22mshould reject empty budget_id[32m 3[2mms[22m[39m
|
|
369
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mListAccountsSchema[2m > [22mshould reject missing budget_id[32m 1[2mms[22m[39m
|
|
370
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mGetAccountSchema[2m > [22mshould validate valid parameters[32m 1[2mms[22m[39m
|
|
371
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mGetAccountSchema[2m > [22mshould reject missing account_id[32m 1[2mms[22m[39m
|
|
372
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mGetAccountSchema[2m > [22mshould reject empty account_id[32m 1[2mms[22m[39m
|
|
373
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mCreateAccountSchema[2m > [22mshould validate valid account creation parameters[32m 4[2mms[22m[39m
|
|
374
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mCreateAccountSchema[2m > [22mshould validate without optional balance[32m 1[2mms[22m[39m
|
|
375
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mCreateAccountSchema[2m > [22mshould validate all supported account types[32m 1[2mms[22m[39m
|
|
376
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mCreateAccountSchema[2m > [22mshould reject invalid account type[32m 1[2mms[22m[39m
|
|
377
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mCreateAccountSchema[2m > [22mshould reject empty name[32m 1[2mms[22m[39m
|
|
378
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/accountTools.test.ts[2m > [22mAccount Tools[2m > [22mSchema Validation[2m > [22mCreateAccountSchema[2m > [22mshould reject missing required fields[32m 1[2mms[22m[39m
|
|
379
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould execute operation successfully with valid input
|
|
380
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
381
|
-
|
|
382
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould execute operation successfully with valid input
|
|
383
|
-
[22m[39mRecorded request for token_12bf80ff: 1/200 requests
|
|
384
|
-
|
|
385
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould execute operation successfully with valid input
|
|
386
|
-
[22m[39mRate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
|
|
387
|
-
[INFO] ynab:test:test operation | SUCCESS | 5ms | rate_limit_remaining:199
|
|
388
|
-
|
|
389
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould validate input parameters
|
|
390
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
391
|
-
[ERROR] ynab:test:test operation | FAILED | 2ms | rate_limit_remaining:200 | error:"Validation failed: Validation error: Too small: expected string to have >=1 characters at "budget_id"; Invalid input: expected number, received string at "amount""
|
|
392
|
-
|
|
393
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould enforce rate limiting
|
|
394
|
-
[22m[39m[INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:1
|
|
395
|
-
|
|
396
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould enforce rate limiting
|
|
397
|
-
[22m[39m[INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:0
|
|
398
|
-
[WARN] Rate limit exceeded for ynab:test
|
|
399
|
-
|
|
400
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould enforce rate limiting
|
|
401
|
-
[22m[39m[ERROR] ynab:test:test operation | FAILED | 0ms | rate_limit_remaining:0 | error:"Rate limit exceeded. Please wait before making additional requests."
|
|
402
|
-
[WARN] Rate limit exceeded for ynab:test
|
|
403
|
-
|
|
404
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould log successful requests
|
|
405
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
406
|
-
|
|
407
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould log successful requests
|
|
408
|
-
[22m[39mRecorded request for token_12bf80ff: 1/200 requests
|
|
409
|
-
|
|
410
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould log successful requests
|
|
411
|
-
[22m[39mRate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
|
|
412
|
-
[INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:199
|
|
413
|
-
|
|
414
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould log failed requests
|
|
415
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
416
|
-
|
|
417
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould log failed requests
|
|
418
|
-
[22m[39mRecorded request for token_12bf80ff: 1/200 requests
|
|
419
|
-
|
|
420
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould log failed requests
|
|
421
|
-
[22m[39mRate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
|
|
422
|
-
[ERROR] ynab:test:test operation | FAILED | 1ms | rate_limit_remaining:199 | error:"Test error"
|
|
423
|
-
|
|
424
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould handle rate limit errors specially
|
|
425
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
426
|
-
|
|
427
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould handle rate limit errors specially
|
|
428
|
-
[22m[39mRecorded request for token_12bf80ff: 1/200 requests
|
|
429
|
-
|
|
430
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould handle rate limit errors specially
|
|
431
|
-
[22m[39mRate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
|
|
432
|
-
[ERROR] ynab:test:test operation | FAILED | 1ms | rate_limit_remaining:199 | error:"Rate limit exceeded"
|
|
433
|
-
|
|
434
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould include rate limit info in logs
|
|
435
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
436
|
-
|
|
437
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould include rate limit info in logs
|
|
438
|
-
[22m[39mRecorded request for token_12bf80ff: 1/200 requests
|
|
439
|
-
|
|
440
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurity[2m > [22m[2mshould include rate limit info in logs
|
|
441
|
-
[22m[39mRate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
|
|
442
|
-
[INFO] ynab:test:test operation | SUCCESS | 1ms | rate_limit_remaining:199
|
|
443
|
-
|
|
444
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2minput validation[2m > [22m[2mshould validate required fields
|
|
445
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
446
|
-
[ERROR] ynab:test:test operation | FAILED | 1ms | rate_limit_remaining:200 | error:"Validation failed: Validation error: Invalid input: expected string, received undefined at "budget_id""
|
|
447
|
-
|
|
448
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2minput validation[2m > [22m[2mshould validate field types
|
|
449
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
450
|
-
[ERROR] ynab:test:test operation | FAILED | 0ms | rate_limit_remaining:200 | error:"Validation failed: Validation error: Invalid input: expected number, received string at "amount""
|
|
451
|
-
|
|
452
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2minput validation[2m > [22m[2mshould pass valid optional fields
|
|
453
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
454
|
-
|
|
455
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2minput validation[2m > [22m[2mshould pass valid optional fields
|
|
456
|
-
[22m[39mRecorded request for token_12bf80ff: 1/200 requests
|
|
457
|
-
|
|
458
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2minput validation[2m > [22m[2mshould pass valid optional fields
|
|
459
|
-
[22m[39mRate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
|
|
460
|
-
[INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:199
|
|
461
|
-
|
|
462
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use consistent hashing for the same token
|
|
463
|
-
[22m[39mRate limit check for token_1e79b1c0: 0/200 requests, remaining: 200, limited: false
|
|
464
|
-
|
|
465
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use consistent hashing for the same token
|
|
466
|
-
[22m[39mRecorded request for token_1e79b1c0: 1/200 requests
|
|
467
|
-
|
|
468
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use consistent hashing for the same token
|
|
469
|
-
[22m[39mRate limit check for token_1e79b1c0: 1/200 requests, remaining: 199, limited: false
|
|
470
|
-
[INFO] ynab:test1:test | SUCCESS | 1ms | rate_limit_remaining:199
|
|
471
|
-
|
|
472
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use consistent hashing for the same token
|
|
473
|
-
[22m[39mRate limit check for token_1e79b1c0: 1/200 requests, remaining: 199, limited: false
|
|
474
|
-
|
|
475
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use consistent hashing for the same token
|
|
476
|
-
[22m[39mRecorded request for token_1e79b1c0: 2/200 requests
|
|
477
|
-
|
|
478
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use consistent hashing for the same token
|
|
479
|
-
[22m[39mRate limit check for token_1e79b1c0: 2/200 requests, remaining: 198, limited: false
|
|
480
|
-
[INFO] ynab:test2:test | SUCCESS | 1ms | rate_limit_remaining:198
|
|
481
|
-
|
|
482
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use different hashing for different tokens
|
|
483
|
-
[22m[39mRate limit check for token_16a2a057: 0/200 requests, remaining: 200, limited: false
|
|
484
|
-
|
|
485
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use different hashing for different tokens
|
|
486
|
-
[22m[39mRecorded request for token_16a2a057: 1/200 requests
|
|
487
|
-
|
|
488
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use different hashing for different tokens
|
|
489
|
-
[22m[39mRate limit check for token_16a2a057: 1/200 requests, remaining: 199, limited: false
|
|
490
|
-
[INFO] ynab:test:test | SUCCESS | 1ms | rate_limit_remaining:199
|
|
491
|
-
|
|
492
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use different hashing for different tokens
|
|
493
|
-
[22m[39mRate limit check for token_16a2a058: 0/200 requests, remaining: 200, limited: false
|
|
494
|
-
|
|
495
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use different hashing for different tokens
|
|
496
|
-
[22m[39mRecorded request for token_16a2a058: 1/200 requests
|
|
497
|
-
|
|
498
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mtoken hashing[2m > [22m[2mshould use different hashing for different tokens
|
|
499
|
-
[22m[39mRate limit check for token_16a2a058: 1/200 requests, remaining: 199, limited: false
|
|
500
|
-
[INFO] ynab:test:test | SUCCESS | 0ms | rate_limit_remaining:199
|
|
501
|
-
|
|
502
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mgetSecurityStats[2m > [22m[2mshould return security statistics
|
|
503
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
504
|
-
|
|
505
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mgetSecurityStats[2m > [22m[2mshould return security statistics
|
|
506
|
-
[22m[39mRecorded request for token_12bf80ff: 1/200 requests
|
|
507
|
-
|
|
508
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mgetSecurityStats[2m > [22m[2mshould return security statistics
|
|
509
|
-
[22m[39mRate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
|
|
510
|
-
[INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:199
|
|
511
|
-
|
|
512
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mreset[2m > [22m[2mshould reset security state
|
|
513
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
514
|
-
|
|
515
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mreset[2m > [22m[2mshould reset security state
|
|
516
|
-
[22m[39mRecorded request for token_12bf80ff: 1/200 requests
|
|
517
|
-
|
|
518
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mreset[2m > [22m[2mshould reset security state
|
|
519
|
-
[22m[39mRate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
|
|
520
|
-
[INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:199
|
|
521
|
-
|
|
522
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurityWrapper[2m > [22m[2mshould create a properly configured wrapper function
|
|
523
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
524
|
-
|
|
525
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurityWrapper[2m > [22m[2mshould create a properly configured wrapper function
|
|
526
|
-
[22m[39mRecorded request for token_12bf80ff: 1/200 requests
|
|
527
|
-
|
|
528
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2mwithSecurityWrapper[2m > [22m[2mshould create a properly configured wrapper function
|
|
529
|
-
[22m[39mRate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
|
|
530
|
-
[INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:199
|
|
531
|
-
|
|
532
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2merror handling[2m > [22m[2mshould handle validation errors gracefully
|
|
533
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
534
|
-
[ERROR] ynab:test:test operation | FAILED | 0ms | rate_limit_remaining:200 | error:"Validation failed: Validation error: Too small: expected string to have >=10 characters at "budget_id""
|
|
535
|
-
|
|
536
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2merror handling[2m > [22m[2mshould handle operation errors and re-throw them
|
|
537
|
-
[22m[39mRate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
|
|
538
|
-
|
|
539
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2merror handling[2m > [22m[2mshould handle operation errors and re-throw them
|
|
540
|
-
[22m[39mRecorded request for token_12bf80ff: 1/200 requests
|
|
541
|
-
|
|
542
|
-
[90mstderr[2m | src/server/__tests__/securityMiddleware.test.ts[2m > [22m[2mSecurityMiddleware[2m > [22m[2merror handling[2m > [22m[2mshould handle operation errors and re-throw them
|
|
543
|
-
[22m[39mRate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
|
|
544
|
-
[ERROR] ynab:test:test operation | FAILED | 2ms | rate_limit_remaining:199 | error:"Operation failed"
|
|
545
|
-
|
|
546
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mwithSecurity[2m > [22mshould execute operation successfully with valid input[32m 15[2mms[22m[39m
|
|
547
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mwithSecurity[2m > [22mshould validate input parameters[32m 5[2mms[22m[39m
|
|
548
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mwithSecurity[2m > [22mshould enforce rate limiting[32m 4[2mms[22m[39m
|
|
549
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mwithSecurity[2m > [22mshould log successful requests[32m 3[2mms[22m[39m
|
|
550
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mwithSecurity[2m > [22mshould log failed requests[32m 3[2mms[22m[39m
|
|
551
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mwithSecurity[2m > [22mshould handle rate limit errors specially[32m 2[2mms[22m[39m
|
|
552
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mwithSecurity[2m > [22mshould include rate limit info in logs[32m 2[2mms[22m[39m
|
|
553
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22minput validation[2m > [22mshould validate required fields[32m 2[2mms[22m[39m
|
|
554
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22minput validation[2m > [22mshould validate field types[32m 2[2mms[22m[39m
|
|
555
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22minput validation[2m > [22mshould pass valid optional fields[32m 2[2mms[22m[39m
|
|
556
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mtoken hashing[2m > [22mshould use consistent hashing for the same token[32m 3[2mms[22m[39m
|
|
557
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mtoken hashing[2m > [22mshould use different hashing for different tokens[32m 2[2mms[22m[39m
|
|
558
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mgetSecurityStats[2m > [22mshould return security statistics[32m 2[2mms[22m[39m
|
|
559
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mreset[2m > [22mshould reset security state[32m 1[2mms[22m[39m
|
|
560
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22mwithSecurityWrapper[2m > [22mshould create a properly configured wrapper function[32m 2[2mms[22m[39m
|
|
561
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22merror handling[2m > [22mshould handle validation errors gracefully[32m 3[2mms[22m[39m
|
|
562
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/securityMiddleware.test.ts[2m > [22mSecurityMiddleware[2m > [22merror handling[2m > [22mshould handle operation errors and re-throw them[32m 3[2mms[22m[39m
|
|
563
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mCompareTransactionsSchema[2m > [22mshould export schema correctly[32m 17[2mms[22m[39m
|
|
564
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mCompareTransactionsSchema[2m > [22mshould apply default values through schema[32m 1[2mms[22m[39m
|
|
565
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mhandleCompareTransactions orchestration[2m > [22mshould orchestrate CSV data processing correctly[32m 7[2mms[22m[39m
|
|
566
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mhandleCompareTransactions orchestration[2m > [22mshould orchestrate CSV file processing correctly[32m 2[2mms[22m[39m
|
|
567
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mhandleCompareTransactions orchestration[2m > [22mshould handle auto-detection correctly[32m 2[2mms[22m[39m
|
|
568
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mhandleCompareTransactions orchestration[2m > [22mshould call YNAB API correctly[32m 3[2mms[22m[39m
|
|
569
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mhandleCompareTransactions orchestration[2m > [22mshould calculate date range correctly[32m 1[2mms[22m[39m
|
|
570
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mhandleCompareTransactions orchestration[2m > [22mshould pass filtered transactions to matcher[32m 3[2mms[22m[39m
|
|
571
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mhandleCompareTransactions orchestration[2m > [22mshould apply statement window filtering[32m 16[2mms[22m[39m
|
|
572
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mhandleCompareTransactions orchestration[2m > [22mshould build final result correctly[32m 6[2mms[22m[39m
|
|
573
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mhandleCompareTransactions orchestration[2m > [22mshould handle empty bank transactions correctly[32m 5[2mms[22m[39m
|
|
574
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/index.test.ts[2m > [22mcompareTransactions index (main handler)[2m > [22mhandleCompareTransactions orchestration[2m > [22mshould handle auto-detection errors gracefully[32m 2[2mms[22m[39m
|
|
575
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith valid provided budget ID[2m > [22mshould return provided UUID v4 budget ID[32m 3[2mms[22m[39m
|
|
576
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith valid provided budget ID[2m > [22mshould return error for "default" keyword when no default budget set[32m 2[2mms[22m[39m
|
|
577
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith valid provided budget ID[2m > [22mshould return default budget ID when "default" keyword provided[32m 1[2mms[22m[39m
|
|
578
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith valid provided budget ID[2m > [22mshould return error for "last-used" keyword (not supported)[32m 1[2mms[22m[39m
|
|
579
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith valid provided budget ID[2m > [22mshould prioritize provided ID over default ID[32m 0[2mms[22m[39m
|
|
580
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith valid provided budget ID[2m > [22mshould trim whitespace from provided ID[32m 0[2mms[22m[39m
|
|
581
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith invalid provided budget ID[2m > [22mshould return error for invalid UUID format[32m 1[2mms[22m[39m
|
|
582
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith invalid provided budget ID[2m > [22mshould return error for malformed UUID[32m 1[2mms[22m[39m
|
|
583
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith invalid provided budget ID[2m > [22mshould return error for empty string[32m 1[2mms[22m[39m
|
|
584
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith invalid provided budget ID[2m > [22mshould return error for whitespace-only string[32m 7[2mms[22m[39m
|
|
585
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith default budget ID fallback[2m > [22mshould return valid default UUID when no provided ID[32m 0[2mms[22m[39m
|
|
586
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith default budget ID fallback[2m > [22mshould return error for "default" keyword as default budget ID[32m 1[2mms[22m[39m
|
|
587
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith default budget ID fallback[2m > [22mshould return error when default ID is invalid[32m 1[2mms[22m[39m
|
|
588
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith missing budget ID[2m > [22mshould return error when no provided ID and no default[32m 1[2mms[22m[39m
|
|
589
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mresolveBudgetId[2m > [22mwith missing budget ID[2m > [22mshould return error when provided ID is undefined and no default[32m 1[2mms[22m[39m
|
|
590
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith valid budget IDs[2m > [22mshould return valid UUID v4 format[32m 0[2mms[22m[39m
|
|
591
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith valid budget IDs[2m > [22mshould return error for "default" keyword (keywords not allowed in validation)[32m 1[2mms[22m[39m
|
|
592
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith valid budget IDs[2m > [22mshould return error for "last-used" keyword (keywords not allowed in validation)[32m 0[2mms[22m[39m
|
|
593
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith valid budget IDs[2m > [22mshould trim whitespace and return valid ID[32m 0[2mms[22m[39m
|
|
594
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith valid budget IDs[2m > [22mshould handle mixed case UUID correctly[32m 0[2mms[22m[39m
|
|
595
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith invalid budget IDs[2m > [22mshould return error for invalid UUID format[32m 4[2mms[22m[39m
|
|
596
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith invalid budget IDs[2m > [22mshould return error for malformed UUID[32m 1[2mms[22m[39m
|
|
597
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith invalid budget IDs[2m > [22mshould return error for empty string[32m 0[2mms[22m[39m
|
|
598
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith invalid budget IDs[2m > [22mshould return error for whitespace-only string[32m 0[2mms[22m[39m
|
|
599
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith invalid budget IDs[2m > [22mshould return error for non-string input[32m 0[2mms[22m[39m
|
|
600
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22mwith invalid budget IDs[2m > [22mshould return error for invalid keyword format[32m 0[2mms[22m[39m
|
|
601
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22medge cases[2m > [22mshould handle very long strings[32m 0[2mms[22m[39m
|
|
602
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22medge cases[2m > [22mshould handle special characters[32m 0[2mms[22m[39m
|
|
603
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mvalidateBudgetId[2m > [22medge cases[2m > [22mshould handle unicode characters[32m 1[2mms[22m[39m
|
|
604
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mconvenience throw functions[2m > [22mresolveBudgetIdOrThrow[2m > [22mshould return valid budget ID when successful[32m 0[2mms[22m[39m
|
|
605
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mconvenience throw functions[2m > [22mresolveBudgetIdOrThrow[2m > [22mshould throw error when resolution fails[32m 2[2mms[22m[39m
|
|
606
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mconvenience throw functions[2m > [22mresolveBudgetIdOrThrow[2m > [22mshould throw error when no budget provided and no default[32m 1[2mms[22m[39m
|
|
607
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mconvenience throw functions[2m > [22mvalidateBudgetIdOrThrow[2m > [22mshould return valid budget ID when successful[32m 0[2mms[22m[39m
|
|
608
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mconvenience throw functions[2m > [22mvalidateBudgetIdOrThrow[2m > [22mshould throw error when validation fails[32m 1[2mms[22m[39m
|
|
609
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mconvenience throw functions[2m > [22mvalidateBudgetIdOrThrow[2m > [22mshould throw error for empty string[32m 0[2mms[22m[39m
|
|
610
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22merror creation functions[2m > [22mcreateMissingBudgetError[2m > [22mshould create standardized missing budget error[32m 1[2mms[22m[39m
|
|
611
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22merror creation functions[2m > [22mcreateInvalidBudgetError[2m > [22mshould create standardized invalid budget error with details[32m 1[2mms[22m[39m
|
|
612
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mconvenience functions[2m > [22mresolveBudgetId function[2m > [22mshould work the same as BudgetResolver.resolveBudgetId[32m 1[2mms[22m[39m
|
|
613
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mconvenience functions[2m > [22mvalidateBudgetId function[2m > [22mshould work the same as BudgetResolver.validateBudgetId[32m 0[2mms[22m[39m
|
|
614
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mconvenience functions[2m > [22mcreateMissingBudgetError function[2m > [22mshould work the same as BudgetResolver.createMissingBudgetError[32m 1[2mms[22m[39m
|
|
615
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mconvenience functions[2m > [22mcreateInvalidBudgetError function[2m > [22mshould work the same as BudgetResolver.createInvalidBudgetError[32m 5[2mms[22m[39m
|
|
616
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22merror response structure[2m > [22mshould create consistent error response shape for missing budget[32m 2[2mms[22m[39m
|
|
617
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22merror response structure[2m > [22mshould create consistent error response shape for invalid budget[32m 1[2mms[22m[39m
|
|
618
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22merror response structure[2m > [22mshould include actionable suggestions in error messages[32m 1[2mms[22m[39m
|
|
619
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/budgetResolver.test.ts[2m > [22mBudgetResolver[2m > [22mintegration with ErrorHandler[2m > [22mshould use ErrorHandler.createValidationError for consistent formatting[32m 1[2mms[22m[39m
|
|
620
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mtoMilli[2m > [22mconverts dollars to milliunits correctly[32m 3[2mms[22m[39m
|
|
621
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mtoMilli[2m > [22mthrows for invalid amounts[32m 2[2mms[22m[39m
|
|
622
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mfromMilli[2m > [22mconverts milliunits with 2 decimal digits (USD) by default[32m 1[2mms[22m[39m
|
|
623
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mfromMilli[2m > [22mconverts milliunits with 0 decimal digits (JPY)[32m 0[2mms[22m[39m
|
|
624
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mfromMilli[2m > [22mconverts milliunits with 3 decimal digits (BHD)[32m 1[2mms[22m[39m
|
|
625
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mfromMilli[2m > [22mconverts milliunits with explicit 2 decimal digits[32m 0[2mms[22m[39m
|
|
626
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22massertMilli[2m > [22mpasses for safe integers[32m 1[2mms[22m[39m
|
|
627
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22massertMilli[2m > [22mthrows for non-safe integers[32m 1[2mms[22m[39m
|
|
628
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22maddMilli[2m > [22madds milliunits correctly[32m 1[2mms[22m[39m
|
|
629
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22maddMilli[2m > [22mthrows on overflow[32m 0[2mms[22m[39m
|
|
630
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22minWindow[2m > [22mchecks date windows correctly[32m 0[2mms[22m[39m
|
|
631
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22minWindow[2m > [22mhandles optional bounds[32m 0[2mms[22m[39m
|
|
632
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mcurrency format helpers[2m > [22mextracts decimal digits from currency format[32m 0[2mms[22m[39m
|
|
633
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mcurrency format helpers[2m > [22mreturns default decimal digits for null/undefined[32m 0[2mms[22m[39m
|
|
634
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mcurrency format helpers[2m > [22mextracts currency code from currency format[32m 0[2mms[22m[39m
|
|
635
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mcurrency format helpers[2m > [22mreturns default currency for null/undefined[32m 0[2mms[22m[39m
|
|
636
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mmoneyValue helpers[2m > [22mderives direction correctly[32m 0[2mms[22m[39m
|
|
637
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mmoneyValue helpers[2m > [22mformats milliunits into currency strings with default 2 decimals[32m 46[2mms[22m[39m
|
|
638
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mmoneyValue helpers[2m > [22mformats milliunits with custom currency format[32m 1[2mms[22m[39m
|
|
639
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mmoneyValue helpers[2m > [22mcreates money values from milliunits with default 2 decimals[32m 1[2mms[22m[39m
|
|
640
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mmoneyValue helpers[2m > [22mcreates currency-aware money values with decimal digits[32m 1[2mms[22m[39m
|
|
641
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/money.test.ts[2m > [22mmoney utilities[2m > [22mmoneyValue helpers[2m > [22mcreates money values from decimal amounts[32m 1[2mms[22m[39m
|
|
642
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mregisters a tool and exposes it through getToolDefinitions[32m 7[2mms[22m[39m
|
|
643
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mthrows when registering duplicate tool names[32m 3[2mms[22m[39m
|
|
644
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mrejects invalid tool definitions[32m 1[2mms[22m[39m
|
|
645
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mlists tools with generated JSON schema when metadata missing[32m 7[2mms[22m[39m
|
|
646
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mprefers custom metadata JSON schema when provided[32m 1[2mms[22m[39m
|
|
647
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mexecutes a registered tool via security wrapper and handler[32m 5[2mms[22m[39m
|
|
648
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mroutes reconcile_account tool to handler emitting dual-channel output
|
|
649
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mmerges default arguments before validation[32m 2[2mms[22m[39m
|
|
650
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mpasses cache helpers to the handler context when injected[32m 1[2mms[22m[39m
|
|
651
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mextracts minify override from arguments when not explicitly provided[32m 5[2mms[22m[39m
|
|
652
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mprefers explicit minify override option over argument hints[32m 2[2mms[22m[39m
|
|
653
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mreturns validation error result for unknown tools[32m 1[2mms[22m[39m
|
|
654
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22msurfaces validation failures from security wrapper[32m 3[2mms[22m[39m
|
|
655
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mroutes handler exceptions to error handler[32m 2[2mms[22m[39m
|
|
656
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mnormalizes unexpected security errors[32m 2[2mms[22m[39m
|
|
657
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mreturns permissive schema when conversion fails[32m 11[2mms[22m[39m
|
|
658
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22msupports empty registry listings[32m 1[2mms[22m[39m
|
|
659
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mErrorHandler integration[2m > [22mshould use injected ErrorHandler instance[32m 1[2mms[22m[39m
|
|
660
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mErrorHandler integration[2m > [22mshould use the same formatter instance for both ErrorHandler and ToolRegistry[32m 1[2mms[22m[39m
|
|
661
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mErrorHandler integration[2m > [22mshould implement ErrorHandler contract interface[32m 1[2mms[22m[39m
|
|
662
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mOutput Schema Validation[2m > [22mvalidates handler output against declared output schema[32m 4[2mms[22m[39m
|
|
663
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mOutput Schema Validation[2m > [22mrejects handler output that does not match output schema[32m 5[2mms[22m[39m
|
|
664
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mOutput Schema Validation[2m > [22mrejects handler output with missing required fields[32m 2[2mms[22m[39m
|
|
665
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mOutput Schema Validation[2m > [22mrejects handler output with invalid JSON[32m 2[2mms[22m[39m
|
|
666
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mOutput Schema Validation[2m > [22mrejects handler output with empty content[32m 1[2mms[22m[39m
|
|
667
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mOutput Schema Validation[2m > [22mrejects handler output with non-text content[32m 1[2mms[22m[39m
|
|
668
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mOutput Schema Validation[2m > [22mrejects handler output with multiple invalid content items[32m 1[2mms[22m[39m
|
|
669
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mOutput Schema Validation[2m > [22mskips validation when no output schema is defined[32m 1[2mms[22m[39m
|
|
670
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/toolRegistry.test.ts[2m > [22mToolRegistry[2m > [22mOutput Schema Validation[2m > [22mincludes output schema in tool listing when defined[32m 3[2mms[22m[39m
|
|
671
|
-
[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 48[2mms[22m[39m
|
|
672
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mconstructor[2m > [22mshould initialize with dependencies[32m 4[2mms[22m[39m
|
|
673
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mshould always include timestamp[32m 8[2mms[22m[39m
|
|
674
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mserver diagnostics[2m > [22mshould include server information when include_server is true[32m 2[2mms[22m[39m
|
|
675
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mserver diagnostics[2m > [22mshould exclude server information when include_server is false[32m 1[2mms[22m[39m
|
|
676
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mserver diagnostics[2m > [22mshould handle custom NODE_ENV[32m 1[2mms[22m[39m
|
|
677
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mmemory diagnostics[2m > [22mshould include memory information when include_memory is true[32m 2[2mms[22m[39m
|
|
678
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mmemory diagnostics[2m > [22mshould exclude memory information when include_memory is false[32m 1[2mms[22m[39m
|
|
679
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mmemory diagnostics[2m > [22mshould handle undefined arrayBuffers[32m 1[2mms[22m[39m
|
|
680
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22menvironment diagnostics[2m > [22mshould include environment information when include_environment is true[32m 3[2mms[22m[39m
|
|
681
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22menvironment diagnostics[2m > [22mshould handle missing token[32m 2[2mms[22m[39m
|
|
682
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mdelta diagnostics[2m > [22mshould include delta metrics when include_delta is true[32m 1[2mms[22m[39m
|
|
683
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mdelta diagnostics[2m > [22mshould skip delta metrics when include_delta is not explicitly true[32m 1[2mms[22m[39m
|
|
684
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22msecurity diagnostics[2m > [22mshould include security information when include_security is true[32m 1[2mms[22m[39m
|
|
685
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22msecurity diagnostics[2m > [22mshould exclude security information when include_security is false[32m 1[2mms[22m[39m
|
|
686
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcache diagnostics[2m > [22mshould include cache information when include_cache is true[32m 1[2mms[22m[39m
|
|
687
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcache diagnostics[2m > [22mshould handle cache serialization errors gracefully[32m 1[2mms[22m[39m
|
|
688
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcache diagnostics[2m > [22mshould include enhanced cache metrics when available[32m 1[2mms[22m[39m
|
|
689
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcache diagnostics[2m > [22mshould handle missing enhanced metrics gracefully[32m 1[2mms[22m[39m
|
|
690
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcache diagnostics[2m > [22mshould format lastCleanup timestamp correctly[32m 1[2mms[22m[39m
|
|
691
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcache diagnostics[2m > [22mshould handle null lastCleanup timestamp[32m 1[2mms[22m[39m
|
|
692
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcache diagnostics[2m > [22mshould calculate and display hit rate percentage[32m 1[2mms[22m[39m
|
|
693
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcache diagnostics[2m > [22mshould include performance summary with evictions[32m 1[2mms[22m[39m
|
|
694
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcache diagnostics[2m > [22mshould handle zero requests for hit rate calculation[32m 1[2mms[22m[39m
|
|
695
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcombined diagnostics[2m > [22mshould include all diagnostics when all options are true[32m 1[2mms[22m[39m
|
|
696
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mDiagnosticManager[2m > [22mcollectDiagnostics[2m > [22mcombined diagnostics[2m > [22mshould include only timestamp when all options are false[32m 1[2mms[22m[39m
|
|
697
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mformatUptime[2m > [22mshould format seconds only[32m 1[2mms[22m[39m
|
|
698
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mformatUptime[2m > [22mshould format minutes and seconds[32m 1[2mms[22m[39m
|
|
699
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mformatUptime[2m > [22mshould format hours, minutes, and seconds[32m 1[2mms[22m[39m
|
|
700
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mformatUptime[2m > [22mshould format days, hours, minutes, and seconds[32m 1[2mms[22m[39m
|
|
701
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mformatUptime[2m > [22mshould handle zero uptime[32m 0[2mms[22m[39m
|
|
702
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mformatUptime[2m > [22mshould handle fractional milliseconds[32m 0[2mms[22m[39m
|
|
703
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mformatBytes[2m > [22mshould format bytes to MB with proper rounding[32m 1[2mms[22m[39m
|
|
704
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mformatBytes[2m > [22mshould handle large values[32m 0[2mms[22m[39m
|
|
705
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mmaskToken[2m > [22mshould return null for undefined token[32m 0[2mms[22m[39m
|
|
706
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mmaskToken[2m > [22mshould return null for empty token[32m 0[2mms[22m[39m
|
|
707
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mmaskToken[2m > [22mshould mask tokens with 8+ characters[32m 1[2mms[22m[39m
|
|
708
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mutility functions[2m > [22mmaskToken[2m > [22mshould mask short tokens differently[32m 1[2mms[22m[39m
|
|
709
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mdependency injection[2m > [22mshould use injected security middleware[32m 1[2mms[22m[39m
|
|
710
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mdependency injection[2m > [22mshould use injected cache manager[32m 1[2mms[22m[39m
|
|
711
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mdependency injection[2m > [22mshould use injected response formatter[32m 1[2mms[22m[39m
|
|
712
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/diagnostics.test.ts[2m > [22mdiagnostics module[2m > [22mdependency injection[2m > [22mshould use injected server version[32m 1[2mms[22m[39m
|
|
713
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mlogRequest[2m > [22m[2mshould log a successful request
|
|
714
|
-
[22m[39m[INFO] ynab:create_transaction:creating transaction | SUCCESS | 150ms
|
|
715
|
-
|
|
716
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mlogRequest[2m > [22m[2mshould log a failed request
|
|
717
|
-
[22m[39m[ERROR] ynab:get_budget:getting budget | FAILED | 75ms | error:"Budget not found"
|
|
718
|
-
|
|
719
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mlogRequest[2m > [22m[2mshould include rate limit information
|
|
720
|
-
[22m[39m[INFO] ynab:list_budgets:listing budgets | SUCCESS | 100ms | rate_limit_remaining:150
|
|
721
|
-
|
|
722
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mparameter sanitization[2m > [22m[2mshould sanitize sensitive parameter names
|
|
723
|
-
[22m[39m[INFO] ynab:test:test | SUCCESS
|
|
724
|
-
|
|
725
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mparameter sanitization[2m > [22m[2mshould sanitize long alphanumeric strings in values
|
|
726
|
-
[22m[39m[INFO] ynab:test:test | SUCCESS
|
|
727
|
-
|
|
728
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mparameter sanitization[2m > [22m[2mshould sanitize Bearer tokens in strings
|
|
729
|
-
[22m[39m[INFO] ynab:test:test | SUCCESS
|
|
730
|
-
|
|
731
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mparameter sanitization[2m > [22m[2mshould sanitize nested objects
|
|
732
|
-
[22m[39m[INFO] ynab:test:test | SUCCESS
|
|
733
|
-
|
|
734
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mparameter sanitization[2m > [22m[2mshould sanitize arrays
|
|
735
|
-
[22m[39m[INFO] ynab:test:test | SUCCESS
|
|
736
|
-
|
|
737
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mparameter sanitization[2m > [22m[2mshould not sanitize when sanitization is disabled
|
|
738
|
-
[22m[39m[INFO] ynab:test:test | SUCCESS
|
|
739
|
-
|
|
740
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2merror sanitization[2m > [22m[2mshould sanitize error messages
|
|
741
|
-
[22m[39m[ERROR] ynab:test:test | FAILED | error:"Authentication failed with token=***"
|
|
742
|
-
|
|
743
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2merror sanitization[2m > [22m[2mshould sanitize Bearer tokens in error messages
|
|
744
|
-
[22m[39m[ERROR] ynab:test:test | FAILED | error:"Invalid authorization header: Bearer ***"
|
|
745
|
-
|
|
746
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mlog management[2m > [22m[2mshould maintain maximum log entries
|
|
747
|
-
[22m[39m[INFO] ynab:test0:test | SUCCESS
|
|
748
|
-
[INFO] ynab:test1:test | SUCCESS
|
|
749
|
-
[INFO] ynab:test2:test | SUCCESS
|
|
750
|
-
[INFO] ynab:test3:test | SUCCESS
|
|
751
|
-
[INFO] ynab:test4:test | SUCCESS
|
|
752
|
-
|
|
753
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mlog management[2m > [22m[2mshould clear all logs
|
|
754
|
-
[22m[39m[INFO] ynab:test1:test | SUCCESS
|
|
755
|
-
[INFO] ynab:test2:test | SUCCESS
|
|
756
|
-
|
|
757
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mlog filtering[2m > [22m[2mshould filter by tool name
|
|
758
|
-
[22m[39m[INFO] ynab:list_budgets:listing | SUCCESS
|
|
759
|
-
[ERROR] ynab:get_budget:getting | FAILED | error:"Not found"
|
|
760
|
-
[INFO] ynab:list_accounts:listing | SUCCESS
|
|
761
|
-
[ERROR] ynab:create_transaction:creating | FAILED | error:"Invalid data"
|
|
762
|
-
|
|
763
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mlog filtering[2m > [22m[2mshould filter by success status
|
|
764
|
-
[22m[39m[INFO] ynab:list_budgets:listing | SUCCESS
|
|
765
|
-
[ERROR] ynab:get_budget:getting | FAILED | error:"Not found"
|
|
766
|
-
[INFO] ynab:list_accounts:listing | SUCCESS
|
|
767
|
-
[ERROR] ynab:create_transaction:creating | FAILED | error:"Invalid data"
|
|
768
|
-
|
|
769
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mlog filtering[2m > [22m[2mshould filter by date
|
|
770
|
-
[22m[39m[INFO] ynab:list_budgets:listing | SUCCESS
|
|
771
|
-
[ERROR] ynab:get_budget:getting | FAILED | error:"Not found"
|
|
772
|
-
[INFO] ynab:list_accounts:listing | SUCCESS
|
|
773
|
-
[ERROR] ynab:create_transaction:creating | FAILED | error:"Invalid data"
|
|
774
|
-
|
|
775
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mlog filtering[2m > [22m[2mshould limit results
|
|
776
|
-
[22m[39m[INFO] ynab:list_budgets:listing | SUCCESS
|
|
777
|
-
[ERROR] ynab:get_budget:getting | FAILED | error:"Not found"
|
|
778
|
-
[INFO] ynab:list_accounts:listing | SUCCESS
|
|
779
|
-
[ERROR] ynab:create_transaction:creating | FAILED | error:"Invalid data"
|
|
780
|
-
|
|
781
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mlog filtering[2m > [22m[2mshould combine filters
|
|
782
|
-
[22m[39m[INFO] ynab:list_budgets:listing | SUCCESS
|
|
783
|
-
[ERROR] ynab:get_budget:getting | FAILED | error:"Not found"
|
|
784
|
-
[INFO] ynab:list_accounts:listing | SUCCESS
|
|
785
|
-
[ERROR] ynab:create_transaction:creating | FAILED | error:"Invalid data"
|
|
786
|
-
|
|
787
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mstatistics[2m > [22m[2mshould calculate basic statistics
|
|
788
|
-
[22m[39m[INFO] ynab:list_budgets:listing | SUCCESS | 100ms
|
|
789
|
-
[ERROR] ynab:get_budget:getting | FAILED | 50ms | error:"Not found"
|
|
790
|
-
[INFO] ynab:list_budgets:listing | SUCCESS | 150ms
|
|
791
|
-
[INFO] ynab:create_transaction:creating | SUCCESS | 200ms | rate_limit_remaining:100
|
|
792
|
-
[ERROR] ynab:update_transaction:updating | FAILED | 75ms | rate_limit_remaining:0 | error:"Rate limited"
|
|
793
|
-
[WARN] Rate limit exceeded for ynab:update_transaction
|
|
794
|
-
|
|
795
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mstatistics[2m > [22m[2mshould calculate average duration
|
|
796
|
-
[22m[39m[INFO] ynab:list_budgets:listing | SUCCESS | 100ms
|
|
797
|
-
[ERROR] ynab:get_budget:getting | FAILED | 50ms | error:"Not found"
|
|
798
|
-
[INFO] ynab:list_budgets:listing | SUCCESS | 150ms
|
|
799
|
-
[INFO] ynab:create_transaction:creating | SUCCESS | 200ms | rate_limit_remaining:100
|
|
800
|
-
[ERROR] ynab:update_transaction:updating | FAILED | 75ms | rate_limit_remaining:0 | error:"Rate limited"
|
|
801
|
-
[WARN] Rate limit exceeded for ynab:update_transaction
|
|
802
|
-
|
|
803
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mstatistics[2m > [22m[2mshould count rate limited requests
|
|
804
|
-
[22m[39m[INFO] ynab:list_budgets:listing | SUCCESS | 100ms
|
|
805
|
-
[ERROR] ynab:get_budget:getting | FAILED | 50ms | error:"Not found"
|
|
806
|
-
[INFO] ynab:list_budgets:listing | SUCCESS | 150ms
|
|
807
|
-
[INFO] ynab:create_transaction:creating | SUCCESS | 200ms | rate_limit_remaining:100
|
|
808
|
-
[ERROR] ynab:update_transaction:updating | FAILED | 75ms | rate_limit_remaining:0 | error:"Rate limited"
|
|
809
|
-
[WARN] Rate limit exceeded for ynab:update_transaction
|
|
810
|
-
|
|
811
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mstatistics[2m > [22m[2mshould track tool usage
|
|
812
|
-
[22m[39m[INFO] ynab:list_budgets:listing | SUCCESS | 100ms
|
|
813
|
-
[ERROR] ynab:get_budget:getting | FAILED | 50ms | error:"Not found"
|
|
814
|
-
[INFO] ynab:list_budgets:listing | SUCCESS | 150ms
|
|
815
|
-
[INFO] ynab:create_transaction:creating | SUCCESS | 200ms | rate_limit_remaining:100
|
|
816
|
-
[ERROR] ynab:update_transaction:updating | FAILED | 75ms | rate_limit_remaining:0 | error:"Rate limited"
|
|
817
|
-
[WARN] Rate limit exceeded for ynab:update_transaction
|
|
818
|
-
|
|
819
|
-
[90mstderr[2m | src/server/__tests__/requestLogger.test.ts[2m > [22m[2mRequestLogger[2m > [22m[2mstatistics[2m > [22m[2mshould handle empty logs
|
|
820
|
-
[22m[39m[INFO] ynab:list_budgets:listing | SUCCESS | 100ms
|
|
821
|
-
[ERROR] ynab:get_budget:getting | FAILED | 50ms | error:"Not found"
|
|
822
|
-
[INFO] ynab:list_budgets:listing | SUCCESS | 150ms
|
|
823
|
-
[INFO] ynab:create_transaction:creating | SUCCESS | 200ms | rate_limit_remaining:100
|
|
824
|
-
[ERROR] ynab:update_transaction:updating | FAILED | 75ms | rate_limit_remaining:0 | error:"Rate limited"
|
|
825
|
-
[WARN] Rate limit exceeded for ynab:update_transaction
|
|
826
|
-
|
|
827
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlogRequest[2m > [22mshould log a successful request[32m 10[2mms[22m[39m
|
|
828
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlogRequest[2m > [22mshould log a failed request[32m 2[2mms[22m[39m
|
|
829
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlogRequest[2m > [22mshould include rate limit information[32m 1[2mms[22m[39m
|
|
830
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlogRequest[2m > [22mshould not log when disabled[32m 1[2mms[22m[39m
|
|
831
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mparameter sanitization[2m > [22mshould sanitize sensitive parameter names[32m 1[2mms[22m[39m
|
|
832
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mparameter sanitization[2m > [22mshould sanitize long alphanumeric strings in values[32m 1[2mms[22m[39m
|
|
833
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mparameter sanitization[2m > [22mshould sanitize Bearer tokens in strings[32m 1[2mms[22m[39m
|
|
834
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mparameter sanitization[2m > [22mshould sanitize nested objects[32m 1[2mms[22m[39m
|
|
835
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mparameter sanitization[2m > [22mshould sanitize arrays[32m 1[2mms[22m[39m
|
|
836
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mparameter sanitization[2m > [22mshould not sanitize when sanitization is disabled[32m 2[2mms[22m[39m
|
|
837
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22merror sanitization[2m > [22mshould sanitize error messages[32m 1[2mms[22m[39m
|
|
838
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22merror sanitization[2m > [22mshould sanitize Bearer tokens in error messages[32m 0[2mms[22m[39m
|
|
839
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlog management[2m > [22mshould maintain maximum log entries[32m 2[2mms[22m[39m
|
|
840
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlog management[2m > [22mshould clear all logs[32m 4[2mms[22m[39m
|
|
841
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlog filtering[2m > [22mshould filter by tool name[32m 1[2mms[22m[39m
|
|
842
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlog filtering[2m > [22mshould filter by success status[32m 1[2mms[22m[39m
|
|
843
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlog filtering[2m > [22mshould filter by date[32m 1[2mms[22m[39m
|
|
844
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlog filtering[2m > [22mshould limit results[32m 1[2mms[22m[39m
|
|
845
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mlog filtering[2m > [22mshould combine filters[32m 1[2mms[22m[39m
|
|
846
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mstatistics[2m > [22mshould calculate basic statistics[32m 1[2mms[22m[39m
|
|
847
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mstatistics[2m > [22mshould calculate average duration[32m 1[2mms[22m[39m
|
|
848
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mstatistics[2m > [22mshould count rate limited requests[32m 1[2mms[22m[39m
|
|
849
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mstatistics[2m > [22mshould track tool usage[32m 1[2mms[22m[39m
|
|
850
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mstatistics[2m > [22mshould handle empty logs[32m 1[2mms[22m[39m
|
|
851
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mconsole output[2m > [22mshould output success logs at info level[32m 6[2mms[22m[39m
|
|
852
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mconsole output[2m > [22mshould output error logs at error level[32m 5[2mms[22m[39m
|
|
853
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mconsole output[2m > [22mshould output rate limit warnings[32m 1[2mms[22m[39m
|
|
854
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/requestLogger.test.ts[2m > [22mRequestLogger[2m > [22mconsole output[2m > [22mshould respect log level configuration[32m 1[2mms[22m[39m
|
|
855
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mhandleError[2m > [22mshould handle YNABAPIError correctly[32m 8[2mms[22m[39m
|
|
856
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mhandleError[2m > [22mshould handle ValidationError correctly[32m 2[2mms[22m[39m
|
|
857
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mhandleError[2m > [22mshould detect 401 errors from generic Error messages[32m 1[2mms[22m[39m
|
|
858
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mhandleError[2m > [22mshould detect 403 errors from generic Error messages[32m 1[2mms[22m[39m
|
|
859
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mhandleError[2m > [22mshould detect 404 errors from generic Error messages[32m 1[2mms[22m[39m
|
|
860
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mhandleError[2m > [22mshould detect 429 errors from generic Error messages[32m 1[2mms[22m[39m
|
|
861
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mhandleError[2m > [22mshould detect 500 errors from generic Error messages[32m 0[2mms[22m[39m
|
|
862
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mhandleError[2m > [22mshould handle unknown errors gracefully[32m 1[2mms[22m[39m
|
|
863
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mhandleError[2m > [22mshould preserve original error message in details field for unknown errors[32m 1[2mms[22m[39m
|
|
864
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mhandleError[2m > [22mshould handle non-Error objects[32m 1[2mms[22m[39m
|
|
865
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22msanitizeErrorDetails[2m > [22mshould sanitize access tokens[32m 2[2mms[22m[39m
|
|
866
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22msanitizeErrorDetails[2m > [22mshould sanitize API keys[32m 1[2mms[22m[39m
|
|
867
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22msanitizeErrorDetails[2m > [22mshould sanitize passwords[32m 2[2mms[22m[39m
|
|
868
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22msanitizeErrorDetails[2m > [22mshould sanitize authorization headers[32m 0[2mms[22m[39m
|
|
869
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mwithErrorHandling[2m > [22mshould return result when operation succeeds[32m 4[2mms[22m[39m
|
|
870
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mwithErrorHandling[2m > [22mshould handle errors when operation fails[32m 2[2mms[22m[39m
|
|
871
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mcreateValidationError[2m > [22mshould create a validation error response[32m 1[2mms[22m[39m
|
|
872
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler[2m > [22mcreateYNABError[2m > [22mshould create a YNAB API error[32m 1[2mms[22m[39m
|
|
873
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mhandleToolError[2m > [22mshould format tool error messages correctly[32m 0[2mms[22m[39m
|
|
874
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mwithToolErrorHandling[2m > [22mshould return result when tool operation succeeds[32m 1[2mms[22m[39m
|
|
875
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mwithToolErrorHandling[2m > [22mshould handle errors when tool operation fails[32m 1[2mms[22m[39m
|
|
876
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mYNABAPIError[2m > [22mshould create error with correct properties[32m 0[2mms[22m[39m
|
|
877
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mValidationError[2m > [22mshould create error with correct properties[32m 0[2mms[22m[39m
|
|
878
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler with formatter injection[2m > [22mshould use injected formatter for error responses[32m 1[2mms[22m[39m
|
|
879
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler with formatter injection[2m > [22mshould call formatter with error response object[32m 5[2mms[22m[39m
|
|
880
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mErrorHandler with formatter injection[2m > [22mshould create different instances with different formatters[32m 1[2mms[22m[39m
|
|
881
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mStatic method delegation[2m > [22mshould delegate static calls to default instance[32m 1[2mms[22m[39m
|
|
882
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mStatic method delegation[2m > [22mshould delegate createValidationError to default instance[32m 1[2mms[22m[39m
|
|
883
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mStatic method delegation[2m > [22mshould delegate withErrorHandling to default instance[32m 1[2mms[22m[39m
|
|
884
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mFallback formatter[2m > [22mshould use fallback formatter when none is set initially[32m 1[2mms[22m[39m
|
|
885
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mInstance vs static behavior[2m > [22mshould produce identical results for instance and static calls[32m 1[2mms[22m[39m
|
|
886
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mInstance vs static behavior[2m > [22mshould produce identical results for createValidationError[32m 1[2mms[22m[39m
|
|
887
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mInstance vs static behavior[2m > [22mshould produce identical results for withErrorHandling[32m 1[2mms[22m[39m
|
|
888
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/errorHandler.test.ts[2m > [22mError scenarios[2m > [22mshould handle formatter errors gracefully[32m 1[2mms[22m[39m
|
|
889
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaFetcher.test.ts[2m > [22mDeltaFetcher[2m > [22mfetchAccounts wires delta cache with proper key and merge strategy[32m 13[2mms[22m[39m
|
|
890
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaFetcher.test.ts[2m > [22mDeltaFetcher[2m > [22mfetchCategories uses mergeCategories and TTL[32m 2[2mms[22m[39m
|
|
891
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaFetcher.test.ts[2m > [22mDeltaFetcher[2m > [22mfetchTransactions includes filters in key and uses mergeTransactions[32m 2[2mms[22m[39m
|
|
892
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaFetcher.test.ts[2m > [22mDeltaFetcher[2m > [22mfetchTransactionsByAccount encodes account in key[32m 2[2mms[22m[39m
|
|
893
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaFetcher.test.ts[2m > [22mDeltaFetcher[2m > [22mfetchScheduledTransactions wires cache key and merge strategy[32m 2[2mms[22m[39m
|
|
894
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaFetcher.test.ts[2m > [22mDeltaFetcher[2m > [22mfetchPayees delegates to mergeFlatEntities[32m 2[2mms[22m[39m
|
|
895
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaFetcher.test.ts[2m > [22mDeltaFetcher[2m > [22mfetchMonths uses mergeMonths and month TTL[32m 1[2mms[22m[39m
|
|
896
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaFetcher.test.ts[2m > [22mDeltaFetcher[2m > [22mfetchBudgets always forces full refresh[32m 3[2mms[22m[39m
|
|
897
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaFetcher.test.ts[2m > [22mDeltaFetcher[2m > [22mfetchAccountsFull bypasses cache and filters deleted accounts[32m 2[2mms[22m[39m
|
|
898
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaFetcher.test.ts[2m > [22mDeltaFetcher[2m > [22mfetchTransactionsByAccountFull bypasses delta cache[32m 2[2mms[22m[39m
|
|
899
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleListPayees[2m > [22mshould include cache metadata from delta fetcher results[32m 8[2mms[22m[39m
|
|
900
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleListPayees[2m > [22mshould use cache when NODE_ENV is not test - obsolete test, caching now handled by DeltaFetcher
|
|
901
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleListPayees[2m > [22mshould return formatted payee list on success[32m 3[2mms[22m[39m
|
|
902
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleListPayees[2m > [22mshould handle authentication errors[32m 2[2mms[22m[39m
|
|
903
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleListPayees[2m > [22mshould handle forbidden errors[32m 1[2mms[22m[39m
|
|
904
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleListPayees[2m > [22mshould handle not found errors[32m 2[2mms[22m[39m
|
|
905
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleListPayees[2m > [22mshould handle rate limit errors[32m 1[2mms[22m[39m
|
|
906
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleListPayees[2m > [22mshould handle server errors[32m 1[2mms[22m[39m
|
|
907
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleListPayees[2m > [22mshould handle generic errors[32m 2[2mms[22m[39m
|
|
908
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleGetPayee[2m > [22mshould use cache when NODE_ENV is not test - obsolete test, caching now handled by DeltaFetcher
|
|
909
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleGetPayee[2m > [22mshould return detailed payee information on success[32m 2[2mms[22m[39m
|
|
910
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleGetPayee[2m > [22mshould return transfer payee information on success[32m 1[2mms[22m[39m
|
|
911
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleGetPayee[2m > [22mshould handle 404 not found errors[32m 1[2mms[22m[39m
|
|
912
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mhandleGetPayee[2m > [22mshould handle authentication errors[32m 1[2mms[22m[39m
|
|
913
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mListPayeesSchema[2m > [22mshould validate valid budget_id[32m 3[2mms[22m[39m
|
|
914
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mListPayeesSchema[2m > [22mshould reject empty budget_id[32m 3[2mms[22m[39m
|
|
915
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mListPayeesSchema[2m > [22mshould reject missing budget_id[32m 7[2mms[22m[39m
|
|
916
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mListPayeesSchema[2m > [22mshould reject non-string budget_id[32m 1[2mms[22m[39m
|
|
917
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mGetPayeeSchema[2m > [22mshould validate valid parameters[32m 1[2mms[22m[39m
|
|
918
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mGetPayeeSchema[2m > [22mshould reject empty budget_id[32m 1[2mms[22m[39m
|
|
919
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mGetPayeeSchema[2m > [22mshould reject empty payee_id[32m 1[2mms[22m[39m
|
|
920
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mGetPayeeSchema[2m > [22mshould reject missing budget_id[32m 1[2mms[22m[39m
|
|
921
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mGetPayeeSchema[2m > [22mshould reject missing payee_id[32m 1[2mms[22m[39m
|
|
922
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/payeeTools.test.ts[2m > [22mPayee Tools[2m > [22mGetPayeeSchema[2m > [22mshould reject non-string parameters[32m 1[2mms[22m[39m
|
|
923
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mISODateStringSchema[2m > [22mshould accept valid dates[32m 6[2mms[22m[39m
|
|
924
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mISODateStringSchema[2m > [22mshould reject invalid months[32m 2[2mms[22m[39m
|
|
925
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mISODateStringSchema[2m > [22mshould reject invalid days[32m 3[2mms[22m[39m
|
|
926
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mISODateStringSchema[2m > [22mshould reject non-leap year February 29[32m 1[2mms[22m[39m
|
|
927
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mISODateStringSchema[2m > [22mshould reject invalid format[32m 2[2mms[22m[39m
|
|
928
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mBankTransactionComparisonSchema[2m > [22mshould accept valid bank transaction with valid date[32m 2[2mms[22m[39m
|
|
929
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mBankTransactionComparisonSchema[2m > [22mshould reject bank transaction with invalid date[32m 1[2mms[22m[39m
|
|
930
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mDateRangeSchema[2m > [22mshould accept valid date range[32m 1[2mms[22m[39m
|
|
931
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mDateRangeSchema[2m > [22mshould accept date range where start equals end[32m 1[2mms[22m[39m
|
|
932
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mDateRangeSchema[2m > [22mshould reject date range with invalid start date[32m 1[2mms[22m[39m
|
|
933
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mDateRangeSchema[2m > [22mshould reject date range with invalid end date[32m 1[2mms[22m[39m
|
|
934
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mDateRangeSchema[2m > [22mshould reject date range where start is after end[32m 0[2mms[22m[39m
|
|
935
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mDateRangeSchema[2m > [22mshould reject date range where start is after end (same month)[32m 0[2mms[22m[39m
|
|
936
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/dateValidation.test.ts[2m > [22mDate Validation in comparisonOutputs[2m > [22mDateRangeSchema[2m > [22mshould reject date range where start is after end (consecutive days)[32m 1[2mms[22m[39m
|
|
937
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleListCategories[2m > [22mshould include cache metadata from delta fetcher results[32m 8[2mms[22m[39m
|
|
938
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleListCategories[2m > [22mshould return formatted category list on success[32m 6[2mms[22m[39m
|
|
939
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleListCategories[2m > [22mshould handle authentication errors[32m 1[2mms[22m[39m
|
|
940
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleListCategories[2m > [22mshould handle not found errors[32m 1[2mms[22m[39m
|
|
941
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleGetCategory[2m > [22mshould return detailed category information on success[32m 2[2mms[22m[39m
|
|
942
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleGetCategory[2m > [22mshould reflect cached responses when data exists in cache[32m 1[2mms[22m[39m
|
|
943
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleGetCategory[2m > [22mshould handle 404 not found errors[32m 1[2mms[22m[39m
|
|
944
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleUpdateCategory[2m > [22mshould update category budget for current month on success[32m 6[2mms[22m[39m
|
|
945
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleUpdateCategory[2m > [22mshould handle 404 not found errors[32m 1[2mms[22m[39m
|
|
946
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleUpdateCategory[2m > [22mshould handle 403 forbidden errors[32m 1[2mms[22m[39m
|
|
947
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleUpdateCategory[2m > [22mshould invalidate category caches on successful category update[32m 2[2mms[22m[39m
|
|
948
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mhandleUpdateCategory[2m > [22mshould not invalidate cache on dry_run category update[32m 2[2mms[22m[39m
|
|
949
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mListCategoriesSchema[2m > [22mshould validate valid budget_id[32m 2[2mms[22m[39m
|
|
950
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mListCategoriesSchema[2m > [22mshould reject empty budget_id[32m 2[2mms[22m[39m
|
|
951
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mListCategoriesSchema[2m > [22mshould reject missing budget_id[32m 1[2mms[22m[39m
|
|
952
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mGetCategorySchema[2m > [22mshould validate valid parameters[32m 1[2mms[22m[39m
|
|
953
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mGetCategorySchema[2m > [22mshould reject empty category_id[32m 1[2mms[22m[39m
|
|
954
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mGetCategorySchema[2m > [22mshould reject missing category_id[32m 2[2mms[22m[39m
|
|
955
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mUpdateCategorySchema[2m > [22mshould validate valid parameters[32m 1[2mms[22m[39m
|
|
956
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mUpdateCategorySchema[2m > [22mshould reject non-integer budgeted amount[32m 1[2mms[22m[39m
|
|
957
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mUpdateCategorySchema[2m > [22mshould reject missing budgeted amount[32m 1[2mms[22m[39m
|
|
958
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mUpdateCategorySchema[2m > [22mshould accept negative budgeted amounts[32m 0[2mms[22m[39m
|
|
959
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/categoryTools.test.ts[2m > [22mCategory Tools[2m > [22mSchema Validation[2m > [22mUpdateCategorySchema[2m > [22mshould accept zero budgeted amount[32m 0[2mms[22m[39m
|
|
960
|
-
[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 29[2mms[22m[39m
|
|
961
|
-
[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
|
|
962
|
-
[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
|
|
963
|
-
[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 1[2mms[22m[39m
|
|
964
|
-
[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 1[2mms[22m[39m
|
|
965
|
-
[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
|
|
966
|
-
[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
|
|
967
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleGetMonth[2m > [22mshould bypass cache in test environment[32m 6[2mms[22m[39m
|
|
968
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleGetMonth[2m > [22mshould use cache when NODE_ENV is not test - obsolete test, caching now handled by DeltaFetcher
|
|
969
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleGetMonth[2m > [22mshould return formatted month data on success[32m 3[2mms[22m[39m
|
|
970
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleGetMonth[2m > [22mshould handle 401 authentication errors[32m 2[2mms[22m[39m
|
|
971
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleGetMonth[2m > [22mshould handle 403 forbidden errors[32m 1[2mms[22m[39m
|
|
972
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleGetMonth[2m > [22mshould handle 404 not found errors[32m 1[2mms[22m[39m
|
|
973
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleGetMonth[2m > [22mshould handle 429 rate limit errors[32m 1[2mms[22m[39m
|
|
974
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleGetMonth[2m > [22mshould handle 500 server errors[32m 1[2mms[22m[39m
|
|
975
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleGetMonth[2m > [22mshould handle generic errors[32m 1[2mms[22m[39m
|
|
976
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleListMonths[2m > [22mshould include cache metadata from delta fetcher results[32m 2[2mms[22m[39m
|
|
977
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleListMonths[2m > [22mshould use cache when NODE_ENV is not test - obsolete test, caching now handled by DeltaFetcher
|
|
978
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleListMonths[2m > [22mshould return formatted months list on success[32m 3[2mms[22m[39m
|
|
979
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleListMonths[2m > [22mshould handle authentication errors[32m 1[2mms[22m[39m
|
|
980
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleListMonths[2m > [22mshould handle not found errors[32m 1[2mms[22m[39m
|
|
981
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mhandleListMonths[2m > [22mshould handle generic errors[32m 2[2mms[22m[39m
|
|
982
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mGetMonthSchema[2m > [22mshould validate valid parameters[32m 3[2mms[22m[39m
|
|
983
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mGetMonthSchema[2m > [22mshould reject empty budget_id[32m 2[2mms[22m[39m
|
|
984
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mGetMonthSchema[2m > [22mshould reject missing budget_id[32m 1[2mms[22m[39m
|
|
985
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mGetMonthSchema[2m > [22mshould reject invalid month format[32m 1[2mms[22m[39m
|
|
986
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mGetMonthSchema[2m > [22mshould reject missing month[32m 1[2mms[22m[39m
|
|
987
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mGetMonthSchema[2m > [22mshould reject non-ISO date format[32m 1[2mms[22m[39m
|
|
988
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mListMonthsSchema[2m > [22mshould validate valid budget_id[32m 1[2mms[22m[39m
|
|
989
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mListMonthsSchema[2m > [22mshould reject empty budget_id[32m 1[2mms[22m[39m
|
|
990
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mListMonthsSchema[2m > [22mshould reject missing budget_id[32m 1[2mms[22m[39m
|
|
991
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/monthTools.test.ts[2m > [22mMonth Tools[2m > [22mListMonthsSchema[2m > [22mshould reject non-string budget_id[32m 0[2mms[22m[39m
|
|
992
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthCategorySchema[2m > [22mshould validate complete month category with all fields including goals[32m 6[2mms[22m[39m
|
|
993
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthCategorySchema[2m > [22mshould validate minimal month category with only required fields[32m 1[2mms[22m[39m
|
|
994
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthCategorySchema[2m > [22mshould fail validation when missing required fields[32m 2[2mms[22m[39m
|
|
995
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthDetailSchema[2m > [22mshould validate complete month detail with all fields including categories[32m 4[2mms[22m[39m
|
|
996
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthDetailSchema[2m > [22mshould validate minimal month detail with only required fields[32m 1[2mms[22m[39m
|
|
997
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthDetailSchema[2m > [22mshould validate month detail with empty categories array[32m 1[2mms[22m[39m
|
|
998
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthDetailSchema[2m > [22mshould validate month with proper date format YYYY-MM-01[32m 1[2mms[22m[39m
|
|
999
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthDetailSchema[2m > [22mshould fail validation when missing required month field[32m 1[2mms[22m[39m
|
|
1000
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthDetailSchema[2m > [22mshould fail validation when income is not a number[32m 1[2mms[22m[39m
|
|
1001
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthSummarySchema[2m > [22mshould validate complete month summary with all fields[32m 1[2mms[22m[39m
|
|
1002
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthSummarySchema[2m > [22mshould validate minimal month summary with only required fields[32m 0[2mms[22m[39m
|
|
1003
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthSummarySchema[2m > [22mshould validate month summary with null age_of_money[32m 0[2mms[22m[39m
|
|
1004
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mMonthSummarySchema[2m > [22mshould fail validation when missing required fields[32m 1[2mms[22m[39m
|
|
1005
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mGetMonthOutputSchema[2m > [22mshould validate output with complete month detail and cache metadata[32m 2[2mms[22m[39m
|
|
1006
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mGetMonthOutputSchema[2m > [22mshould validate output with minimal month detail[32m 0[2mms[22m[39m
|
|
1007
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mGetMonthOutputSchema[2m > [22mshould fail validation when month is not an object[32m 0[2mms[22m[39m
|
|
1008
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mGetMonthOutputSchema[2m > [22mshould fail validation when missing required month field[32m 0[2mms[22m[39m
|
|
1009
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mListMonthsOutputSchema[2m > [22mshould validate output with multiple month summaries[32m 1[2mms[22m[39m
|
|
1010
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mListMonthsOutputSchema[2m > [22mshould validate output with single month summary[32m 1[2mms[22m[39m
|
|
1011
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mListMonthsOutputSchema[2m > [22mshould validate output with empty months array[32m 0[2mms[22m[39m
|
|
1012
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mListMonthsOutputSchema[2m > [22mshould fail validation when months is not an array[32m 0[2mms[22m[39m
|
|
1013
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mListMonthsOutputSchema[2m > [22mshould fail validation when months array contains invalid month[32m 1[2mms[22m[39m
|
|
1014
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/monthOutputs.test.ts[2m > [22mListMonthsOutputSchema[2m > [22mshould fail validation when missing required months field[32m 0[2mms[22m[39m
|
|
1015
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mBasic Operations[2m > [22mshould return undefined for non-existent keys[32m 3[2mms[22m[39m
|
|
1016
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mBasic Operations[2m > [22mshould store and retrieve knowledge values[32m 1[2mms[22m[39m
|
|
1017
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mBasic Operations[2m > [22mshould update existing knowledge values[32m 0[2mms[22m[39m
|
|
1018
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mBasic Operations[2m > [22mshould handle multiple cache keys independently[32m 1[2mms[22m[39m
|
|
1019
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mBasic Operations[2m > [22mshould return correct stats with entryCount and entries object[32m 2[2mms[22m[39m
|
|
1020
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mValidation[2m > [22mshould throw error for negative server_knowledge values[32m 2[2mms[22m[39m
|
|
1021
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mValidation[2m > [22mshould accept zero as valid server_knowledge[32m 1[2mms[22m[39m
|
|
1022
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mValidation[2m > [22mshould accept large positive integers[32m 2[2mms[22m[39m
|
|
1023
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mReset Operations[2m > [22mshould reset all knowledge when called without pattern[32m 1[2mms[22m[39m
|
|
1024
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mReset Operations[2m > [22mshould reset only matching keys when pattern provided[32m 1[2mms[22m[39m
|
|
1025
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mReset Operations[2m > [22mshould not reset non-matching keys[32m 0[2mms[22m[39m
|
|
1026
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mReset Operations[2m > [22mshould handle resetByBudgetId correctly[32m 0[2mms[22m[39m
|
|
1027
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mReset Operations[2m > [22mshould not affect other budgets when resetting by budget ID[32m 0[2mms[22m[39m
|
|
1028
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mReset Operations[2m > [22mshould handle empty store gracefully[32m 4[2mms[22m[39m
|
|
1029
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mEdge Cases[2m > [22mshould handle very long cache keys[32m 0[2mms[22m[39m
|
|
1030
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mEdge Cases[2m > [22mshould handle special characters in cache keys[32m 0[2mms[22m[39m
|
|
1031
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mEdge Cases[2m > [22mshould handle rapid updates to same key[32m 0[2mms[22m[39m
|
|
1032
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/serverKnowledgeStore.test.ts[2m > [22mServerKnowledgeStore[2m > [22mEdge Cases[2m > [22mshould maintain isolation between different store instances[32m 0[2mms[22m[39m
|
|
1033
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mSetOutputFormatOutputSchema[2m > [22mshould validate output with success, message, and options[32m 6[2mms[22m[39m
|
|
1034
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mSetOutputFormatOutputSchema[2m > [22mshould validate output with only defaultMinify option[32m 1[2mms[22m[39m
|
|
1035
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mSetOutputFormatOutputSchema[2m > [22mshould validate output with only prettySpaces option[32m 0[2mms[22m[39m
|
|
1036
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mSetOutputFormatOutputSchema[2m > [22mshould validate output with empty options[32m 0[2mms[22m[39m
|
|
1037
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mSetOutputFormatOutputSchema[2m > [22mshould fail validation when missing required success field[32m 1[2mms[22m[39m
|
|
1038
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mSetOutputFormatOutputSchema[2m > [22mshould fail validation when missing required message field[32m 3[2mms[22m[39m
|
|
1039
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mSetOutputFormatOutputSchema[2m > [22mshould fail validation when missing required options field[32m 1[2mms[22m[39m
|
|
1040
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mEnvironmentInfoSchema[2m > [22mshould validate environment info with null token_preview[32m 1[2mms[22m[39m
|
|
1041
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mEnvironmentInfoSchema[2m > [22mshould validate environment info with string token_preview[32m 1[2mms[22m[39m
|
|
1042
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mCacheInfoSchema[2m > [22mshould validate cache info with null lastCleanup[32m 1[2mms[22m[39m
|
|
1043
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mCacheInfoSchema[2m > [22mshould validate cache info with string lastCleanup[32m 0[2mms[22m[39m
|
|
1044
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mCacheInfoSchema[2m > [22mshould validate cache info without optional performance metrics[32m 0[2mms[22m[39m
|
|
1045
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mDeltaInfoSchema[2m > [22mshould validate delta info with numeric delta_hit_rate[32m 1[2mms[22m[39m
|
|
1046
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mDeltaInfoSchema[2m > [22mshould fail validation when delta_hit_rate is a string[32m 1[2mms[22m[39m
|
|
1047
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mDiagnosticInfoOutputSchema[2m > [22mshould validate complete diagnostic output with all null cases[32m 3[2mms[22m[39m
|
|
1048
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mDiagnosticInfoOutputSchema[2m > [22mshould validate minimal diagnostic output with only timestamp[32m 0[2mms[22m[39m
|
|
1049
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts[2m > [22mDiagnosticInfoOutputSchema[2m > [22mshould validate diagnostic output with some optional sections[32m 0[2mms[22m[39m
|
|
1050
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseDate[2m > [22mshould parse MM/DD/YYYY format[32m 7[2mms[22m[39m
|
|
1051
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseDate[2m > [22mshould parse YYYY-MM-DD format[32m 1[2mms[22m[39m
|
|
1052
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseDate[2m > [22mshould parse MMM dd, yyyy format[32m 1[2mms[22m[39m
|
|
1053
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseDate[2m > [22mshould handle single digit dates[32m 1[2mms[22m[39m
|
|
1054
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseDate[2m > [22mshould throw error for invalid date[32m 2[2mms[22m[39m
|
|
1055
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseDate[2m > [22mshould fallback to native Date parsing for unrecognized formats[32m 1[2mms[22m[39m
|
|
1056
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseDate[2m > [22mshould handle whitespace in dates[32m 0[2mms[22m[39m
|
|
1057
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mamountToMilliunits[2m > [22mshould convert positive amounts[32m 1[2mms[22m[39m
|
|
1058
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mamountToMilliunits[2m > [22mshould convert negative amounts[32m 1[2mms[22m[39m
|
|
1059
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mamountToMilliunits[2m > [22mshould handle parentheses for negative amounts[32m 0[2mms[22m[39m
|
|
1060
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mamountToMilliunits[2m > [22mshould handle currency symbols[32m 0[2mms[22m[39m
|
|
1061
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mamountToMilliunits[2m > [22mshould handle commas in amounts[32m 0[2mms[22m[39m
|
|
1062
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mamountToMilliunits[2m > [22mshould handle positive sign[32m 0[2mms[22m[39m
|
|
1063
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mamountToMilliunits[2m > [22mshould handle zero amounts[32m 0[2mms[22m[39m
|
|
1064
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mamountToMilliunits[2m > [22mshould handle amounts with spaces[32m 0[2mms[22m[39m
|
|
1065
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mamountToMilliunits[2m > [22mshould handle very large amounts[32m 0[2mms[22m[39m
|
|
1066
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mdetectDateFormat[2m > [22mshould detect MM/DD/YYYY format[32m 0[2mms[22m[39m
|
|
1067
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mdetectDateFormat[2m > [22mshould detect YYYY-MM-DD format[32m 0[2mms[22m[39m
|
|
1068
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mdetectDateFormat[2m > [22mshould detect MM-DD-YYYY format[32m 0[2mms[22m[39m
|
|
1069
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mdetectDateFormat[2m > [22mshould detect MMM dd, yyyy format[32m 0[2mms[22m[39m
|
|
1070
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mdetectDateFormat[2m > [22mshould default to MM/DD/YYYY for undefined input[32m 0[2mms[22m[39m
|
|
1071
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mdetectDateFormat[2m > [22mshould default to MM/DD/YYYY for unrecognized format[32m 0[2mms[22m[39m
|
|
1072
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect header format with standard columns[32m 11[2mms[22m[39m
|
|
1073
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect no-header format[32m 3[2mms[22m[39m
|
|
1074
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect debit/credit columns[32m 4[2mms[22m[39m
|
|
1075
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould throw error for empty CSV[32m 0[2mms[22m[39m
|
|
1076
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould throw error for CSV with empty first line[32m 0[2mms[22m[39m
|
|
1077
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect date format from data rows[32m 2[2mms[22m[39m
|
|
1078
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould derive column names from non-standard headers - Transaction Date[32m 2[2mms[22m[39m
|
|
1079
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould derive column names from non-standard headers - Post Date and Desc[32m 2[2mms[22m[39m
|
|
1080
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould derive column names from non-standard headers - Payee column[32m 1[2mms[22m[39m
|
|
1081
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect debit/credit columns with non-standard headers[32m 2[2mms[22m[39m
|
|
1082
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould fallback to original headers when patterns do not match[32m 1[2mms[22m[39m
|
|
1083
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould handle case-insensitive header matching[32m 1[2mms[22m[39m
|
|
1084
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect semicolon delimiter[32m 1[2mms[22m[39m
|
|
1085
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect tab delimiter[32m 2[2mms[22m[39m
|
|
1086
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect pipe delimiter[32m 1[2mms[22m[39m
|
|
1087
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect semicolon delimiter without headers[32m 1[2mms[22m[39m
|
|
1088
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect tab delimiter without headers[32m 3[2mms[22m[39m
|
|
1089
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect semicolon delimiter with debit/credit columns[32m 2[2mms[22m[39m
|
|
1090
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect semicolon delimiter when quoted fields contain delimiter[32m 3[2mms[22m[39m
|
|
1091
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect comma delimiter when quoted fields contain commas[32m 7[2mms[22m[39m
|
|
1092
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould handle complex quoted fields with multiple delimiter types[32m 4[2mms[22m[39m
|
|
1093
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mautoDetectCSVFormat[2m > [22mshould detect tab delimiter with debit/credit columns[32m 9[2mms[22m[39m
|
|
1094
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould parse CSV with headers[32m 4[2mms[22m[39m
|
|
1095
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould parse CSV without headers[32m 1[2mms[22m[39m
|
|
1096
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould handle debit/credit columns with headers[32m 1[2mms[22m[39m
|
|
1097
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould handle debit/credit columns without headers[32m 26[2mms[22m[39m
|
|
1098
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould skip rows with missing data[32m 1[2mms[22m[39m
|
|
1099
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould handle quoted dates with commas (MMM dd, yyyy format)[32m 1[2mms[22m[39m
|
|
1100
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould parse quoted fields with commas in descriptions[32m 1[2mms[22m[39m
|
|
1101
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould throw error when no amount column configuration[32m 1[2mms[22m[39m
|
|
1102
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould handle invalid column indices gracefully[32m 1[2mms[22m[39m
|
|
1103
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould parse semicolon-delimited CSV with headers[32m 1[2mms[22m[39m
|
|
1104
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould parse tab-delimited CSV with headers[32m 1[2mms[22m[39m
|
|
1105
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould parse semicolon-delimited CSV without headers[32m 1[2mms[22m[39m
|
|
1106
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould parse tab-delimited CSV without headers[32m 1[2mms[22m[39m
|
|
1107
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould handle semicolon-delimited debit/credit columns with headers[32m 1[2mms[22m[39m
|
|
1108
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould handle tab-delimited debit/credit columns with headers[32m 1[2mms[22m[39m
|
|
1109
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mparseBankCSV[2m > [22mshould parse semicolon-delimited CSV with quoted fields containing delimiter[32m 1[2mms[22m[39m
|
|
1110
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mextractDateRangeFromCSV[2m > [22mshould extract min and max dates from CSV transactions[32m 1[2mms[22m[39m
|
|
1111
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mextractDateRangeFromCSV[2m > [22mshould handle single transaction[32m 1[2mms[22m[39m
|
|
1112
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mreadCSVFile[2m > [22mshould read file successfully[32m 2[2mms[22m[39m
|
|
1113
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mreadCSVFile[2m > [22mshould throw error when file reading fails[32m 0[2mms[22m[39m
|
|
1114
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/parser.test.ts[2m > [22mparser[2m > [22mreadCSVFile[2m > [22mshould handle unknown errors[32m 0[2mms[22m[39m
|
|
1115
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mhandleListBudgets[2m > [22mshould include cache metadata from delta fetcher results[32m 6[2mms[22m[39m
|
|
1116
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mhandleListBudgets[2m > [22mshould return formatted budget list on success[32m 3[2mms[22m[39m
|
|
1117
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mhandleListBudgets[2m > [22mshould handle errors reported by the delta fetcher[32m 2[2mms[22m[39m
|
|
1118
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mhandleGetBudget[2m > [22mshould not use cache (as per design - individual budgets change less frequently)[32m 2[2mms[22m[39m
|
|
1119
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mhandleGetBudget[2m > [22mshould return detailed budget information on success[32m 2[2mms[22m[39m
|
|
1120
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mhandleGetBudget[2m > [22mshould return zero counts for empty collections and exclude arrays[32m 1[2mms[22m[39m
|
|
1121
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mhandleGetBudget[2m > [22mshould return correct counts for multiple items and exclude arrays[32m 1[2mms[22m[39m
|
|
1122
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mhandleGetBudget[2m > [22mshould handle 404 not found errors[32m 1[2mms[22m[39m
|
|
1123
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mhandleGetBudget[2m > [22mshould handle authentication errors[32m 1[2mms[22m[39m
|
|
1124
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mGetBudgetSchema[2m > [22mshould validate valid budget_id[32m 3[2mms[22m[39m
|
|
1125
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mGetBudgetSchema[2m > [22mshould reject empty budget_id[32m 2[2mms[22m[39m
|
|
1126
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mGetBudgetSchema[2m > [22mshould reject missing budget_id[32m 1[2mms[22m[39m
|
|
1127
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/budgetTools.test.ts[2m > [22mBudget Tools[2m > [22mGetBudgetSchema[2m > [22mshould reject non-string budget_id[32m 1[2mms[22m[39m
|
|
1128
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mconstructor[2m > [22mshould initialize without dependencies[32m 3[2mms[22m[39m
|
|
1129
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mlistPrompts[2m > [22mshould return list of available prompts[32m 3[2mms[22m[39m
|
|
1130
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mlistPrompts[2m > [22mshould return consistent prompt list[32m 0[2mms[22m[39m
|
|
1131
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22mcreate-transaction[2m > [22mshould generate transaction creation prompt with default values[32m 4[2mms[22m[39m
|
|
1132
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22mcreate-transaction[2m > [22mshould generate transaction creation prompt with provided arguments[32m 1[2mms[22m[39m
|
|
1133
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22mcreate-transaction[2m > [22mshould handle partial arguments[32m 1[2mms[22m[39m
|
|
1134
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22mcreate-transaction[2m > [22mshould include proper workflow instructions[32m 1[2mms[22m[39m
|
|
1135
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22mbudget-summary[2m > [22mshould generate budget summary prompt with default values[32m 1[2mms[22m[39m
|
|
1136
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22mbudget-summary[2m > [22mshould generate budget summary prompt with provided arguments[32m 1[2mms[22m[39m
|
|
1137
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22mbudget-summary[2m > [22mshould include YNAB-specific guidance[32m 1[2mms[22m[39m
|
|
1138
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22maccount-balances[2m > [22mshould generate account balances prompt with default values[32m 1[2mms[22m[39m
|
|
1139
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22maccount-balances[2m > [22mshould generate account balances prompt with provided arguments[32m 0[2mms[22m[39m
|
|
1140
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22maccount-balances[2m > [22mshould include proper balance display instructions[32m 0[2mms[22m[39m
|
|
1141
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22munknown prompts[2m > [22mshould throw error for unknown prompt names[32m 6[2mms[22m[39m
|
|
1142
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22munknown prompts[2m > [22mshould throw error for empty prompt name[32m 1[2mms[22m[39m
|
|
1143
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22margument handling[2m > [22mshould handle undefined arguments[32m 0[2mms[22m[39m
|
|
1144
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22margument handling[2m > [22mshould handle null arguments[32m 0[2mms[22m[39m
|
|
1145
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22margument handling[2m > [22mshould handle empty arguments object[32m 0[2mms[22m[39m
|
|
1146
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22margument handling[2m > [22mshould handle arguments with null/undefined values[32m 1[2mms[22m[39m
|
|
1147
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22medge cases[2m > [22mshould handle very long argument values[32m 0[2mms[22m[39m
|
|
1148
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22medge cases[2m > [22mshould handle special characters in arguments[32m 0[2mms[22m[39m
|
|
1149
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/prompts.test.ts[2m > [22mprompts module[2m > [22mPromptManager[2m > [22mgetPrompt[2m > [22medge cases[2m > [22mshould maintain consistent message structure across all prompts[32m 4[2mms[22m[39m
|
|
1150
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mISODateStringSchema[2m > [22mshould validate correct ISO date format[32m 4[2mms[22m[39m
|
|
1151
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mISODateStringSchema[2m > [22mshould reject invalid date formats[32m 2[2mms[22m[39m
|
|
1152
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mISODateStringSchema[2m > [22mshould reject invalid calendar dates[32m 8[2mms[22m[39m
|
|
1153
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mISODateStringSchema[2m > [22mshould validate leap year dates correctly[32m 1[2mms[22m[39m
|
|
1154
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mDateRangeSchema[2m > [22mshould validate valid date range[32m 2[2mms[22m[39m
|
|
1155
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mDateRangeSchema[2m > [22mshould validate date range where start equals end[32m 0[2mms[22m[39m
|
|
1156
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mDateRangeSchema[2m > [22mshould reject date range where start is after end[32m 0[2mms[22m[39m
|
|
1157
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mDateRangeSchema[2m > [22mshould reject invalid date formats in range[32m 1[2mms[22m[39m
|
|
1158
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mMatchItemSchema[2m > [22mshould validate complete match item[32m 4[2mms[22m[39m
|
|
1159
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mMatchItemSchema[2m > [22mshould validate match with negative amounts[32m 0[2mms[22m[39m
|
|
1160
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mMatchItemSchema[2m > [22mshould fail validation when amount format is incorrect[32m 0[2mms[22m[39m
|
|
1161
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mMissingInYNABItemSchema[2m > [22mshould validate complete missing in YNAB item with suggestions[32m 1[2mms[22m[39m
|
|
1162
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mMissingInYNABItemSchema[2m > [22mshould validate minimal missing in YNAB item without suggestions[32m 0[2mms[22m[39m
|
|
1163
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mMissingInYNABItemSchema[2m > [22mshould fail validation when amount format is incorrect[32m 0[2mms[22m[39m
|
|
1164
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mMissingInBankItemSchema[2m > [22mshould validate complete missing in bank item[32m 1[2mms[22m[39m
|
|
1165
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mMissingInBankItemSchema[2m > [22mshould validate missing in bank item with null fields[32m 0[2mms[22m[39m
|
|
1166
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mMissingInBankItemSchema[2m > [22mshould fail validation when missing required fields[32m 1[2mms[22m[39m
|
|
1167
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mCompareTransactionsOutputSchema[2m > [22mshould validate complete comparison result with all sections[32m 2[2mms[22m[39m
|
|
1168
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mCompareTransactionsOutputSchema[2m > [22mshould validate comparison result with empty match arrays[32m 1[2mms[22m[39m
|
|
1169
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mCompareTransactionsOutputSchema[2m > [22mshould fail validation when missing required summary fields[32m 1[2mms[22m[39m
|
|
1170
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mCompareTransactionsOutputSchema[2m > [22mshould fail validation when date range is invalid[32m 0[2mms[22m[39m
|
|
1171
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mExportTransactionsOutputSchema[2m > [22mshould validate minimal export mode output[32m 2[2mms[22m[39m
|
|
1172
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mExportTransactionsOutputSchema[2m > [22mshould validate full export mode output[32m 0[2mms[22m[39m
|
|
1173
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mExportTransactionsOutputSchema[2m > [22mshould validate export output with empty preview[32m 0[2mms[22m[39m
|
|
1174
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mExportTransactionsOutputSchema[2m > [22mshould fail validation when export_mode is invalid[32m 1[2mms[22m[39m
|
|
1175
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mExportTransactionsOutputSchema[2m > [22mshould fail validation when missing required fields[32m 1[2mms[22m[39m
|
|
1176
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts[2m > [22mExportTransactionsOutputSchema[2m > [22mshould fail validation when preview_count is not a number[32m 0[2mms[22m[39m
|
|
1177
|
-
[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 31[2mms[22m[39m
|
|
1178
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeFlatEntities[2m > [22mshould merge new entities into snapshot[32m 5[2mms[22m[39m
|
|
1179
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeFlatEntities[2m > [22mshould update existing entities with latest data[32m 1[2mms[22m[39m
|
|
1180
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeFlatEntities[2m > [22mshould delete entities when delta marks them deleted[32m 1[2mms[22m[39m
|
|
1181
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeFlatEntities[2m > [22mshould preserve deleted entities when preserveDeleted enabled[32m 1[2mms[22m[39m
|
|
1182
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeFlatEntities[2m > [22mshould handle empty snapshot gracefully[32m 1[2mms[22m[39m
|
|
1183
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeFlatEntities[2m > [22mshould handle empty delta by returning snapshot[32m 0[2mms[22m[39m
|
|
1184
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeFlatEntities[2m > [22mshould handle both arrays empty[32m 0[2mms[22m[39m
|
|
1185
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeFlatEntities[2m > [22mshould process multiple operations in single delta batch[32m 1[2mms[22m[39m
|
|
1186
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeFlatEntities[2m > [22mshould maintain insertion order for unchanged entities[32m 1[2mms[22m[39m
|
|
1187
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeFlatEntities[2m > [22mshould keep additional fields intact[32m 1[2mms[22m[39m
|
|
1188
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould merge new category groups into snapshot[32m 1[2mms[22m[39m
|
|
1189
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould update existing group metadata[32m 1[2mms[22m[39m
|
|
1190
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould delete groups flagged as deleted[32m 0[2mms[22m[39m
|
|
1191
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould preserve deleted groups when preserveDeleted is true[32m 0[2mms[22m[39m
|
|
1192
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould merge new categories within existing group[32m 1[2mms[22m[39m
|
|
1193
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould update existing categories during merge[32m 0[2mms[22m[39m
|
|
1194
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould delete categories marked as deleted[32m 0[2mms[22m[39m
|
|
1195
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould preserve deleted categories when preserveDeleted is true[32m 0[2mms[22m[39m
|
|
1196
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould handle groups with empty category lists[32m 0[2mms[22m[39m
|
|
1197
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould handle metadata-only updates (no categories provided)[32m 0[2mms[22m[39m
|
|
1198
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould apply nested updates to metadata and categories simultaneously[32m 0[2mms[22m[39m
|
|
1199
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould maintain category order after merges[32m 1[2mms[22m[39m
|
|
1200
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould handle multiple groups with multiple category updates[32m 1[2mms[22m[39m
|
|
1201
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeCategories[2m > [22mshould keep nested structures immutable[32m 0[2mms[22m[39m
|
|
1202
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould merge new transactions into snapshot[32m 1[2mms[22m[39m
|
|
1203
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould update existing transactions[32m 0[2mms[22m[39m
|
|
1204
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould delete transactions marked as deleted[32m 0[2mms[22m[39m
|
|
1205
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould preserve deleted transactions when preserveDeleted is true[32m 0[2mms[22m[39m
|
|
1206
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould merge new subtransactions into existing transaction[32m 1[2mms[22m[39m
|
|
1207
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould update existing subtransactions[32m 0[2mms[22m[39m
|
|
1208
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould delete subtransactions when flagged deleted[32m 0[2mms[22m[39m
|
|
1209
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould preserve deleted subtransactions when preserveDeleted is true[32m 0[2mms[22m[39m
|
|
1210
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould handle transactions without subtransactions arrays[32m 0[2mms[22m[39m
|
|
1211
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould handle delta updates without subtransactions list[32m 0[2mms[22m[39m
|
|
1212
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould apply nested operations to transaction and subtransactions[32m 0[2mms[22m[39m
|
|
1213
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould maintain subtransaction order[32m 0[2mms[22m[39m
|
|
1214
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould handle multiple transactions with distinct updates[32m 0[2mms[22m[39m
|
|
1215
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mmergeTransactions[2m > [22mshould avoid mutating input arrays[32m 6[2mms[22m[39m
|
|
1216
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mMerge Edge Cases[2m > [22mshould handle duplicate IDs in delta with last write winning[32m 0[2mms[22m[39m
|
|
1217
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mMerge Edge Cases[2m > [22mshould handle null and undefined optional fields[32m 0[2mms[22m[39m
|
|
1218
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mMerge Edge Cases[2m > [22mshould efficiently handle large snapshots[32m 2[2mms[22m[39m
|
|
1219
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mMerge Edge Cases[2m > [22mshould efficiently handle large delta payloads[32m 1[2mms[22m[39m
|
|
1220
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mMerge Edge Cases[2m > [22mshould handle deeply nested category structures[32m 1[2mms[22m[39m
|
|
1221
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mMerge Edge Cases[2m > [22mshould handle transactions with many subtransactions[32m 1[2mms[22m[39m
|
|
1222
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mMerge Edge Cases[2m > [22mshould not mutate snapshot or delta arrays[32m 0[2mms[22m[39m
|
|
1223
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.merge.test.ts[2m > [22mMerge Edge Cases[2m > [22mshould handle special characters in IDs and names[32m 0[2mms[22m[39m
|
|
1224
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mbalanced direction (|amount| < 0.01)[2m > [22mshould accept direction "balanced" when amount is 0[32m 12[2mms[22m[39m
|
|
1225
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mbalanced direction (|amount| < 0.01)[2m > [22mshould accept direction "balanced" when amount is 0.001[32m 1[2mms[22m[39m
|
|
1226
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mbalanced direction (|amount| < 0.01)[2m > [22mshould accept direction "balanced" when amount is -0.009[32m 1[2mms[22m[39m
|
|
1227
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mbalanced direction (|amount| < 0.01)[2m > [22mshould reject direction "ynab_higher" when amount is 0[32m 3[2mms[22m[39m
|
|
1228
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mbalanced direction (|amount| < 0.01)[2m > [22mshould reject direction "bank_higher" when amount is 0.005[32m 2[2mms[22m[39m
|
|
1229
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mynab_higher direction (amount >= 0.01)[2m > [22mshould accept direction "ynab_higher" when amount is 25.50[32m 1[2mms[22m[39m
|
|
1230
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mynab_higher direction (amount >= 0.01)[2m > [22mshould accept direction "ynab_higher" when amount is 0.02 (just above threshold)[32m 1[2mms[22m[39m
|
|
1231
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mynab_higher direction (amount >= 0.01)[2m > [22mshould reject direction "balanced" when amount is 100[32m 1[2mms[22m[39m
|
|
1232
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mynab_higher direction (amount >= 0.01)[2m > [22mshould reject direction "bank_higher" when amount is 50[32m 2[2mms[22m[39m
|
|
1233
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mbank_higher direction (amount <= -0.01)[2m > [22mshould accept direction "bank_higher" when amount is -25.50[32m 1[2mms[22m[39m
|
|
1234
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mbank_higher direction (amount <= -0.01)[2m > [22mshould accept direction "bank_higher" when amount is -0.02 (just below threshold)[32m 1[2mms[22m[39m
|
|
1235
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mbank_higher direction (amount <= -0.01)[2m > [22mshould reject direction "balanced" when amount is -100[32m 1[2mms[22m[39m
|
|
1236
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mbank_higher direction (amount <= -0.01)[2m > [22mshould reject direction "ynab_higher" when amount is -50[32m 1[2mms[22m[39m
|
|
1237
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22medge cases[2m > [22mshould accept exactly 0.01 as requiring "ynab_higher"[32m 1[2mms[22m[39m
|
|
1238
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22medge cases[2m > [22mshould accept exactly -0.01 as requiring "bank_higher"[32m 0[2mms[22m[39m
|
|
1239
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22medge cases[2m > [22mshould reject "balanced" for exactly 0.01[32m 0[2mms[22m[39m
|
|
1240
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22medge cases[2m > [22mshould reject "balanced" for exactly -0.01[32m 0[2mms[22m[39m
|
|
1241
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mhuman-only output (no validation)[2m > [22mshould accept human-only output without structured data[32m 1[2mms[22m[39m
|
|
1242
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mMoneyValueSchema - non-finite value validation[2m > [22mshould reject NaN amount[32m 1[2mms[22m[39m
|
|
1243
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mMoneyValueSchema - non-finite value validation[2m > [22mshould reject positive Infinity amount[32m 1[2mms[22m[39m
|
|
1244
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mMoneyValueSchema - non-finite value validation[2m > [22mshould reject negative Infinity amount[32m 1[2mms[22m[39m
|
|
1245
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mMoneyValueSchema - non-finite value validation[2m > [22mshould accept finite positive amounts[32m 0[2mms[22m[39m
|
|
1246
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mMoneyValueSchema - non-finite value validation[2m > [22mshould accept finite negative amounts[32m 0[2mms[22m[39m
|
|
1247
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts[2m > [22mReconcileAccountOutputSchema - discrepancy_direction validation[2m > [22mMoneyValueSchema - non-finite value validation[2m > [22mshould accept zero[32m 0[2mms[22m[39m
|
|
1248
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mconstructor[2m > [22mshould initialize with dependencies[32m 4[2mms[22m[39m
|
|
1249
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mlistResources[2m > [22mshould return list of available resources[32m 2[2mms[22m[39m
|
|
1250
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mlistResources[2m > [22mshould return consistent resource list[32m 1[2mms[22m[39m
|
|
1251
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mreadResource[2m > [22mynab://budgets[2m > [22mshould fetch and format budgets data[32m 5[2mms[22m[39m
|
|
1252
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mreadResource[2m > [22mynab://budgets[2m > [22mshould handle YNAB API errors[32m 4[2mms[22m[39m
|
|
1253
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mreadResource[2m > [22mynab://user[2m > [22mshould fetch and format user data[32m 2[2mms[22m[39m
|
|
1254
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mreadResource[2m > [22mynab://user[2m > [22mshould handle YNAB API errors[32m 2[2mms[22m[39m
|
|
1255
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mreadResource[2m > [22munknown resources[2m > [22mshould throw error for unknown resource URIs[32m 1[2mms[22m[39m
|
|
1256
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mreadResource[2m > [22munknown resources[2m > [22mshould throw error for invalid URIs[32m 2[2mms[22m[39m
|
|
1257
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mreadResource[2m > [22munknown resources[2m > [22mshould throw error for empty URI[32m 2[2mms[22m[39m
|
|
1258
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mdependency injection[2m > [22mshould use injected YNAB API[32m 1[2mms[22m[39m
|
|
1259
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22mdependency injection[2m > [22mshould use injected response formatter[32m 2[2mms[22m[39m
|
|
1260
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22medge cases[2m > [22mshould handle empty budgets list[32m 1[2mms[22m[39m
|
|
1261
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/resources.test.ts[2m > [22mresources module[2m > [22mResourceManager[2m > [22medge cases[2m > [22mshould handle user without extended properties[32m 4[2mms[22m[39m
|
|
1262
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mcreate_transaction type[2m > [22mshould validate successful transaction creation with full response[32m 7[2mms[22m[39m
|
|
1263
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mcreate_transaction type[2m > [22mshould validate successful transaction creation with null transaction[32m 0[2mms[22m[39m
|
|
1264
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mcreate_transaction type[2m > [22mshould accept additional YNAB API fields via passthrough[32m 1[2mms[22m[39m
|
|
1265
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mcreate_transaction_failed type[2m > [22mshould validate failed transaction creation with payload[32m 2[2mms[22m[39m
|
|
1266
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mcreate_transaction_failed type[2m > [22mshould reject when transaction is null for failed creation[32m 1[2mms[22m[39m
|
|
1267
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mcreate_transaction_duplicate type[2m > [22mshould validate duplicate detection with transaction ID[32m 1[2mms[22m[39m
|
|
1268
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mcreate_transaction_duplicate type[2m > [22mshould validate duplicate detection with null transaction ID[32m 0[2mms[22m[39m
|
|
1269
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mcreate_transaction_duplicate type[2m > [22mshould require duplicate field to be true[32m 1[2mms[22m[39m
|
|
1270
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mcreate_transaction_duplicate type[2m > [22mshould require bulk_chunk_index for duplicates[32m 1[2mms[22m[39m
|
|
1271
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mupdate_transaction type[2m > [22mshould validate update with full created transaction (real execution)[32m 1[2mms[22m[39m
|
|
1272
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mupdate_transaction type[2m > [22mshould validate update with partial payload (dry run)[32m 3[2mms[22m[39m
|
|
1273
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mupdate_transaction type[2m > [22mshould validate update with null transaction[32m 0[2mms[22m[39m
|
|
1274
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mbalance_checkpoint type[2m > [22mshould validate balance checkpoint[32m 1[2mms[22m[39m
|
|
1275
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mbalance_checkpoint type[2m > [22mshould require transaction to be null for balance checkpoint[32m 0[2mms[22m[39m
|
|
1276
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mbulk_create_fallback type[2m > [22mshould validate bulk create fallback[32m 1[2mms[22m[39m
|
|
1277
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mbulk_create_fallback type[2m > [22mshould require bulk_chunk_index for fallback[32m 0[2mms[22m[39m
|
|
1278
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mdiscriminated union behavior[2m > [22mshould reject unknown action types[32m 0[2mms[22m[39m
|
|
1279
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mExecutionActionRecordSchema[2m > [22mdiscriminated union behavior[2m > [22mshould provide clear error messages for type mismatches[32m 1[2mms[22m[39m
|
|
1280
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mHelper schemas[2m > [22mCreatedTransactionSchema[2m > [22mshould validate minimal created transaction[32m 0[2mms[22m[39m
|
|
1281
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mHelper schemas[2m > [22mCreatedTransactionSchema[2m > [22mshould allow passthrough fields[32m 0[2mms[22m[39m
|
|
1282
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mHelper schemas[2m > [22mTransactionCreationPayloadSchema[2m > [22mshould validate minimal creation payload[32m 0[2mms[22m[39m
|
|
1283
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mHelper schemas[2m > [22mTransactionCreationPayloadSchema[2m > [22mshould validate full creation payload[32m 0[2mms[22m[39m
|
|
1284
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mHelper schemas[2m > [22mTransactionUpdatePayloadSchema[2m > [22mshould validate update with all fields[32m 0[2mms[22m[39m
|
|
1285
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mHelper schemas[2m > [22mTransactionUpdatePayloadSchema[2m > [22mshould validate update with only transaction_id[32m 0[2mms[22m[39m
|
|
1286
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mHelper schemas[2m > [22mDuplicateDetectionPayloadSchema[2m > [22mshould validate with both fields[32m 0[2mms[22m[39m
|
|
1287
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts[2m > [22mreconciliationOutputs[2m > [22mHelper schemas[2m > [22mDuplicateDetectionPayloadSchema[2m > [22mshould validate with null transaction_id[32m 0[2mms[22m[39m
|
|
1288
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mTransactionDryRunPreviewSchema[2m > [22mshould accept valid transaction preview[32m 9[2mms[22m[39m
|
|
1289
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mTransactionDryRunPreviewSchema[2m > [22mshould accept minimal transaction preview with required fields only[32m 1[2mms[22m[39m
|
|
1290
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mTransactionDryRunPreviewSchema[2m > [22mshould reject invalid date format[32m 2[2mms[22m[39m
|
|
1291
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mTransactionDryRunPreviewSchema[2m > [22mshould reject invalid cleared status[32m 1[2mms[22m[39m
|
|
1292
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mTransactionDryRunPreviewSchema[2m > [22mshould reject transaction with server-generated fields[32m 1[2mms[22m[39m
|
|
1293
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mSubtransactionPreviewSchema[2m > [22mshould accept valid subtransaction preview[32m 2[2mms[22m[39m
|
|
1294
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mSubtransactionPreviewSchema[2m > [22mshould accept minimal subtransaction with amount only[32m 1[2mms[22m[39m
|
|
1295
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mSubtransactionPreviewSchema[2m > [22mshould not include server-generated fields[32m 1[2mms[22m[39m
|
|
1296
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mCreateReceiptSplitTransactionOutputSchema - Dry Run Branch[2m > [22mshould accept valid dry-run response with strongly-typed preview[32m 4[2mms[22m[39m
|
|
1297
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mCreateReceiptSplitTransactionOutputSchema - Dry Run Branch[2m > [22mshould reject dry-run response with loose unknown types[32m 2[2mms[22m[39m
|
|
1298
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts[2m > [22mTransaction Mutation Schema Type Safety[2m > [22mCreateReceiptSplitTransactionOutputSchema - Dry Run Branch[2m > [22mshould reject subtransactions with server-generated id fields[32m 1[2mms[22m[39m
|
|
1299
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mfindSuggestedPayee[2m > [22mshould find exact payee name match[32m 4[2mms[22m[39m
|
|
1300
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mfindSuggestedPayee[2m > [22mshould find partial payee name match[32m 1[2mms[22m[39m
|
|
1301
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mfindSuggestedPayee[2m > [22mshould be case insensitive[32m 1[2mms[22m[39m
|
|
1302
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mfindSuggestedPayee[2m > [22mshould suggest cleaned description when no payee matches[32m 1[2mms[22m[39m
|
|
1303
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mfindSuggestedPayee[2m > [22mshould handle empty description[32m 2[2mms[22m[39m
|
|
1304
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mfindSuggestedPayee[2m > [22mshould remove numbers and consolidate whitespace[32m 0[2mms[22m[39m
|
|
1305
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mfindSuggestedPayee[2m > [22mshould handle description with only numbers[32m 1[2mms[22m[39m
|
|
1306
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mfindSuggestedPayee[2m > [22mshould find first matching payee when multiple matches[32m 0[2mms[22m[39m
|
|
1307
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mbuildSummary[2m > [22mshould build complete summary[32m 4[2mms[22m[39m
|
|
1308
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mbuildSummary[2m > [22mshould handle empty collections[32m 1[2mms[22m[39m
|
|
1309
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatMatches[2m > [22mshould format matches correctly[32m 4[2mms[22m[39m
|
|
1310
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatMatches[2m > [22mshould handle negative amounts[32m 0[2mms[22m[39m
|
|
1311
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatMatches[2m > [22mshould handle null payee names[32m 0[2mms[22m[39m
|
|
1312
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatMatches[2m > [22mshould handle large amounts[32m 0[2mms[22m[39m
|
|
1313
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatMatches[2m > [22mshould handle zero amounts[32m 0[2mms[22m[39m
|
|
1314
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatMatches[2m > [22mshould handle empty matches array[32m 0[2mms[22m[39m
|
|
1315
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatUnmatchedBank[2m > [22mshould format unmatched bank transactions with payee suggestions[32m 1[2mms[22m[39m
|
|
1316
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatUnmatchedBank[2m > [22mshould handle negative amounts[32m 0[2mms[22m[39m
|
|
1317
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatUnmatchedBank[2m > [22mshould handle empty transactions array[32m 0[2mms[22m[39m
|
|
1318
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatUnmatchedYNAB[2m > [22mshould format unmatched YNAB transactions[32m 1[2mms[22m[39m
|
|
1319
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatUnmatchedYNAB[2m > [22mshould handle negative amounts[32m 0[2mms[22m[39m
|
|
1320
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mformatUnmatchedYNAB[2m > [22mshould handle empty transactions array[32m 0[2mms[22m[39m
|
|
1321
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mbuildComparisonResult[2m > [22mshould build complete comparison result[32m 3[2mms[22m[39m
|
|
1322
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mbuildComparisonResult[2m > [22mshould handle empty results[32m 1[2mms[22m[39m
|
|
1323
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mbuildComparisonResult[2m > [22mshould call responseFormatter.format with correct structure[32m 6[2mms[22m[39m
|
|
1324
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/formatter.test.ts[2m > [22mformatter[2m > [22mbuildComparisonResult[2m > [22mshould return CallToolResult with correct format[32m 1[2mms[22m[39m
|
|
1325
|
-
[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 12[2mms[22m[39m
|
|
1326
|
-
[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
|
|
1327
|
-
[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
|
|
1328
|
-
[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 fuzzy payee match[32m 2[2mms[22m[39m
|
|
1329
|
-
[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
|
|
1330
|
-
[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 return no match when amount differs[32m 1[2mms[22m[39m
|
|
1331
|
-
[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
|
|
1332
|
-
[32m✓[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 1[2mms[22m[39m
|
|
1333
|
-
[32m✓[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 1[2mms[22m[39m
|
|
1334
|
-
[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
|
|
1335
|
-
[32m✓[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 0[2mms[22m[39m
|
|
1336
|
-
[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
|
|
1337
|
-
[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 3[2mms[22m[39m
|
|
1338
|
-
[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 1[2mms[22m[39m
|
|
1339
|
-
[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 1[2mms[22m[39m
|
|
1340
|
-
[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
|
|
1341
|
-
[32m✓[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 1[2mms[22m[39m
|
|
1342
|
-
[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 0[2mms[22m[39m
|
|
1343
|
-
[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 1[2mms[22m[39m
|
|
1344
|
-
[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
|
|
1345
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleGetUser[2m > [22mshould return user information successfully[32m 5[2mms[22m[39m
|
|
1346
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleGetUser[2m > [22mshould handle 401 authentication errors[32m 2[2mms[22m[39m
|
|
1347
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleGetUser[2m > [22mshould handle 403 authorization errors[32m 1[2mms[22m[39m
|
|
1348
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleGetUser[2m > [22mshould handle 429 rate limiting errors[32m 0[2mms[22m[39m
|
|
1349
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleGetUser[2m > [22mshould handle 500 server errors[32m 1[2mms[22m[39m
|
|
1350
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleGetUser[2m > [22mshould handle generic errors[32m 1[2mms[22m[39m
|
|
1351
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleConvertAmount[2m > [22mshould convert dollars to milliunits correctly[32m 1[2mms[22m[39m
|
|
1352
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleConvertAmount[2m > [22mshould convert milliunits to dollars correctly[32m 1[2mms[22m[39m
|
|
1353
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleConvertAmount[2m > [22mshould handle zero amounts[32m 1[2mms[22m[39m
|
|
1354
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleConvertAmount[2m > [22mshould handle negative amounts[32m 1[2mms[22m[39m
|
|
1355
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleConvertAmount[2m > [22mshould handle floating-point precision correctly[32m 0[2mms[22m[39m
|
|
1356
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleConvertAmount[2m > [22mshould handle large amounts[32m 0[2mms[22m[39m
|
|
1357
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mhandleConvertAmount[2m > [22mshould round to nearest milliunit when converting from dollars[32m 0[2mms[22m[39m
|
|
1358
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mConvertAmountSchema validation[2m > [22mshould validate correct parameters[32m 4[2mms[22m[39m
|
|
1359
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mConvertAmountSchema validation[2m > [22mshould reject non-finite numbers[32m 2[2mms[22m[39m
|
|
1360
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mConvertAmountSchema validation[2m > [22mshould reject NaN values[32m 0[2mms[22m[39m
|
|
1361
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mConvertAmountSchema validation[2m > [22mshould reject missing amount parameter[32m 0[2mms[22m[39m
|
|
1362
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mConvertAmountSchema validation[2m > [22mshould reject missing to_milliunits parameter[32m 1[2mms[22m[39m
|
|
1363
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/utilityTools.test.ts[2m > [22mUtility Tools[2m > [22mConvertAmountSchema validation[2m > [22mshould reject non-boolean to_milliunits parameter[32m 0[2mms[22m[39m
|
|
1364
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mReconciliation Performance - Bulk vs Sequential[2m > [22mprocesses 20 transactions in bulk mode in under 8 seconds
|
|
1365
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mReconciliation Performance - Bulk vs Sequential[2m > [22mpure sequential mode (single transaction) takes longer than 20 seconds
|
|
1366
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mReconciliation Performance - Bulk vs Sequential[2m > [22msequential fallback takes longer than 20 seconds for 20 transactions
|
|
1367
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mReconciliation Performance - Bulk vs Sequential[2m > [22machieves at least a 3x speedup over pure sequential mode
|
|
1368
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mReconciliation Performance - Bulk vs Sequential[2m > [22mhandles 150-transaction chunking without significant overhead
|
|
1369
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mReconciliation Performance - Bulk vs Sequential[2m > [22mstays within 10MB of heap growth for 100 bulk transactions
|
|
1370
|
-
[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
|
|
1371
|
-
[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
|
|
1372
|
-
[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
|
|
1373
|
-
[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
|
|
1374
|
-
[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 1[2mms[22m[39m
|
|
1375
|
-
[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 1[2mms[22m[39m
|
|
1376
|
-
[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
|
|
1377
|
-
[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
|
|
1378
|
-
[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
|
|
1379
|
-
[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
|
|
1380
|
-
[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
|
|
1381
|
-
[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
|
|
1382
|
-
[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
|
|
1383
|
-
[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
|
|
1384
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/reportFormatter.test.ts[2m > [22mreportFormatter[2m > [22mformatHumanReadableReport[2m > [22mshould show execution recommendations[32m 1[2mms[22m[39m
|
|
1385
|
-
[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
|
|
1386
|
-
[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
|
|
1387
|
-
[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
|
|
1388
|
-
[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 3[2mms[22m[39m
|
|
1389
|
-
[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
|
|
1390
|
-
[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
|
|
1391
|
-
[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
|
|
1392
|
-
[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
|
|
1393
|
-
[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
|
|
1394
|
-
[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
|
|
1395
|
-
[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
|
|
1396
|
-
[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
|
|
1397
|
-
[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 3[2mms[22m[39m
|
|
1398
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould respond to budget listing within acceptable time
|
|
1399
|
-
[22m[39mRate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
|
|
1400
|
-
|
|
1401
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould respond to budget listing within acceptable time
|
|
1402
|
-
[22m[39mRecorded request for token_5f854540: 1/200 requests
|
|
1403
|
-
|
|
1404
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould respond to budget listing within acceptable time
|
|
1405
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1406
|
-
[INFO] ynab:clear_cache | SUCCESS | 5ms | rate_limit_remaining:199
|
|
1407
|
-
|
|
1408
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould respond to budget listing within acceptable time
|
|
1409
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1410
|
-
|
|
1411
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould respond to budget listing within acceptable time
|
|
1412
|
-
[22m[39mRecorded request for token_5f854540: 2/200 requests
|
|
1413
|
-
|
|
1414
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould respond to budget listing within acceptable time
|
|
1415
|
-
[22m[39mRate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
|
|
1416
|
-
[INFO] ynab:list_budgets | SUCCESS | 6ms | rate_limit_remaining:198
|
|
1417
|
-
|
|
1418
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategorySchema[2m > [22mshould validate complete category with all fields including goals[32m 8[2mms[22m[39m
|
|
1419
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategorySchema[2m > [22mshould validate minimal category with only required fields[32m 4[2mms[22m[39m
|
|
1420
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategorySchema[2m > [22mshould validate hidden category[32m 1[2mms[22m[39m
|
|
1421
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategorySchema[2m > [22mshould validate deleted category[32m 0[2mms[22m[39m
|
|
1422
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategorySchema[2m > [22mshould validate category with various goal types[32m 1[2mms[22m[39m
|
|
1423
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategorySchema[2m > [22mshould fail validation when missing required id field[32m 2[2mms[22m[39m
|
|
1424
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategorySchema[2m > [22mshould fail validation when missing required name field[32m 1[2mms[22m[39m
|
|
1425
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategorySchema[2m > [22mshould fail validation when budgeted is not a number[32m 1[2mms[22m[39m
|
|
1426
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategorySchema[2m > [22mshould fail validation when hidden is not a boolean[32m 1[2mms[22m[39m
|
|
1427
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategoryGroupSchema[2m > [22mshould validate complete category group with all fields[32m 1[2mms[22m[39m
|
|
1428
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategoryGroupSchema[2m > [22mshould validate hidden category group[32m 0[2mms[22m[39m
|
|
1429
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategoryGroupSchema[2m > [22mshould fail validation when missing required id field[32m 0[2mms[22m[39m
|
|
1430
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mCategoryGroupSchema[2m > [22mshould fail validation when missing required name field[32m 0[2mms[22m[39m
|
|
1431
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mListCategoriesOutputSchema[2m > [22mshould validate output with categories and category groups[32m 4[2mms[22m[39m
|
|
1432
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mListCategoriesOutputSchema[2m > [22mshould validate output with empty arrays[32m 1[2mms[22m[39m
|
|
1433
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mListCategoriesOutputSchema[2m > [22mshould fail validation when categories is not an array[32m 0[2mms[22m[39m
|
|
1434
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mListCategoriesOutputSchema[2m > [22mshould fail validation when missing required categories field[32m 0[2mms[22m[39m
|
|
1435
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mListCategoriesOutputSchema[2m > [22mshould fail validation when missing required category_groups field[32m 1[2mms[22m[39m
|
|
1436
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mGetCategoryOutputSchema[2m > [22mshould validate output with complete category and cache metadata[32m 2[2mms[22m[39m
|
|
1437
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mGetCategoryOutputSchema[2m > [22mshould validate output with minimal category[32m 0[2mms[22m[39m
|
|
1438
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mGetCategoryOutputSchema[2m > [22mshould fail validation when category is not an object[32m 0[2mms[22m[39m
|
|
1439
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mGetCategoryOutputSchema[2m > [22mshould fail validation when category missing required fields[32m 1[2mms[22m[39m
|
|
1440
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts[2m > [22mGetCategoryOutputSchema[2m > [22mshould fail validation when missing required category field[32m 0[2mms[22m[39m
|
|
1441
|
-
[32m✓[39m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mYNAB MCP Server - Performance Tests[2m > [22mResponse Time Performance[2m > [22mshould respond to budget listing within acceptable time[33m 345[2mms[22m[39m
|
|
1442
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.swr.test.ts[2m > [22mDeltaCache stale-while-revalidate[2m > [22mshould pass staleWhileRevalidate to cache entry when set[32m 16[2mms[22m[39m
|
|
1443
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.swr.test.ts[2m > [22mDeltaCache stale-while-revalidate[2m > [22mshould not set staleWhileRevalidate when omitted[32m 4[2mms[22m[39m
|
|
1444
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.swr.test.ts[2m > [22mDeltaCache stale-while-revalidate[2m > [22mshould pass staleWhileRevalidate when delta is disabled[32m 3[2mms[22m[39m
|
|
1445
|
-
[32m✓[39m [30m[42m unit [49m[39m src/server/__tests__/deltaCache.swr.test.ts[2m > [22mDeltaCache stale-while-revalidate[2m > [22mshould include staleWhileRevalidate in entry after delta merge[32m 3[2mms[22m[39m
|
|
1446
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionSchema[2m > [22mshould validate complete transaction with all fields[32m 37[2mms[22m[39m
|
|
1447
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionSchema[2m > [22mshould validate minimal transaction with only required fields[32m 1[2mms[22m[39m
|
|
1448
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionSchema[2m > [22mshould validate transaction with cleared status values[32m 1[2mms[22m[39m
|
|
1449
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionSchema[2m > [22mshould validate split transaction with subtransactions[32m 1[2mms[22m[39m
|
|
1450
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionSchema[2m > [22mshould validate transfer transaction[32m 1[2mms[22m[39m
|
|
1451
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionSchema[2m > [22mshould fail validation when missing required id field[32m 2[2mms[22m[39m
|
|
1452
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionSchema[2m > [22mshould fail validation when missing required date field[32m 1[2mms[22m[39m
|
|
1453
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionSchema[2m > [22mshould fail validation when amount is not a number[32m 1[2mms[22m[39m
|
|
1454
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionSchema[2m > [22mshould fail validation when approved is not a boolean[32m 1[2mms[22m[39m
|
|
1455
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionPreviewSchema[2m > [22mshould validate preview transaction with all fields[32m 2[2mms[22m[39m
|
|
1456
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionPreviewSchema[2m > [22mshould validate minimal preview transaction[32m 1[2mms[22m[39m
|
|
1457
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mTransactionPreviewSchema[2m > [22mshould fail validation when missing required id field[32m 1[2mms[22m[39m
|
|
1458
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mListTransactionsOutputSchema - Normal Mode[2m > [22mshould validate normal mode output with multiple transactions[32m 5[2mms[22m[39m
|
|
1459
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mListTransactionsOutputSchema - Normal Mode[2m > [22mshould validate normal mode output with empty transactions array[32m 1[2mms[22m[39m
|
|
1460
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mListTransactionsOutputSchema - Preview Mode[2m > [22mshould validate preview mode output for large result sets[32m 2[2mms[22m[39m
|
|
1461
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mListTransactionsOutputSchema - Preview Mode[2m > [22mshould validate preview mode output with minimal preview transactions[32m 1[2mms[22m[39m
|
|
1462
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mListTransactionsOutputSchema - Preview Mode[2m > [22mshould fail validation when preview mode missing required fields[32m 1[2mms[22m[39m
|
|
1463
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mGetTransactionOutputSchema[2m > [22mshould validate output with complete transaction and cache metadata[32m 3[2mms[22m[39m
|
|
1464
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mGetTransactionOutputSchema[2m > [22mshould validate output with minimal transaction[32m 1[2mms[22m[39m
|
|
1465
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mGetTransactionOutputSchema[2m > [22mshould fail validation when transaction is not an object[32m 1[2mms[22m[39m
|
|
1466
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mGetTransactionOutputSchema[2m > [22mshould fail validation when transaction missing required fields[32m 1[2mms[22m[39m
|
|
1467
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts[2m > [22mGetTransactionOutputSchema[2m > [22mshould fail validation when missing required transaction field[32m 0[2mms[22m[39m
|
|
1468
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizePayee[2m > [22mshould convert to lowercase[32m 19[2mms[22m[39m
|
|
1469
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mnormalizePayee[2m > [22mshould remove all spaces[32m 1[2mms[22m[39m
|
|
1470
|
-
[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
|
|
1471
|
-
[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 1[2mms[22m[39m
|
|
1472
|
-
[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 4[2mms[22m[39m
|
|
1473
|
-
[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
|
|
1474
|
-
[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
|
|
1475
|
-
[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 1[2mms[22m[39m
|
|
1476
|
-
[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
|
|
1477
|
-
[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 0[2mms[22m[39m
|
|
1478
|
-
[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
|
|
1479
|
-
[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
|
|
1480
|
-
[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
|
|
1481
|
-
[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 0[2mms[22m[39m
|
|
1482
|
-
[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
|
|
1483
|
-
[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
|
|
1484
|
-
[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
|
|
1485
|
-
[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
|
|
1486
|
-
[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
|
|
1487
|
-
[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
|
|
1488
|
-
[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
|
|
1489
|
-
[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
|
|
1490
|
-
[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 2[2mms[22m[39m
|
|
1491
|
-
[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
|
|
1492
|
-
[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
|
|
1493
|
-
[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
|
|
1494
|
-
[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
|
|
1495
|
-
[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 1[2mms[22m[39m
|
|
1496
|
-
[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 0[2mms[22m[39m
|
|
1497
|
-
[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 0[2mms[22m[39m
|
|
1498
|
-
[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 0[2mms[22m[39m
|
|
1499
|
-
[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
|
|
1500
|
-
[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
|
|
1501
|
-
[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
|
|
1502
|
-
[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
|
|
1503
|
-
[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
|
|
1504
|
-
[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
|
|
1505
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/reconciliation/__tests__/payeeNormalizer.test.ts[2m > [22mpayeeNormalizer[2m > [22mpayeeContains[2m > [22mshould ignore special characters[32m 0[2mms[22m[39m
|
|
1506
|
-
[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
|
|
1507
|
-
[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
|
|
1508
|
-
[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
|
|
1509
|
-
[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
|
|
1510
|
-
[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
|
|
1511
|
-
[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
|
|
1512
|
-
[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
|
|
1513
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mPayeeSchema[2m > [22mshould validate complete payee with all fields[32m 6[2mms[22m[39m
|
|
1514
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mPayeeSchema[2m > [22mshould validate transfer payee with transfer_account_id[32m 1[2mms[22m[39m
|
|
1515
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mPayeeSchema[2m > [22mshould validate minimal payee with only required fields[32m 1[2mms[22m[39m
|
|
1516
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mPayeeSchema[2m > [22mshould validate deleted payee[32m 1[2mms[22m[39m
|
|
1517
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mPayeeSchema[2m > [22mshould fail validation when missing required id field[32m 1[2mms[22m[39m
|
|
1518
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mPayeeSchema[2m > [22mshould fail validation when missing required name field[32m 2[2mms[22m[39m
|
|
1519
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mPayeeSchema[2m > [22mshould fail validation when missing required deleted field[32m 0[2mms[22m[39m
|
|
1520
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mPayeeSchema[2m > [22mshould fail validation when deleted is not a boolean[32m 0[2mms[22m[39m
|
|
1521
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mListPayeesOutputSchema[2m > [22mshould validate output with multiple payees including transfers[32m 4[2mms[22m[39m
|
|
1522
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mListPayeesOutputSchema[2m > [22mshould validate output with single payee[32m 1[2mms[22m[39m
|
|
1523
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mListPayeesOutputSchema[2m > [22mshould validate output with empty payees array[32m 1[2mms[22m[39m
|
|
1524
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mListPayeesOutputSchema[2m > [22mshould validate output with deleted payees[32m 0[2mms[22m[39m
|
|
1525
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mListPayeesOutputSchema[2m > [22mshould fail validation when payees is not an array[32m 1[2mms[22m[39m
|
|
1526
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mListPayeesOutputSchema[2m > [22mshould fail validation when missing required payees field[32m 0[2mms[22m[39m
|
|
1527
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mListPayeesOutputSchema[2m > [22mshould fail validation when missing required total_count field[32m 0[2mms[22m[39m
|
|
1528
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mListPayeesOutputSchema[2m > [22mshould fail validation when total_count is not an integer[32m 1[2mms[22m[39m
|
|
1529
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mGetPayeeOutputSchema[2m > [22mshould validate output with complete payee and cache metadata[32m 1[2mms[22m[39m
|
|
1530
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mGetPayeeOutputSchema[2m > [22mshould validate output with transfer payee[32m 0[2mms[22m[39m
|
|
1531
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mGetPayeeOutputSchema[2m > [22mshould validate output with deleted payee[32m 0[2mms[22m[39m
|
|
1532
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mGetPayeeOutputSchema[2m > [22mshould fail validation when payee is not an object[32m 0[2mms[22m[39m
|
|
1533
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mGetPayeeOutputSchema[2m > [22mshould fail validation when payee missing required fields[32m 0[2mms[22m[39m
|
|
1534
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts[2m > [22mGetPayeeOutputSchema[2m > [22mshould fail validation when missing required payee field[32m 0[2mms[22m[39m
|
|
1535
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mCompareTransactionsSchema[2m > [22mshould validate valid parameters[32m 8[2mms[22m[39m
|
|
1536
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mCompareTransactionsSchema[2m > [22mshould require budget_id and account_id[32m 2[2mms[22m[39m
|
|
1537
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mCompareTransactionsSchema[2m > [22mshould require either csv_file_path or csv_data[32m 1[2mms[22m[39m
|
|
1538
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mCompareTransactionsSchema[2m > [22mshould apply default values[32m 1[2mms[22m[39m
|
|
1539
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mhandleCompareTransactions[2m > [22mshould compare CSV data with YNAB transactions[32m 19[2mms[22m[39m
|
|
1540
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mhandleCompareTransactions[2m > [22mshould handle CSV file path[32m 30[2mms[22m[39m
|
|
1541
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mhandleCompareTransactions[2m > [22mshould handle custom CSV format[32m 26[2mms[22m[39m
|
|
1542
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mhandleCompareTransactions[2m > [22mshould handle CSV without headers using column indices[32m 7[2mms[22m[39m
|
|
1543
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mhandleCompareTransactions[2m > [22mshould handle MMM dd, yyyy date format (bank statement format)[32m 8[2mms[22m[39m
|
|
1544
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle large transaction lists efficiently
|
|
1545
|
-
[22m[39mRate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
|
|
1546
|
-
|
|
1547
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle large transaction lists efficiently
|
|
1548
|
-
[22m[39mRecorded request for token_5f854540: 1/200 requests
|
|
1549
|
-
|
|
1550
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle large transaction lists efficiently
|
|
1551
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1552
|
-
[INFO] ynab:clear_cache | SUCCESS | 3ms | rate_limit_remaining:199
|
|
1553
|
-
|
|
1554
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle large transaction lists efficiently
|
|
1555
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1556
|
-
|
|
1557
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle large transaction lists efficiently
|
|
1558
|
-
[22m[39mRecorded request for token_5f854540: 2/200 requests
|
|
1559
|
-
|
|
1560
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle large transaction lists efficiently
|
|
1561
|
-
[22m[39mRate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
|
|
1562
|
-
[INFO] ynab:list_transactions | SUCCESS | 4ms | rate_limit_remaining:198
|
|
1563
|
-
|
|
1564
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mhandleCompareTransactions[2m > [22mshould maintain backward compatibility with modular structure[32m 4[2mms[22m[39m
|
|
1565
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.test.ts[2m > [22mcompareTransactions[2m > [22mhandleCompareTransactions[2m > [22mshould handle auto-detection correctly through modular structure[32m 10[2mms[22m[39m
|
|
1566
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mcalculateMatchScore[2m > [22mshould give perfect score for exact matches[32m 6[2mms[22m[39m
|
|
1567
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mcalculateMatchScore[2m > [22mshould score date differences correctly[32m 1[2mms[22m[39m
|
|
1568
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mcalculateMatchScore[2m > [22mshould score amount differences correctly[32m 1[2mms[22m[39m
|
|
1569
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mcalculateMatchScore[2m > [22mshould not match when differences exceed tolerance[32m 0[2mms[22m[39m
|
|
1570
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mcalculateMatchScore[2m > [22mshould handle memo similarity[32m 0[2mms[22m[39m
|
|
1571
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mcalculateMatchScore[2m > [22mshould handle zero amounts[32m 1[2mms[22m[39m
|
|
1572
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mcalculateMatchScore[2m > [22mshould handle empty descriptions gracefully[32m 0[2mms[22m[39m
|
|
1573
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mgroupTransactionsByAmount[2m > [22mshould group transactions by amount[32m 2[2mms[22m[39m
|
|
1574
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mgroupTransactionsByAmount[2m > [22mshould handle mixed transaction types[32m 1[2mms[22m[39m
|
|
1575
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mgroupTransactionsByAmount[2m > [22mshould handle empty transaction list[32m 0[2mms[22m[39m
|
|
1576
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mmatchDuplicateAmounts[2m > [22mshould match duplicates chronologically[32m 1[2mms[22m[39m
|
|
1577
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mmatchDuplicateAmounts[2m > [22mshould give chronology bonus for close dates[32m 1[2mms[22m[39m
|
|
1578
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mmatchDuplicateAmounts[2m > [22mshould handle partial matches (more bank than YNAB)[32m 1[2mms[22m[39m
|
|
1579
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mmatchDuplicateAmounts[2m > [22mshould not reuse matched transactions[32m 1[2mms[22m[39m
|
|
1580
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mmatchDuplicateAmounts[2m > [22mshould respect minimum score threshold[32m 0[2mms[22m[39m
|
|
1581
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould find simple one-to-one matches[32m 1[2mms[22m[39m
|
|
1582
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould handle unmatched transactions[32m 1[2mms[22m[39m
|
|
1583
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould handle duplicate amounts with special logic[32m 1[2mms[22m[39m
|
|
1584
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould respect minimum score threshold[32m 1[2mms[22m[39m
|
|
1585
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould not reuse transactions[32m 1[2mms[22m[39m
|
|
1586
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould handle empty transaction lists[32m 1[2mms[22m[39m
|
|
1587
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould handle large datasets efficiently[32m 4[2mms[22m[39m
|
|
1588
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould handle negative amounts correctly[32m 1[2mms[22m[39m
|
|
1589
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould demonstrate parity mode (legacy behavior) vs enhanced mode with chronology bonus[32m 18[2mms[22m[39m
|
|
1590
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould preserve legacy behavior when chronology bonus is disabled[32m 1[2mms[22m[39m
|
|
1591
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions/matcher.test.ts[2m > [22mmatcher[2m > [22mfindMatches[2m > [22mshould apply chronology bonus when enabled for duplicate amounts[32m 1[2mms[22m[39m
|
|
1592
|
-
[32m✓[39m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mYNAB MCP Server - Performance Tests[2m > [22mResponse Time Performance[2m > [22mshould handle large transaction lists efficiently[33m 393[2mms[22m[39m
|
|
1593
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle concurrent requests efficiently
|
|
1594
|
-
[22m[39mRate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
|
|
1595
|
-
|
|
1596
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle concurrent requests efficiently
|
|
1597
|
-
[22m[39mRecorded request for token_5f854540: 1/200 requests
|
|
1598
|
-
|
|
1599
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle concurrent requests efficiently
|
|
1600
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1601
|
-
[INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
|
|
1602
|
-
|
|
1603
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle concurrent requests efficiently
|
|
1604
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1605
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1606
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1607
|
-
Recorded request for token_5f854540: 2/200 requests
|
|
1608
|
-
Recorded request for token_5f854540: 3/200 requests
|
|
1609
|
-
Recorded request for token_5f854540: 4/200 requests
|
|
1610
|
-
|
|
1611
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle concurrent requests efficiently
|
|
1612
|
-
[22m[39mRate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
|
|
1613
|
-
[INFO] ynab:get_user | SUCCESS | 3ms | rate_limit_remaining:196
|
|
1614
|
-
|
|
1615
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mResponse Time Performance[2m > [22m[2mshould handle concurrent requests efficiently
|
|
1616
|
-
[22m[39mRate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
|
|
1617
|
-
[INFO] ynab:list_budgets | SUCCESS | 6ms | rate_limit_remaining:196
|
|
1618
|
-
Rate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
|
|
1619
|
-
[INFO] ynab:list_budgets | SUCCESS | 4ms | rate_limit_remaining:196
|
|
1620
|
-
|
|
1621
|
-
[32m✓[39m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mYNAB MCP Server - Performance Tests[2m > [22mResponse Time Performance[2m > [22mshould handle concurrent requests efficiently[32m 287[2mms[22m[39m
|
|
1622
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mBudgetSummarySchema[2m > [22mshould validate complete budget with all fields[32m 10[2mms[22m[39m
|
|
1623
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mBudgetSummarySchema[2m > [22mshould validate minimal budget with only required fields[32m 2[2mms[22m[39m
|
|
1624
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mBudgetSummarySchema[2m > [22mshould validate budget with date_format but no currency_format[32m 1[2mms[22m[39m
|
|
1625
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mBudgetSummarySchema[2m > [22mshould fail validation when missing required id field[32m 2[2mms[22m[39m
|
|
1626
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mBudgetSummarySchema[2m > [22mshould fail validation when missing required name field[32m 1[2mms[22m[39m
|
|
1627
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mBudgetSummarySchema[2m > [22mshould fail validation when id is not a string[32m 1[2mms[22m[39m
|
|
1628
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mBudgetSummarySchema[2m > [22mshould fail validation when name is not a string[32m 0[2mms[22m[39m
|
|
1629
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mBudgetSummarySchema[2m > [22mshould fail validation when date_format is missing required format field[32m 1[2mms[22m[39m
|
|
1630
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mBudgetSummarySchema[2m > [22mshould fail validation when currency_format has invalid types[32m 1[2mms[22m[39m
|
|
1631
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mListBudgetsOutputSchema[2m > [22mshould validate output with multiple budgets and cache metadata[32m 4[2mms[22m[39m
|
|
1632
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mListBudgetsOutputSchema[2m > [22mshould validate output with single budget[32m 1[2mms[22m[39m
|
|
1633
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mListBudgetsOutputSchema[2m > [22mshould validate output with empty budgets array[32m 1[2mms[22m[39m
|
|
1634
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mListBudgetsOutputSchema[2m > [22mshould validate output with complete budget including formats[32m 1[2mms[22m[39m
|
|
1635
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mListBudgetsOutputSchema[2m > [22mshould fail validation when budgets is not an array[32m 0[2mms[22m[39m
|
|
1636
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mListBudgetsOutputSchema[2m > [22mshould fail validation when budgets array contains invalid budget[32m 1[2mms[22m[39m
|
|
1637
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mListBudgetsOutputSchema[2m > [22mshould fail validation when missing required budgets field[32m 1[2mms[22m[39m
|
|
1638
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts[2m > [22mListBudgetsOutputSchema[2m > [22mshould fail validation when cached is not a boolean[32m 0[2mms[22m[39m
|
|
1639
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1640
|
-
[22m[39mRate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
|
|
1641
|
-
|
|
1642
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1643
|
-
[22m[39mRecorded request for token_5f854540: 1/200 requests
|
|
1644
|
-
|
|
1645
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1646
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1647
|
-
[INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
|
|
1648
|
-
|
|
1649
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1650
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1651
|
-
|
|
1652
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1653
|
-
[22m[39mRecorded request for token_5f854540: 2/200 requests
|
|
1654
|
-
|
|
1655
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1656
|
-
[22m[39mRate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
|
|
1657
|
-
[INFO] ynab:list_categories | SUCCESS | 61ms | rate_limit_remaining:198
|
|
1658
|
-
|
|
1659
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1660
|
-
[22m[39mRate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
|
|
1661
|
-
|
|
1662
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1663
|
-
[22m[39mRecorded request for token_5f854540: 3/200 requests
|
|
1664
|
-
|
|
1665
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1666
|
-
[22m[39mRate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
|
|
1667
|
-
[INFO] ynab:list_categories | SUCCESS | 65ms | rate_limit_remaining:197
|
|
1668
|
-
|
|
1669
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1670
|
-
[22m[39mRate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
|
|
1671
|
-
|
|
1672
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1673
|
-
[22m[39mRecorded request for token_5f854540: 4/200 requests
|
|
1674
|
-
|
|
1675
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1676
|
-
[22m[39mRate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
|
|
1677
|
-
[INFO] ynab:list_categories | SUCCESS | 30ms | rate_limit_remaining:196
|
|
1678
|
-
|
|
1679
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1680
|
-
[22m[39mRate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
|
|
1681
|
-
|
|
1682
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1683
|
-
[22m[39mRecorded request for token_5f854540: 5/200 requests
|
|
1684
|
-
|
|
1685
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mAccountSchema[2m > [22mshould validate complete account with all fields[32m 8[2mms[22m[39m
|
|
1686
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mAccountSchema[2m > [22mshould validate minimal account with only required fields[32m 1[2mms[22m[39m
|
|
1687
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mAccountSchema[2m > [22mshould validate closed account[32m 1[2mms[22m[39m
|
|
1688
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mAccountSchema[2m > [22mshould validate off-budget tracking account[32m 1[2mms[22m[39m
|
|
1689
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mAccountSchema[2m > [22mshould validate account with various account types[32m 2[2mms[22m[39m
|
|
1690
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mAccountSchema[2m > [22mshould fail validation when missing required id field[32m 3[2mms[22m[39m
|
|
1691
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mAccountSchema[2m > [22mshould fail validation when missing required name field[32m 2[2mms[22m[39m
|
|
1692
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mAccountSchema[2m > [22mshould fail validation when balance is not a number[32m 1[2mms[22m[39m
|
|
1693
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mAccountSchema[2m > [22mshould fail validation when on_budget is not a boolean[32m 1[2mms[22m[39m
|
|
1694
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mListAccountsOutputSchema[2m > [22mshould validate output with multiple accounts and cache metadata[32m 5[2mms[22m[39m
|
|
1695
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mListAccountsOutputSchema[2m > [22mshould validate output with single account[32m 1[2mms[22m[39m
|
|
1696
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mListAccountsOutputSchema[2m > [22mshould validate output with empty accounts array[32m 1[2mms[22m[39m
|
|
1697
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mListAccountsOutputSchema[2m > [22mshould fail validation when accounts is not an array[32m 1[2mms[22m[39m
|
|
1698
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mListAccountsOutputSchema[2m > [22mshould fail validation when missing required total_count field[32m 1[2mms[22m[39m
|
|
1699
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mListAccountsOutputSchema[2m > [22mshould fail validation when total_count is not an integer[32m 1[2mms[22m[39m
|
|
1700
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mGetAccountOutputSchema[2m > [22mshould validate output with complete account and cache metadata[32m 2[2mms[22m[39m
|
|
1701
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mGetAccountOutputSchema[2m > [22mshould validate output with minimal account[32m 0[2mms[22m[39m
|
|
1702
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mGetAccountOutputSchema[2m > [22mshould fail validation when account is not an object[32m 1[2mms[22m[39m
|
|
1703
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mGetAccountOutputSchema[2m > [22mshould fail validation when account is missing required fields[32m 1[2mms[22m[39m
|
|
1704
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/schemas/outputs/__tests__/accountOutputs.test.ts[2m > [22mGetAccountOutputSchema[2m > [22mshould fail validation when missing required account field[32m 0[2mms[22m[39m
|
|
1705
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1706
|
-
[22m[39mRate limit check for token_5f854540: 5/200 requests, remaining: 195, limited: false
|
|
1707
|
-
[INFO] ynab:list_categories | SUCCESS | 16ms | rate_limit_remaining:195
|
|
1708
|
-
|
|
1709
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1710
|
-
[22m[39mRate limit check for token_5f854540: 5/200 requests, remaining: 195, limited: false
|
|
1711
|
-
|
|
1712
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1713
|
-
[22m[39mRecorded request for token_5f854540: 6/200 requests
|
|
1714
|
-
|
|
1715
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1716
|
-
[22m[39mRate limit check for token_5f854540: 6/200 requests, remaining: 194, limited: false
|
|
1717
|
-
[INFO] ynab:list_categories | SUCCESS | 18ms | rate_limit_remaining:194
|
|
1718
|
-
|
|
1719
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1720
|
-
[22m[39mRate limit check for token_5f854540: 6/200 requests, remaining: 194, limited: false
|
|
1721
|
-
|
|
1722
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1723
|
-
[22m[39mRecorded request for token_5f854540: 7/200 requests
|
|
1724
|
-
|
|
1725
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1726
|
-
[22m[39mRate limit check for token_5f854540: 7/200 requests, remaining: 193, limited: false
|
|
1727
|
-
[INFO] ynab:list_categories | SUCCESS | 15ms | rate_limit_remaining:193
|
|
1728
|
-
|
|
1729
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1730
|
-
[22m[39mRate limit check for token_5f854540: 7/200 requests, remaining: 193, limited: false
|
|
1731
|
-
|
|
1732
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1733
|
-
[22m[39mRecorded request for token_5f854540: 8/200 requests
|
|
1734
|
-
|
|
1735
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1736
|
-
[22m[39mRate limit check for token_5f854540: 8/200 requests, remaining: 192, limited: false
|
|
1737
|
-
[INFO] ynab:list_categories | SUCCESS | 21ms | rate_limit_remaining:192
|
|
1738
|
-
|
|
1739
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1740
|
-
[22m[39mRate limit check for token_5f854540: 8/200 requests, remaining: 192, limited: false
|
|
1741
|
-
|
|
1742
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1743
|
-
[22m[39mRecorded request for token_5f854540: 9/200 requests
|
|
1744
|
-
|
|
1745
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaFetcherArgs[2m > [22mshould accept valid 2-argument form (ynabAPI, params)[32m 5[2mms[22m[39m
|
|
1746
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaFetcherArgs[2m > [22mshould accept valid 3-argument form (ynabAPI, deltaFetcher, params)[32m 1[2mms[22m[39m
|
|
1747
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaFetcherArgs[2m > [22mshould reject 2-argument form with DeltaFetcher instead of params[32m 2[2mms[22m[39m
|
|
1748
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaFetcherArgs[2m > [22mshould reject 3-argument form with wrong types[32m 1[2mms[22m[39m
|
|
1749
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaFetcherArgs[2m > [22mshould reject non-object params[32m 1[2mms[22m[39m
|
|
1750
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaWriteArgs[2m > [22mshould accept valid 1-argument form (params)[32m 1[2mms[22m[39m
|
|
1751
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaWriteArgs[2m > [22mshould accept valid 3-argument form (deltaCache, knowledgeStore, params)[32m 0[2mms[22m[39m
|
|
1752
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaWriteArgs[2m > [22mshould reject 1-argument form with DeltaCache instead of params[32m 0[2mms[22m[39m
|
|
1753
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaWriteArgs[2m > [22mshould reject 2-argument form (ambiguous)[32m 2[2mms[22m[39m
|
|
1754
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaWriteArgs[2m > [22mshould reject 3-argument form with wrong types[32m 1[2mms[22m[39m
|
|
1755
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/deltaSupport.test.ts[2m > [22mdeltaSupport runtime validation[2m > [22mresolveDeltaWriteArgs[2m > [22mshould reject non-object params[32m 1[2mms[22m[39m
|
|
1756
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1757
|
-
[22m[39mRate limit check for token_5f854540: 9/200 requests, remaining: 191, limited: false
|
|
1758
|
-
[INFO] ynab:list_categories | SUCCESS | 65ms | rate_limit_remaining:191
|
|
1759
|
-
|
|
1760
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1761
|
-
[22m[39mRate limit check for token_5f854540: 9/200 requests, remaining: 191, limited: false
|
|
1762
|
-
|
|
1763
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1764
|
-
[22m[39mRecorded request for token_5f854540: 10/200 requests
|
|
1765
|
-
|
|
1766
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.window.test.ts[2m > [22mcompareTransactions statement window filtering[2m > [22minWindow function[2m > [22mexcludes transactions outside statement window[32m 4[2mms[22m[39m
|
|
1767
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.window.test.ts[2m > [22mcompareTransactions statement window filtering[2m > [22minWindow function[2m > [22mhandles partial window bounds[32m 1[2mms[22m[39m
|
|
1768
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.window.test.ts[2m > [22mcompareTransactions statement window filtering[2m > [22minWindow function[2m > [22mfilters candidates before matching logic[32m 2[2mms[22m[39m
|
|
1769
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.window.test.ts[2m > [22mcompareTransactions statement window filtering[2m > [22mstatement window clamping[2m > [22mclamps bank and YNAB candidates to statement window[32m 1[2mms[22m[39m
|
|
1770
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.window.test.ts[2m > [22mcompareTransactions statement window filtering[2m > [22mstatement window clamping[2m > [22mmatches use filtered transactions not original counts[32m 0[2mms[22m[39m
|
|
1771
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.window.test.ts[2m > [22mcompareTransactions statement window filtering[2m > [22mintegration with modular compareTransactions[2m > [22mshould apply window filtering in the main handler[32m 0[2mms[22m[39m
|
|
1772
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/compareTransactions.window.test.ts[2m > [22mcompareTransactions statement window filtering[2m > [22mintegration with modular compareTransactions[2m > [22mshould filter transactions before matching in modular structure[32m 1[2mms[22m[39m
|
|
1773
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1774
|
-
[22m[39mRate limit check for token_5f854540: 10/200 requests, remaining: 190, limited: false
|
|
1775
|
-
[INFO] ynab:list_categories | SUCCESS | 18ms | rate_limit_remaining:190
|
|
1776
|
-
|
|
1777
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1778
|
-
[22m[39mRate limit check for token_5f854540: 10/200 requests, remaining: 190, limited: false
|
|
1779
|
-
|
|
1780
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1781
|
-
[22m[39mRecorded request for token_5f854540: 11/200 requests
|
|
1782
|
-
|
|
1783
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mMemory Usage Performance[2m > [22m[2mshould handle memory efficiently with large datasets
|
|
1784
|
-
[22m[39mRate limit check for token_5f854540: 11/200 requests, remaining: 189, limited: false
|
|
1785
|
-
[INFO] ynab:list_categories | SUCCESS | 18ms | rate_limit_remaining:189
|
|
1786
|
-
|
|
1787
|
-
[32m✓[39m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mYNAB MCP Server - Performance Tests[2m > [22mMemory Usage Performance[2m > [22mshould handle memory efficiently with large datasets[33m 696[2mms[22m[39m
|
|
1788
|
-
[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 27[2mms[22m[39m
|
|
1789
|
-
[32m✓[39m [30m[42m unit [49m[39m src/types/__tests__/index.test.ts[2m > [22mError Classes[2m > [22mAuthenticationError[2m > [22mshould create error with correct name and message[32m 4[2mms[22m[39m
|
|
1790
|
-
[32m✓[39m [30m[42m unit [49m[39m src/types/__tests__/index.test.ts[2m > [22mError Classes[2m > [22mAuthenticationError[2m > [22mshould be throwable and catchable[32m 2[2mms[22m[39m
|
|
1791
|
-
[32m✓[39m [30m[42m unit [49m[39m src/types/__tests__/index.test.ts[2m > [22mError Classes[2m > [22mConfigurationError[2m > [22mshould create error with correct name and message[32m 1[2mms[22m[39m
|
|
1792
|
-
[32m✓[39m [30m[42m unit [49m[39m src/types/__tests__/index.test.ts[2m > [22mError Classes[2m > [22mConfigurationError[2m > [22mshould be throwable and catchable[32m 1[2mms[22m[39m
|
|
1793
|
-
[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 7[2mms[22m[39m
|
|
1794
|
-
[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 9[2mms[22m[39m
|
|
1795
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould handle errors quickly without blocking
|
|
1796
|
-
[22m[39mRate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
|
|
1797
|
-
|
|
1798
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould handle errors quickly without blocking
|
|
1799
|
-
[22m[39mRecorded request for token_5f854540: 1/200 requests
|
|
1800
|
-
|
|
1801
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould handle errors quickly without blocking
|
|
1802
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1803
|
-
[INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
|
|
1804
|
-
|
|
1805
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould handle errors quickly without blocking
|
|
1806
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1807
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1808
|
-
Recorded request for token_5f854540: 2/200 requests
|
|
1809
|
-
Recorded request for token_5f854540: 3/200 requests
|
|
1810
|
-
|
|
1811
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould handle errors quickly without blocking
|
|
1812
|
-
[22m[39mRate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
|
|
1813
|
-
[INFO] ynab:list_budgets | SUCCESS | 4ms | rate_limit_remaining:197
|
|
1814
|
-
Rate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
|
|
1815
|
-
[INFO] ynab:list_budgets | SUCCESS | 4ms | rate_limit_remaining:197
|
|
1816
|
-
|
|
1817
|
-
[32m✓[39m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mYNAB MCP Server - Performance Tests[2m > [22mError Handling Performance[2m > [22mshould handle errors quickly without blocking[32m 283[2mms[22m[39m
|
|
1818
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould recover from rate limiting gracefully
|
|
1819
|
-
[22m[39mRate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
|
|
1820
|
-
|
|
1821
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould recover from rate limiting gracefully
|
|
1822
|
-
[22m[39mRecorded request for token_5f854540: 1/200 requests
|
|
1823
|
-
|
|
1824
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould recover from rate limiting gracefully
|
|
1825
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1826
|
-
[INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
|
|
1827
|
-
|
|
1828
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould recover from rate limiting gracefully
|
|
1829
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1830
|
-
|
|
1831
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould recover from rate limiting gracefully
|
|
1832
|
-
[22m[39mRecorded request for token_5f854540: 2/200 requests
|
|
1833
|
-
|
|
1834
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mError Handling Performance[2m > [22m[2mshould recover from rate limiting gracefully
|
|
1835
|
-
[22m[39mRate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
|
|
1836
|
-
[INFO] ynab:list_budgets | SUCCESS | 1ms | rate_limit_remaining:198
|
|
1837
|
-
|
|
1838
|
-
[32m✓[39m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mYNAB MCP Server - Performance Tests[2m > [22mError Handling Performance[2m > [22mshould recover from rate limiting gracefully[32m 226[2mms[22m[39m
|
|
1839
|
-
[2m[90m↓[39m[22m [30m[42m unit [49m[39m src/__tests__/delta.performance.test.ts[2m > [22mDelta performance characteristics[2m > [22mreuses cache and avoids repeated full refreshes
|
|
1840
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mValidation Performance[2m > [22m[2mshould validate input parameters quickly
|
|
1841
|
-
[22m[39mRate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
|
|
1842
|
-
|
|
1843
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mValidation Performance[2m > [22m[2mshould validate input parameters quickly
|
|
1844
|
-
[22m[39mRecorded request for token_5f854540: 1/200 requests
|
|
1845
|
-
|
|
1846
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mValidation Performance[2m > [22m[2mshould validate input parameters quickly
|
|
1847
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1848
|
-
[INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
|
|
1849
|
-
|
|
1850
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mValidation Performance[2m > [22m[2mshould validate input parameters quickly
|
|
1851
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1852
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1853
|
-
[ERROR] ynab:get_budget | FAILED | 1ms | rate_limit_remaining:199 | error:"Validation failed: Validation error: Budget ID is required at "budget_id""
|
|
1854
|
-
Recorded request for token_5f854540: 2/200 requests
|
|
1855
|
-
|
|
1856
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mValidation Performance[2m > [22m[2mshould validate input parameters quickly
|
|
1857
|
-
[22m[39mRate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
|
|
1858
|
-
[INFO] ynab:convert_amount | SUCCESS | 2ms | rate_limit_remaining:198
|
|
1859
|
-
|
|
1860
|
-
[32m✓[39m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mYNAB MCP Server - Performance Tests[2m > [22mValidation Performance[2m > [22mshould validate input parameters quickly[32m 184[2mms[22m[39m
|
|
1861
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22mformatYNABMonth[2m > [22mshould format date as YYYY-MM-01[32m 8[2mms[22m[39m
|
|
1862
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22mformatYNABMonth[2m > [22mshould handle December correctly[32m 1[2mms[22m[39m
|
|
1863
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22mformatISODate[2m > [22mshould format date as YYYY-MM-DD[32m 14[2mms[22m[39m
|
|
1864
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22mgetCurrentMonth[2m > [22mshould return current month in YYYY-MM-01 format[32m 1[2mms[22m[39m
|
|
1865
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22mgetToday[2m > [22mshould return today in YYYY-MM-DD format[32m 1[2mms[22m[39m
|
|
1866
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22mgetHistoricalMonths[2m > [22mshould generate correct number of historical months[32m 2[2mms[22m[39m
|
|
1867
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22mgetHistoricalMonths[2m > [22mshould handle year boundary correctly[32m 1[2mms[22m[39m
|
|
1868
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22mgetHistoricalMonths[2m > [22mshould use current date when no base date provided[32m 1[2mms[22m[39m
|
|
1869
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22mgetHistoricalMonths[2m > [22mshould generate 6 months correctly (bug test case)[32m 2[2mms[22m[39m
|
|
1870
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22msubtractMonths[2m > [22mshould subtract months correctly[32m 1[2mms[22m[39m
|
|
1871
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22msubtractMonths[2m > [22mshould handle year boundary[32m 0[2mms[22m[39m
|
|
1872
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22misValidISODate[2m > [22mshould validate correct ISO dates[32m 3[2mms[22m[39m
|
|
1873
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22misValidISODate[2m > [22mshould reject invalid formats[32m 0[2mms[22m[39m
|
|
1874
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22misValidISODate[2m > [22mshould reject invalid dates with correct format[32m 1[2mms[22m[39m
|
|
1875
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22misValidYNABMonth[2m > [22mshould validate correct YNAB month format[32m 0[2mms[22m[39m
|
|
1876
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22misValidYNABMonth[2m > [22mshould reject invalid formats[32m 0[2mms[22m[39m
|
|
1877
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22misValidYNABMonth[2m > [22mshould reject invalid months with correct format[32m 0[2mms[22m[39m
|
|
1878
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22myearMonthToYNABMonth[2m > [22mshould convert YYYY-MM to YYYY-MM-01[32m 0[2mms[22m[39m
|
|
1879
|
-
[32m✓[39m [30m[42m unit [49m[39m src/utils/__tests__/dateUtils.test.ts[2m > [22mdateUtils[2m > [22myearMonthToYNABMonth[2m > [22mshould throw error for invalid format[32m 1[2mms[22m[39m
|
|
1880
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1881
|
-
[22m[39mRate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
|
|
1882
|
-
|
|
1883
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1884
|
-
[22m[39mRecorded request for token_5f854540: 1/200 requests
|
|
1885
|
-
|
|
1886
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1887
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1888
|
-
[INFO] ynab:clear_cache | SUCCESS | 0ms | rate_limit_remaining:199
|
|
1889
|
-
|
|
1890
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1891
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
1892
|
-
|
|
1893
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1894
|
-
[22m[39mRecorded request for token_5f854540: 2/200 requests
|
|
1895
|
-
|
|
1896
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1897
|
-
[22m[39mRate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
|
|
1898
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:198
|
|
1899
|
-
|
|
1900
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1901
|
-
[22m[39mRate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
|
|
1902
|
-
|
|
1903
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1904
|
-
[22m[39mRecorded request for token_5f854540: 3/200 requests
|
|
1905
|
-
|
|
1906
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1907
|
-
[22m[39mRate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
|
|
1908
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:197
|
|
1909
|
-
|
|
1910
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1911
|
-
[22m[39mRate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
|
|
1912
|
-
|
|
1913
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1914
|
-
[22m[39mRecorded request for token_5f854540: 4/200 requests
|
|
1915
|
-
|
|
1916
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1917
|
-
[22m[39mRate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
|
|
1918
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:196
|
|
1919
|
-
|
|
1920
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1921
|
-
[22m[39mRate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
|
|
1922
|
-
|
|
1923
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1924
|
-
[22m[39mRecorded request for token_5f854540: 5/200 requests
|
|
1925
|
-
|
|
1926
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1927
|
-
[22m[39mRate limit check for token_5f854540: 5/200 requests, remaining: 195, limited: false
|
|
1928
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:195
|
|
1929
|
-
|
|
1930
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1931
|
-
[22m[39mRate limit check for token_5f854540: 5/200 requests, remaining: 195, limited: false
|
|
1932
|
-
|
|
1933
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1934
|
-
[22m[39mRecorded request for token_5f854540: 6/200 requests
|
|
1935
|
-
|
|
1936
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1937
|
-
[22m[39mRate limit check for token_5f854540: 6/200 requests, remaining: 194, limited: false
|
|
1938
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:194
|
|
1939
|
-
|
|
1940
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1941
|
-
[22m[39mRate limit check for token_5f854540: 6/200 requests, remaining: 194, limited: false
|
|
1942
|
-
|
|
1943
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1944
|
-
[22m[39mRecorded request for token_5f854540: 7/200 requests
|
|
1945
|
-
|
|
1946
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1947
|
-
[22m[39mRate limit check for token_5f854540: 7/200 requests, remaining: 193, limited: false
|
|
1948
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:193
|
|
1949
|
-
|
|
1950
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1951
|
-
[22m[39mRate limit check for token_5f854540: 7/200 requests, remaining: 193, limited: false
|
|
1952
|
-
|
|
1953
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1954
|
-
[22m[39mRecorded request for token_5f854540: 8/200 requests
|
|
1955
|
-
|
|
1956
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1957
|
-
[22m[39mRate limit check for token_5f854540: 8/200 requests, remaining: 192, limited: false
|
|
1958
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:192
|
|
1959
|
-
|
|
1960
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1961
|
-
[22m[39mRate limit check for token_5f854540: 8/200 requests, remaining: 192, limited: false
|
|
1962
|
-
|
|
1963
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1964
|
-
[22m[39mRecorded request for token_5f854540: 9/200 requests
|
|
1965
|
-
|
|
1966
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1967
|
-
[22m[39mRate limit check for token_5f854540: 9/200 requests, remaining: 191, limited: false
|
|
1968
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:191
|
|
1969
|
-
|
|
1970
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1971
|
-
[22m[39mRate limit check for token_5f854540: 9/200 requests, remaining: 191, limited: false
|
|
1972
|
-
|
|
1973
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1974
|
-
[22m[39mRecorded request for token_5f854540: 10/200 requests
|
|
1975
|
-
|
|
1976
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1977
|
-
[22m[39mRate limit check for token_5f854540: 10/200 requests, remaining: 190, limited: false
|
|
1978
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:190
|
|
1979
|
-
|
|
1980
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1981
|
-
[22m[39mRate limit check for token_5f854540: 10/200 requests, remaining: 190, limited: false
|
|
1982
|
-
|
|
1983
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1984
|
-
[22m[39mRecorded request for token_5f854540: 11/200 requests
|
|
1985
|
-
|
|
1986
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1987
|
-
[22m[39mRate limit check for token_5f854540: 11/200 requests, remaining: 189, limited: false
|
|
1988
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:189
|
|
1989
|
-
|
|
1990
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1991
|
-
[22m[39mRate limit check for token_5f854540: 11/200 requests, remaining: 189, limited: false
|
|
1992
|
-
|
|
1993
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1994
|
-
[22m[39mRecorded request for token_5f854540: 12/200 requests
|
|
1995
|
-
|
|
1996
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
1997
|
-
[22m[39mRate limit check for token_5f854540: 12/200 requests, remaining: 188, limited: false
|
|
1998
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:188
|
|
1999
|
-
|
|
2000
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2001
|
-
[22m[39mRate limit check for token_5f854540: 12/200 requests, remaining: 188, limited: false
|
|
2002
|
-
|
|
2003
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2004
|
-
[22m[39mRecorded request for token_5f854540: 13/200 requests
|
|
2005
|
-
|
|
2006
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2007
|
-
[22m[39mRate limit check for token_5f854540: 13/200 requests, remaining: 187, limited: false
|
|
2008
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:187
|
|
2009
|
-
|
|
2010
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2011
|
-
[22m[39mRate limit check for token_5f854540: 13/200 requests, remaining: 187, limited: false
|
|
2012
|
-
|
|
2013
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2014
|
-
[22m[39mRecorded request for token_5f854540: 14/200 requests
|
|
2015
|
-
|
|
2016
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2017
|
-
[22m[39mRate limit check for token_5f854540: 14/200 requests, remaining: 186, limited: false
|
|
2018
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:186
|
|
2019
|
-
|
|
2020
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2021
|
-
[22m[39mRate limit check for token_5f854540: 14/200 requests, remaining: 186, limited: false
|
|
2022
|
-
|
|
2023
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2024
|
-
[22m[39mRecorded request for token_5f854540: 15/200 requests
|
|
2025
|
-
|
|
2026
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2027
|
-
[22m[39mRate limit check for token_5f854540: 15/200 requests, remaining: 185, limited: false
|
|
2028
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:185
|
|
2029
|
-
|
|
2030
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2031
|
-
[22m[39mRate limit check for token_5f854540: 15/200 requests, remaining: 185, limited: false
|
|
2032
|
-
|
|
2033
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2034
|
-
[22m[39mRecorded request for token_5f854540: 16/200 requests
|
|
2035
|
-
|
|
2036
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2037
|
-
[22m[39mRate limit check for token_5f854540: 16/200 requests, remaining: 184, limited: false
|
|
2038
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:184
|
|
2039
|
-
|
|
2040
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2041
|
-
[22m[39mRate limit check for token_5f854540: 16/200 requests, remaining: 184, limited: false
|
|
2042
|
-
|
|
2043
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2044
|
-
[22m[39mRecorded request for token_5f854540: 17/200 requests
|
|
2045
|
-
|
|
2046
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2047
|
-
[22m[39mRate limit check for token_5f854540: 17/200 requests, remaining: 183, limited: false
|
|
2048
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:183
|
|
2049
|
-
|
|
2050
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2051
|
-
[22m[39mRate limit check for token_5f854540: 17/200 requests, remaining: 183, limited: false
|
|
2052
|
-
|
|
2053
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2054
|
-
[22m[39mRecorded request for token_5f854540: 18/200 requests
|
|
2055
|
-
|
|
2056
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2057
|
-
[22m[39mRate limit check for token_5f854540: 18/200 requests, remaining: 182, limited: false
|
|
2058
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:182
|
|
2059
|
-
|
|
2060
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2061
|
-
[22m[39mRate limit check for token_5f854540: 18/200 requests, remaining: 182, limited: false
|
|
2062
|
-
|
|
2063
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2064
|
-
[22m[39mRecorded request for token_5f854540: 19/200 requests
|
|
2065
|
-
|
|
2066
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2067
|
-
[22m[39mRate limit check for token_5f854540: 19/200 requests, remaining: 181, limited: false
|
|
2068
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:181
|
|
2069
|
-
|
|
2070
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2071
|
-
[22m[39mRate limit check for token_5f854540: 19/200 requests, remaining: 181, limited: false
|
|
2072
|
-
|
|
2073
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2074
|
-
[22m[39mRecorded request for token_5f854540: 20/200 requests
|
|
2075
|
-
|
|
2076
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2077
|
-
[22m[39mRate limit check for token_5f854540: 20/200 requests, remaining: 180, limited: false
|
|
2078
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:180
|
|
2079
|
-
|
|
2080
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2081
|
-
[22m[39mRate limit check for token_5f854540: 20/200 requests, remaining: 180, limited: false
|
|
2082
|
-
|
|
2083
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2084
|
-
[22m[39mRecorded request for token_5f854540: 21/200 requests
|
|
2085
|
-
|
|
2086
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2087
|
-
[22m[39mRate limit check for token_5f854540: 21/200 requests, remaining: 179, limited: false
|
|
2088
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:179
|
|
2089
|
-
|
|
2090
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2091
|
-
[22m[39mRate limit check for token_5f854540: 21/200 requests, remaining: 179, limited: false
|
|
2092
|
-
|
|
2093
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2094
|
-
[22m[39mRecorded request for token_5f854540: 22/200 requests
|
|
2095
|
-
|
|
2096
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2097
|
-
[22m[39mRate limit check for token_5f854540: 22/200 requests, remaining: 178, limited: false
|
|
2098
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:178
|
|
2099
|
-
|
|
2100
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2101
|
-
[22m[39mRate limit check for token_5f854540: 22/200 requests, remaining: 178, limited: false
|
|
2102
|
-
|
|
2103
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2104
|
-
[22m[39mRecorded request for token_5f854540: 23/200 requests
|
|
2105
|
-
|
|
2106
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2107
|
-
[22m[39mRate limit check for token_5f854540: 23/200 requests, remaining: 177, limited: false
|
|
2108
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:177
|
|
2109
|
-
|
|
2110
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2111
|
-
[22m[39mRate limit check for token_5f854540: 23/200 requests, remaining: 177, limited: false
|
|
2112
|
-
|
|
2113
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2114
|
-
[22m[39mRecorded request for token_5f854540: 24/200 requests
|
|
2115
|
-
|
|
2116
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2117
|
-
[22m[39mRate limit check for token_5f854540: 24/200 requests, remaining: 176, limited: false
|
|
2118
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:176
|
|
2119
|
-
|
|
2120
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2121
|
-
[22m[39mRate limit check for token_5f854540: 24/200 requests, remaining: 176, limited: false
|
|
2122
|
-
|
|
2123
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2124
|
-
[22m[39mRecorded request for token_5f854540: 25/200 requests
|
|
2125
|
-
|
|
2126
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2127
|
-
[22m[39mRate limit check for token_5f854540: 25/200 requests, remaining: 175, limited: false
|
|
2128
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:175
|
|
2129
|
-
|
|
2130
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2131
|
-
[22m[39mRate limit check for token_5f854540: 25/200 requests, remaining: 175, limited: false
|
|
2132
|
-
|
|
2133
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2134
|
-
[22m[39mRecorded request for token_5f854540: 26/200 requests
|
|
2135
|
-
|
|
2136
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2137
|
-
[22m[39mRate limit check for token_5f854540: 26/200 requests, remaining: 174, limited: false
|
|
2138
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:174
|
|
2139
|
-
|
|
2140
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2141
|
-
[22m[39mRate limit check for token_5f854540: 26/200 requests, remaining: 174, limited: false
|
|
2142
|
-
|
|
2143
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2144
|
-
[22m[39mRecorded request for token_5f854540: 27/200 requests
|
|
2145
|
-
|
|
2146
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2147
|
-
[22m[39mRate limit check for token_5f854540: 27/200 requests, remaining: 173, limited: false
|
|
2148
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:173
|
|
2149
|
-
|
|
2150
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2151
|
-
[22m[39mRate limit check for token_5f854540: 27/200 requests, remaining: 173, limited: false
|
|
2152
|
-
|
|
2153
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2154
|
-
[22m[39mRecorded request for token_5f854540: 28/200 requests
|
|
2155
|
-
|
|
2156
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2157
|
-
[22m[39mRate limit check for token_5f854540: 28/200 requests, remaining: 172, limited: false
|
|
2158
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:172
|
|
2159
|
-
|
|
2160
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2161
|
-
[22m[39mRate limit check for token_5f854540: 28/200 requests, remaining: 172, limited: false
|
|
2162
|
-
|
|
2163
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2164
|
-
[22m[39mRecorded request for token_5f854540: 29/200 requests
|
|
2165
|
-
|
|
2166
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2167
|
-
[22m[39mRate limit check for token_5f854540: 29/200 requests, remaining: 171, limited: false
|
|
2168
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:171
|
|
2169
|
-
|
|
2170
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2171
|
-
[22m[39mRate limit check for token_5f854540: 29/200 requests, remaining: 171, limited: false
|
|
2172
|
-
|
|
2173
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2174
|
-
[22m[39mRecorded request for token_5f854540: 30/200 requests
|
|
2175
|
-
|
|
2176
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2177
|
-
[22m[39mRate limit check for token_5f854540: 30/200 requests, remaining: 170, limited: false
|
|
2178
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:170
|
|
2179
|
-
|
|
2180
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2181
|
-
[22m[39mRate limit check for token_5f854540: 30/200 requests, remaining: 170, limited: false
|
|
2182
|
-
|
|
2183
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2184
|
-
[22m[39mRecorded request for token_5f854540: 31/200 requests
|
|
2185
|
-
|
|
2186
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2187
|
-
[22m[39mRate limit check for token_5f854540: 31/200 requests, remaining: 169, limited: false
|
|
2188
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:169
|
|
2189
|
-
|
|
2190
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2191
|
-
[22m[39mRate limit check for token_5f854540: 31/200 requests, remaining: 169, limited: false
|
|
2192
|
-
|
|
2193
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2194
|
-
[22m[39mRecorded request for token_5f854540: 32/200 requests
|
|
2195
|
-
|
|
2196
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2197
|
-
[22m[39mRate limit check for token_5f854540: 32/200 requests, remaining: 168, limited: false
|
|
2198
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:168
|
|
2199
|
-
|
|
2200
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2201
|
-
[22m[39mRate limit check for token_5f854540: 32/200 requests, remaining: 168, limited: false
|
|
2202
|
-
|
|
2203
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2204
|
-
[22m[39mRecorded request for token_5f854540: 33/200 requests
|
|
2205
|
-
|
|
2206
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2207
|
-
[22m[39mRate limit check for token_5f854540: 33/200 requests, remaining: 167, limited: false
|
|
2208
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:167
|
|
2209
|
-
|
|
2210
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2211
|
-
[22m[39mRate limit check for token_5f854540: 33/200 requests, remaining: 167, limited: false
|
|
2212
|
-
|
|
2213
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2214
|
-
[22m[39mRecorded request for token_5f854540: 34/200 requests
|
|
2215
|
-
|
|
2216
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2217
|
-
[22m[39mRate limit check for token_5f854540: 34/200 requests, remaining: 166, limited: false
|
|
2218
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:166
|
|
2219
|
-
|
|
2220
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2221
|
-
[22m[39mRate limit check for token_5f854540: 34/200 requests, remaining: 166, limited: false
|
|
2222
|
-
|
|
2223
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2224
|
-
[22m[39mRecorded request for token_5f854540: 35/200 requests
|
|
2225
|
-
|
|
2226
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2227
|
-
[22m[39mRate limit check for token_5f854540: 35/200 requests, remaining: 165, limited: false
|
|
2228
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:165
|
|
2229
|
-
|
|
2230
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2231
|
-
[22m[39mRate limit check for token_5f854540: 35/200 requests, remaining: 165, limited: false
|
|
2232
|
-
|
|
2233
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2234
|
-
[22m[39mRecorded request for token_5f854540: 36/200 requests
|
|
2235
|
-
|
|
2236
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2237
|
-
[22m[39mRate limit check for token_5f854540: 36/200 requests, remaining: 164, limited: false
|
|
2238
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:164
|
|
2239
|
-
|
|
2240
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2241
|
-
[22m[39mRate limit check for token_5f854540: 36/200 requests, remaining: 164, limited: false
|
|
2242
|
-
|
|
2243
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2244
|
-
[22m[39mRecorded request for token_5f854540: 37/200 requests
|
|
2245
|
-
|
|
2246
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2247
|
-
[22m[39mRate limit check for token_5f854540: 37/200 requests, remaining: 163, limited: false
|
|
2248
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:163
|
|
2249
|
-
|
|
2250
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2251
|
-
[22m[39mRate limit check for token_5f854540: 37/200 requests, remaining: 163, limited: false
|
|
2252
|
-
|
|
2253
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2254
|
-
[22m[39mRecorded request for token_5f854540: 38/200 requests
|
|
2255
|
-
|
|
2256
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2257
|
-
[22m[39mRate limit check for token_5f854540: 38/200 requests, remaining: 162, limited: false
|
|
2258
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:162
|
|
2259
|
-
|
|
2260
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2261
|
-
[22m[39mRate limit check for token_5f854540: 38/200 requests, remaining: 162, limited: false
|
|
2262
|
-
|
|
2263
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2264
|
-
[22m[39mRecorded request for token_5f854540: 39/200 requests
|
|
2265
|
-
|
|
2266
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2267
|
-
[22m[39mRate limit check for token_5f854540: 39/200 requests, remaining: 161, limited: false
|
|
2268
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:161
|
|
2269
|
-
|
|
2270
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2271
|
-
[22m[39mRate limit check for token_5f854540: 39/200 requests, remaining: 161, limited: false
|
|
2272
|
-
|
|
2273
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2274
|
-
[22m[39mRecorded request for token_5f854540: 40/200 requests
|
|
2275
|
-
|
|
2276
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2277
|
-
[22m[39mRate limit check for token_5f854540: 40/200 requests, remaining: 160, limited: false
|
|
2278
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:160
|
|
2279
|
-
|
|
2280
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2281
|
-
[22m[39mRate limit check for token_5f854540: 40/200 requests, remaining: 160, limited: false
|
|
2282
|
-
|
|
2283
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2284
|
-
[22m[39mRecorded request for token_5f854540: 41/200 requests
|
|
2285
|
-
|
|
2286
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2287
|
-
[22m[39mRate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2288
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:159
|
|
2289
|
-
|
|
2290
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2291
|
-
[22m[39mRate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2292
|
-
|
|
2293
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2294
|
-
[22m[39mRecorded request for token_5f854540: 42/200 requests
|
|
2295
|
-
|
|
2296
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2297
|
-
[22m[39mRate limit check for token_5f854540: 42/200 requests, remaining: 158, limited: false
|
|
2298
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:158
|
|
2299
|
-
|
|
2300
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2301
|
-
[22m[39mRate limit check for token_5f854540: 42/200 requests, remaining: 158, limited: false
|
|
2302
|
-
|
|
2303
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2304
|
-
[22m[39mRecorded request for token_5f854540: 43/200 requests
|
|
2305
|
-
|
|
2306
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2307
|
-
[22m[39mRate limit check for token_5f854540: 43/200 requests, remaining: 157, limited: false
|
|
2308
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:157
|
|
2309
|
-
|
|
2310
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2311
|
-
[22m[39mRate limit check for token_5f854540: 43/200 requests, remaining: 157, limited: false
|
|
2312
|
-
|
|
2313
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2314
|
-
[22m[39mRecorded request for token_5f854540: 44/200 requests
|
|
2315
|
-
|
|
2316
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2317
|
-
[22m[39mRate limit check for token_5f854540: 44/200 requests, remaining: 156, limited: false
|
|
2318
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:156
|
|
2319
|
-
|
|
2320
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2321
|
-
[22m[39mRate limit check for token_5f854540: 44/200 requests, remaining: 156, limited: false
|
|
2322
|
-
|
|
2323
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2324
|
-
[22m[39mRecorded request for token_5f854540: 45/200 requests
|
|
2325
|
-
|
|
2326
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2327
|
-
[22m[39mRate limit check for token_5f854540: 45/200 requests, remaining: 155, limited: false
|
|
2328
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:155
|
|
2329
|
-
|
|
2330
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2331
|
-
[22m[39mRate limit check for token_5f854540: 45/200 requests, remaining: 155, limited: false
|
|
2332
|
-
|
|
2333
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2334
|
-
[22m[39mRecorded request for token_5f854540: 46/200 requests
|
|
2335
|
-
|
|
2336
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2337
|
-
[22m[39mRate limit check for token_5f854540: 46/200 requests, remaining: 154, limited: false
|
|
2338
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:154
|
|
2339
|
-
|
|
2340
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2341
|
-
[22m[39mRate limit check for token_5f854540: 46/200 requests, remaining: 154, limited: false
|
|
2342
|
-
|
|
2343
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2344
|
-
[22m[39mRecorded request for token_5f854540: 47/200 requests
|
|
2345
|
-
|
|
2346
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2347
|
-
[22m[39mRate limit check for token_5f854540: 47/200 requests, remaining: 153, limited: false
|
|
2348
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:153
|
|
2349
|
-
|
|
2350
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2351
|
-
[22m[39mRate limit check for token_5f854540: 47/200 requests, remaining: 153, limited: false
|
|
2352
|
-
|
|
2353
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2354
|
-
[22m[39mRecorded request for token_5f854540: 48/200 requests
|
|
2355
|
-
|
|
2356
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2357
|
-
[22m[39mRate limit check for token_5f854540: 48/200 requests, remaining: 152, limited: false
|
|
2358
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:152
|
|
2359
|
-
|
|
2360
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2361
|
-
[22m[39mRate limit check for token_5f854540: 48/200 requests, remaining: 152, limited: false
|
|
2362
|
-
|
|
2363
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2364
|
-
[22m[39mRecorded request for token_5f854540: 49/200 requests
|
|
2365
|
-
|
|
2366
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2367
|
-
[22m[39mRate limit check for token_5f854540: 49/200 requests, remaining: 151, limited: false
|
|
2368
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:151
|
|
2369
|
-
|
|
2370
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2371
|
-
[22m[39mRate limit check for token_5f854540: 49/200 requests, remaining: 151, limited: false
|
|
2372
|
-
|
|
2373
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2374
|
-
[22m[39mRecorded request for token_5f854540: 50/200 requests
|
|
2375
|
-
|
|
2376
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2377
|
-
[22m[39mRate limit check for token_5f854540: 50/200 requests, remaining: 150, limited: false
|
|
2378
|
-
[INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:150
|
|
2379
|
-
|
|
2380
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2381
|
-
[22m[39mRate limit check for token_5f854540: 50/200 requests, remaining: 150, limited: false
|
|
2382
|
-
|
|
2383
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2384
|
-
[22m[39mRecorded request for token_5f854540: 51/200 requests
|
|
2385
|
-
|
|
2386
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould handle rapid sequential requests
|
|
2387
|
-
[22m[39mRate limit check for token_5f854540: 51/200 requests, remaining: 149, limited: false
|
|
2388
|
-
[INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:149
|
|
2389
|
-
|
|
2390
|
-
[32m✓[39m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mYNAB MCP Server - Performance Tests[2m > [22mStress Testing[2m > [22mshould handle rapid sequential requests[32m 201[2mms[22m[39m
|
|
2391
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould maintain performance under mixed workload
|
|
2392
|
-
[22m[39mRate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
|
|
2393
|
-
|
|
2394
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould maintain performance under mixed workload
|
|
2395
|
-
[22m[39mRecorded request for token_5f854540: 1/200 requests
|
|
2396
|
-
|
|
2397
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould maintain performance under mixed workload
|
|
2398
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2399
|
-
[INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
|
|
2400
|
-
|
|
2401
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould maintain performance under mixed workload
|
|
2402
|
-
[22m[39mRate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2403
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2404
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2405
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2406
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2407
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2408
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2409
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2410
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2411
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2412
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2413
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2414
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2415
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2416
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2417
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2418
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2419
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2420
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2421
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2422
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2423
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2424
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2425
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2426
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2427
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2428
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2429
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2430
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2431
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2432
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2433
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2434
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2435
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2436
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2437
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2438
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2439
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2440
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2441
|
-
Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
|
|
2442
|
-
Recorded request for token_5f854540: 2/200 requests
|
|
2443
|
-
Recorded request for token_5f854540: 3/200 requests
|
|
2444
|
-
Recorded request for token_5f854540: 4/200 requests
|
|
2445
|
-
Recorded request for token_5f854540: 5/200 requests
|
|
2446
|
-
Recorded request for token_5f854540: 6/200 requests
|
|
2447
|
-
Recorded request for token_5f854540: 7/200 requests
|
|
2448
|
-
Recorded request for token_5f854540: 8/200 requests
|
|
2449
|
-
Recorded request for token_5f854540: 9/200 requests
|
|
2450
|
-
Recorded request for token_5f854540: 10/200 requests
|
|
2451
|
-
Recorded request for token_5f854540: 11/200 requests
|
|
2452
|
-
Recorded request for token_5f854540: 12/200 requests
|
|
2453
|
-
Recorded request for token_5f854540: 13/200 requests
|
|
2454
|
-
Recorded request for token_5f854540: 14/200 requests
|
|
2455
|
-
Recorded request for token_5f854540: 15/200 requests
|
|
2456
|
-
Recorded request for token_5f854540: 16/200 requests
|
|
2457
|
-
Recorded request for token_5f854540: 17/200 requests
|
|
2458
|
-
Recorded request for token_5f854540: 18/200 requests
|
|
2459
|
-
Recorded request for token_5f854540: 19/200 requests
|
|
2460
|
-
Recorded request for token_5f854540: 20/200 requests
|
|
2461
|
-
Recorded request for token_5f854540: 21/200 requests
|
|
2462
|
-
Recorded request for token_5f854540: 22/200 requests
|
|
2463
|
-
Recorded request for token_5f854540: 23/200 requests
|
|
2464
|
-
Recorded request for token_5f854540: 24/200 requests
|
|
2465
|
-
Recorded request for token_5f854540: 25/200 requests
|
|
2466
|
-
Recorded request for token_5f854540: 26/200 requests
|
|
2467
|
-
Recorded request for token_5f854540: 27/200 requests
|
|
2468
|
-
Recorded request for token_5f854540: 28/200 requests
|
|
2469
|
-
Recorded request for token_5f854540: 29/200 requests
|
|
2470
|
-
Recorded request for token_5f854540: 30/200 requests
|
|
2471
|
-
Recorded request for token_5f854540: 31/200 requests
|
|
2472
|
-
Recorded request for token_5f854540: 32/200 requests
|
|
2473
|
-
Recorded request for token_5f854540: 33/200 requests
|
|
2474
|
-
Recorded request for token_5f854540: 34/200 requests
|
|
2475
|
-
Recorded request for token_5f854540: 35/200 requests
|
|
2476
|
-
Recorded request for token_5f854540: 36/200 requests
|
|
2477
|
-
Recorded request for token_5f854540: 37/200 requests
|
|
2478
|
-
Recorded request for token_5f854540: 38/200 requests
|
|
2479
|
-
Recorded request for token_5f854540: 39/200 requests
|
|
2480
|
-
Recorded request for token_5f854540: 40/200 requests
|
|
2481
|
-
Recorded request for token_5f854540: 41/200 requests
|
|
2482
|
-
|
|
2483
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould maintain performance under mixed workload
|
|
2484
|
-
[22m[39mRate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2485
|
-
[INFO] ynab:convert_amount | SUCCESS | 8ms | rate_limit_remaining:159
|
|
2486
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2487
|
-
[INFO] ynab:convert_amount | SUCCESS | 8ms | rate_limit_remaining:159
|
|
2488
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2489
|
-
[INFO] ynab:convert_amount | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2490
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2491
|
-
[INFO] ynab:convert_amount | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2492
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2493
|
-
[INFO] ynab:convert_amount | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2494
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2495
|
-
[INFO] ynab:convert_amount | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2496
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2497
|
-
[INFO] ynab:convert_amount | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2498
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2499
|
-
[INFO] ynab:convert_amount | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2500
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2501
|
-
[INFO] ynab:convert_amount | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2502
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2503
|
-
[INFO] ynab:convert_amount | SUCCESS | 6ms | rate_limit_remaining:159
|
|
2504
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2505
|
-
[INFO] ynab:convert_amount | SUCCESS | 6ms | rate_limit_remaining:159
|
|
2506
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2507
|
-
[INFO] ynab:convert_amount | SUCCESS | 6ms | rate_limit_remaining:159
|
|
2508
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2509
|
-
[INFO] ynab:convert_amount | SUCCESS | 6ms | rate_limit_remaining:159
|
|
2510
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2511
|
-
[INFO] ynab:convert_amount | SUCCESS | 6ms | rate_limit_remaining:159
|
|
2512
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2513
|
-
[INFO] ynab:convert_amount | SUCCESS | 5ms | rate_limit_remaining:159
|
|
2514
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2515
|
-
[INFO] ynab:convert_amount | SUCCESS | 5ms | rate_limit_remaining:159
|
|
2516
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2517
|
-
[INFO] ynab:convert_amount | SUCCESS | 5ms | rate_limit_remaining:159
|
|
2518
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2519
|
-
[INFO] ynab:convert_amount | SUCCESS | 5ms | rate_limit_remaining:159
|
|
2520
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2521
|
-
[INFO] ynab:convert_amount | SUCCESS | 5ms | rate_limit_remaining:159
|
|
2522
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2523
|
-
[INFO] ynab:convert_amount | SUCCESS | 4ms | rate_limit_remaining:159
|
|
2524
|
-
|
|
2525
|
-
[90mstderr[2m | src/__tests__/performance.test.ts[2m > [22m[2mYNAB MCP Server - Performance Tests[2m > [22m[2mStress Testing[2m > [22m[2mshould maintain performance under mixed workload
|
|
2526
|
-
[22m[39mRate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2527
|
-
[INFO] ynab:list_budgets | SUCCESS | 9ms | rate_limit_remaining:159
|
|
2528
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2529
|
-
[INFO] ynab:list_budgets | SUCCESS | 10ms | rate_limit_remaining:159
|
|
2530
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2531
|
-
[INFO] ynab:list_budgets | SUCCESS | 10ms | rate_limit_remaining:159
|
|
2532
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2533
|
-
[INFO] ynab:list_budgets | SUCCESS | 9ms | rate_limit_remaining:159
|
|
2534
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2535
|
-
[INFO] ynab:list_budgets | SUCCESS | 9ms | rate_limit_remaining:159
|
|
2536
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2537
|
-
[INFO] ynab:list_budgets | SUCCESS | 9ms | rate_limit_remaining:159
|
|
2538
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2539
|
-
[INFO] ynab:list_budgets | SUCCESS | 9ms | rate_limit_remaining:159
|
|
2540
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2541
|
-
[INFO] ynab:list_budgets | SUCCESS | 9ms | rate_limit_remaining:159
|
|
2542
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2543
|
-
[INFO] ynab:list_budgets | SUCCESS | 9ms | rate_limit_remaining:159
|
|
2544
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2545
|
-
[INFO] ynab:list_budgets | SUCCESS | 9ms | rate_limit_remaining:159
|
|
2546
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2547
|
-
[INFO] ynab:list_budgets | SUCCESS | 8ms | rate_limit_remaining:159
|
|
2548
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2549
|
-
[INFO] ynab:list_budgets | SUCCESS | 8ms | rate_limit_remaining:159
|
|
2550
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2551
|
-
[INFO] ynab:list_budgets | SUCCESS | 8ms | rate_limit_remaining:159
|
|
2552
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2553
|
-
[INFO] ynab:list_budgets | SUCCESS | 8ms | rate_limit_remaining:159
|
|
2554
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2555
|
-
[INFO] ynab:list_budgets | SUCCESS | 8ms | rate_limit_remaining:159
|
|
2556
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2557
|
-
[INFO] ynab:list_budgets | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2558
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2559
|
-
[INFO] ynab:list_budgets | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2560
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2561
|
-
[INFO] ynab:list_budgets | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2562
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2563
|
-
[INFO] ynab:list_budgets | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2564
|
-
Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
|
|
2565
|
-
[INFO] ynab:list_budgets | SUCCESS | 7ms | rate_limit_remaining:159
|
|
2566
|
-
|
|
2567
|
-
[32m✓[39m [30m[42m unit [49m[39m src/__tests__/performance.test.ts[2m > [22mYNAB MCP Server - Performance Tests[2m > [22mStress Testing[2m > [22mshould maintain performance under mixed workload[32m 171[2mms[22m[39m
|
|
2568
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/exportTransactions.test.ts[2m > [22mexportTransactions[2m > [22mExportTransactionsSchema[2m > [22mshould default minimal to true when not provided[32m 4[2mms[22m[39m
|
|
2569
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/exportTransactions.test.ts[2m > [22mexportTransactions[2m > [22mExportTransactionsSchema[2m > [22mshould preserve minimal: false when explicitly set[32m 1[2mms[22m[39m
|
|
2570
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/exportTransactions.test.ts[2m > [22mexportTransactions[2m > [22mExportTransactionsSchema[2m > [22mshould preserve minimal: true when explicitly set[32m 0[2mms[22m[39m
|
|
2571
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/exportTransactions.test.ts[2m > [22mexportTransactions[2m > [22mhandleExportTransactions[2m > [22mshould export minimal fields by default[32m 6[2mms[22m[39m
|
|
2572
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/exportTransactions.test.ts[2m > [22mexportTransactions[2m > [22mhandleExportTransactions[2m > [22mshould export all fields when minimal is false[32m 1[2mms[22m[39m
|
|
2573
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/exportTransactions.test.ts[2m > [22mexportTransactions[2m > [22mhandleExportTransactions[2m > [22mshould include "minimal" in filename by default[32m 1[2mms[22m[39m
|
|
2574
|
-
[32m✓[39m [30m[42m unit [49m[39m src/tools/__tests__/exportTransactions.test.ts[2m > [22mexportTransactions[2m > [22mhandleExportTransactions[2m > [22mshould not include "minimal" in filename when minimal is false[32m 1[2mms[22m[39m
|
|
2575
|
-
|
|
2576
|
-
[2m Test Files [22m [1m[32m59 passed[39m[22m[2m | [22m[33m1 skipped[39m[90m (60)[39m
|
|
2577
|
-
[2m Tests [22m [1m[32m1332 passed[39m[22m[2m | [22m[33m14 skipped[39m[90m (1346)[39m
|
|
2578
|
-
[2m Start at [22m 13:58:28
|
|
2579
|
-
[2m Duration [22m 9.86s[2m (transform 7.72s, setup 0ms, collect 39.14s, tests 6.64s, environment 30ms, prepare 16.86s)[22m
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
📊 Test results written to test-results/
|
|
2583
|
-
- summary.json (overview)
|
|
2584
|
-
- *-tests.json (1 project file(s))
|
|
2585
|
-
- passed-tests-summary.json
|
|
2586
|
-
- index.html (interactive report)
|
|
2587
|
-
|
|
2588
|
-
💡 test-results.json contains a pointer to the detailed results
|
|
2589
|
-
[1m[7m[35m HTML [39m[27m[22m [35mReport is generated[39m
|
|
2590
|
-
[2m You can run [22m[1mnpx vite preview --outDir test-results[22m[2m to see the test results.[22m
|