[PR #7620] [MERGED] increase test coverage for budget templates #56597

Closed
opened 2026-05-01 04:34:25 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/7620
Author: @matt-fidd
Created: 4/25/2026
Status: Merged
Merged: 4/25/2026
Merged by: @matt-fidd

Base: masterHead: template-tests


📝 Commits (2)

  • 6778b41 [AI] cover existing template engine logic with regression tests
  • 3e35f67 note

📊 Changes

4 files changed (+1482 additions, -114 deletions)

View changed files

📝 packages/loot-core/src/server/budget/category-template-context.test.ts (+603 -1)
packages/loot-core/src/server/budget/goal-template.test.ts (+373 -0)
📝 packages/loot-core/src/server/budget/schedule-template.test.ts (+500 -113)
upcoming-release-notes/7620.md (+6 -0)

📄 Description

Description

This PR is a precursor to https://github.com/actualbudget/actual/pull/7597 to prove that there are no regressions in core engine logic. Increasing tests is always a bonus! To be clear, the purpose of these tests is to catch any regressions, they're not necessarily tests for "correctness" at this point, but that are how the code works at the moment.

I used claude for quite a bit of the orchestration here, but the tests I suggested were driven by getting test coverage details from vitest and finding where we fall short. Coverage increase details below, although these are based on any new paths introduced in the other PR, so real gain here is likely to be slightly higher.

Stage Tests Stmts Branch Funcs Lines
Pre-additions 107 63.59% 57.77% 50.75% 65.03%
After this PR 148 86.34% 76.96% 82.57% 87.86%

Testing

Checklist

  • Release notes added (see link above)
  • No obvious regressions in affected areas
  • Self-review has been performed - I understand what each change in the code does and why it is needed

Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 34 13.88 MB → 13.88 MB (+67 B) +0.00%
loot-core 1 5.27 MB 0%
api 2 3.89 MB 0%
cli 1 7.91 MB 0%
crdt 1 41.83 kB 0%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
34 13.88 MB → 13.88 MB (+67 B) +0.00%
Changeset
File Δ Size
locale/en.json 📈 +132 B (+0.07%) 176.76 kB → 176.89 kB
locale/pt-BR.json 📉 -29 B (-0.01%) 193.27 kB → 193.24 kB
locale/ca.json 📉 -36 B (-0.02%) 191.49 kB → 191.46 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger

Asset File Size % Changed
static/js/en.js 176.76 kB → 176.89 kB (+132 B) +0.07%

Smaller

Asset File Size % Changed
static/js/ca.js 191.49 kB → 191.46 kB (-36 B) -0.02%
static/js/pt-BR.js 193.27 kB → 193.24 kB (-29 B) -0.01%

Unchanged

Asset File Size % Changed
static/js/index.js 1.87 MB 0%
static/js/BackgroundImage.js 121.09 kB 0%
static/js/FormulaEditor.js 962.55 kB 0%
static/js/PayeeRuleCountLabel.js 52.52 kB 0%
static/js/ReportRouter.js 1.22 MB 0%
static/js/ScheduleEditForm.js 145.68 kB 0%
static/js/TransactionEdit.js 186.56 kB 0%
static/js/TransactionList.js 85.81 kB 0%
static/js/Value.js 4.94 MB 0%
static/js/chart-theme.js 796.5 kB 0%
static/js/client.js 451.37 kB 0%
static/js/da.js 104.22 kB 0%
static/js/de.js 173.88 kB 0%
static/js/en-GB.js 8.2 kB 0%
static/js/es.js 181.86 kB 0%
static/js/extends.js 518.66 kB 0%
static/js/fr.js 182.5 kB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 13.46 kB 0%
static/js/it.js 168.33 kB 0%
static/js/narrow.js 364.31 kB 0%
static/js/nb-NO.js 151.39 kB 0%
static/js/nl.js 108.46 kB 0%
static/js/pl.js 88.14 kB 0%
static/js/resize-observer.js 18.06 kB 0%
static/js/th.js 178.63 kB 0%
static/js/theme.js 31.67 kB 0%
static/js/uk.js 212.03 kB 0%
static/js/useFormatList.js 8.63 kB 0%
static/js/wide.js 453 B 0%
static/js/workbox-window.prod.es5.js 7.33 kB 0%
static/js/zh-Hans.js 119.73 kB 0%

loot-core

Total

Files count Total bundle size % Changed
1 5.27 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
kcab.worker.JKo6NKKa.js 5.27 MB 0%

api

Total

Files count Total bundle size % Changed
2 3.89 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
index.js 3.89 MB 0%
models.js 0 B 0%

cli

Total

Files count Total bundle size % Changed
1 7.91 MB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
cli.js 7.91 MB 0%

crdt

Total

Files count Total bundle size % Changed
1 41.83 kB 0%
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
index.js 41.83 kB 0%

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/actualbudget/actual/pull/7620 **Author:** [@matt-fidd](https://github.com/matt-fidd) **Created:** 4/25/2026 **Status:** ✅ Merged **Merged:** 4/25/2026 **Merged by:** [@matt-fidd](https://github.com/matt-fidd) **Base:** `master` ← **Head:** `template-tests` --- ### 📝 Commits (2) - [`6778b41`](https://github.com/actualbudget/actual/commit/6778b412b64c34f3f50e02d0e47b6c9fa0f4c69a) [AI] cover existing template engine logic with regression tests - [`3e35f67`](https://github.com/actualbudget/actual/commit/3e35f6758d27415e7b6ffa9aac69b48b9f491d32) note ### 📊 Changes **4 files changed** (+1482 additions, -114 deletions) <details> <summary>View changed files</summary> 📝 `packages/loot-core/src/server/budget/category-template-context.test.ts` (+603 -1) ➕ `packages/loot-core/src/server/budget/goal-template.test.ts` (+373 -0) 📝 `packages/loot-core/src/server/budget/schedule-template.test.ts` (+500 -113) ➕ `upcoming-release-notes/7620.md` (+6 -0) </details> ### 📄 Description <!-- Thank you for submitting a pull request! Make sure to follow the instructions to write release notes for your PR — it should only take a minute or two: https://github.com/actualbudget/docs#writing-good-release-notes. Try running yarn generate:release-notes *before* pushing your PR for an interactive experience. --> ## Description <!-- What does this PR do? Why is it needed? Please give context on the "why?": why do we need this change? What problem is it solving for you?--> This PR is a precursor to https://github.com/actualbudget/actual/pull/7597 to prove that there are no regressions in core engine logic. Increasing tests is always a bonus! To be clear, the purpose of these tests is to catch any regressions, they're not necessarily tests for "correctness" at this point, but that are how the code works at the moment. I used claude for quite a bit of the orchestration here, but the tests I suggested were driven by getting test coverage details from vitest and finding where we fall short. Coverage increase details below, although these are based on any new paths introduced in the other PR, so real gain here is likely to be slightly higher. | Stage | Tests | Stmts | Branch | Funcs | Lines | |---|---|---|---|---|---| | Pre-additions | 107 | 63.59% | 57.77% | 50.75% | 65.03% | | After this PR | 148 | 86.34% | 76.96% | 82.57% | 87.86% | <!-- | After PR `a3bfa442d` | 161 | 91.63% | 81.81% | 90.15% | 93.00% | --> ## Related issue(s) <!-- e.g. Fixes #123, Relates to #456 --> ## Testing <!-- What did you test? How can we reproduce the issue you are fixing or how can we test the feature you built? --> ## Checklist - [x] Release notes added (see link above) - [x] No obvious regressions in affected areas - [x] Self-review has been performed - I understand what each change in the code does and why it is needed <!--- actual-bot-sections ---> <!--- bundlestats-action-comment key:combined start ---> ### Bundle Stats Bundle | Files count | Total bundle size | % Changed ------ | ----------- | ----------------- | --------- desktop-client | 34 | 13.88 MB → 13.88 MB (+67 B) | +0.00% loot-core | 1 | 5.27 MB | 0% api | 2 | 3.89 MB | 0% cli | 1 | 7.91 MB | 0% crdt | 1 | 41.83 kB | 0% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 34 | 13.88 MB → 13.88 MB (+67 B) | +0.00% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `locale/en.json` | 📈 +132 B (+0.07%) | 176.76 kB → 176.89 kB `locale/pt-BR.json` | 📉 -29 B (-0.01%) | 193.27 kB → 193.24 kB `locale/ca.json` | 📉 -36 B (-0.02%) | 191.49 kB → 191.46 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** Asset | File Size | % Changed ----- | --------- | --------- static/js/en.js | 176.76 kB → 176.89 kB (+132 B) | +0.07% **Smaller** Asset | File Size | % Changed ----- | --------- | --------- static/js/ca.js | 191.49 kB → 191.46 kB (-36 B) | -0.02% static/js/pt-BR.js | 193.27 kB → 193.24 kB (-29 B) | -0.01% **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- static/js/index.js | 1.87 MB | 0% static/js/BackgroundImage.js | 121.09 kB | 0% static/js/FormulaEditor.js | 962.55 kB | 0% static/js/PayeeRuleCountLabel.js | 52.52 kB | 0% static/js/ReportRouter.js | 1.22 MB | 0% static/js/ScheduleEditForm.js | 145.68 kB | 0% static/js/TransactionEdit.js | 186.56 kB | 0% static/js/TransactionList.js | 85.81 kB | 0% static/js/Value.js | 4.94 MB | 0% static/js/chart-theme.js | 796.5 kB | 0% static/js/client.js | 451.37 kB | 0% static/js/da.js | 104.22 kB | 0% static/js/de.js | 173.88 kB | 0% static/js/en-GB.js | 8.2 kB | 0% static/js/es.js | 181.86 kB | 0% static/js/extends.js | 518.66 kB | 0% static/js/fr.js | 182.5 kB | 0% static/js/indexeddb-main-thread-worker-e59fee74.js | 13.46 kB | 0% static/js/it.js | 168.33 kB | 0% static/js/narrow.js | 364.31 kB | 0% static/js/nb-NO.js | 151.39 kB | 0% static/js/nl.js | 108.46 kB | 0% static/js/pl.js | 88.14 kB | 0% static/js/resize-observer.js | 18.06 kB | 0% static/js/th.js | 178.63 kB | 0% static/js/theme.js | 31.67 kB | 0% static/js/uk.js | 212.03 kB | 0% static/js/useFormatList.js | 8.63 kB | 0% static/js/wide.js | 453 B | 0% static/js/workbox-window.prod.es5.js | 7.33 kB | 0% static/js/zh-Hans.js | 119.73 kB | 0% </div> </details> --- #### loot-core **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 5.27 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.JKo6NKKa.js | 5.27 MB | 0% </div> </details> --- #### api **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 2 | 3.89 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- index.js | 3.89 MB | 0% models.js | 0 B | 0% </div> </details> --- #### cli **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 7.91 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- cli.js | 7.91 MB | 0% </div> </details> --- #### crdt **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 41.83 kB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- index.js | 41.83 kB | 0% </div> </details> </details> <!--- bundlestats-action-comment key:combined end ---> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-05-01 04:34:25 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#56597