- Added comprehensive test suite for account creation, validation, and grid views - Documented Datomic entity reference handling patterns in test comments - Created 5 test improvement todo documents addressing common test anti-patterns - Todo items cover: removing debug statements, fixing test nesting, strengthening assertions, extracting helpers, and removing doc-only tests
4.6 KiB
status, priority, issue_id, tags
| status | priority | issue_id | tags | |||
|---|---|---|---|---|---|---|
| pending | p2 | 004 |
|
Problem Statement
Test helper functions need to be extracted to eliminate 50% code duplication
The test file has significant code duplication with 9 instances of identical with-redefs [auto-ap.solr/impl ...] blocks repeated throughout. This violates DRY principles and increases maintenance burden.
Impact: Repetitive code is harder to maintain, increases file size, makes test modifications more error-prone, and violates fundamental coding best practices.
Findings
-
Location: Lines 20, 47, 65, 77, 92, 106, 122, 133, 146 (9 instances)
-
Duplication pattern:
(with-redefs [auto-ap.solr/impl (auto-ap.solr/->InMemSolrClient (atom {}))] ... -
Example of duplicated code (appears 9 times):
(with-redefs [auto-ap.solr/impl (auto-ap.solr/->InMemSolrClient (atom {}))] (let [admin-identity (admin-token) result (sut/account-save {:form-params {:account/numeric-code 12345 ... :account/name "New Cash Account" :account/type :account-type/asset :account/location "B"} :request-method :post :identity admin-identity}) db (dc/db conn)] ... )) -
Additional duplication: Account creation pattern repeated in 7 tests (lines 49, 67, 81, 94-96, 106, 122, 133, 146)
-
Evidence: Pattern-recognition-specialist identified this as 50% code duplication
Proposed Solutions
Option 1: Extract Solr mock helper (RECOMMENDED FIRST)
Pros:
- Reduces LOC by ~18 lines (2 lines per test × 9 tests)
- Simple implementation
- No changes to test logic
- Consistent mocking across all tests
Cons:
- None
Effort: Small
Risk: None
;; Helper function to add to test namespace
(defn with-solr-mock [f]
(with-redefs [auto-ap.solr/impl (auto-ap.solr/->InMemSolrClient (atom {}))]
(f)))
;; Usage in tests:
(with-solr-mock
(let [...])
)
Option 2: Extract account creation helper
Pros:
- Reduces LOC by ~20 lines
- Makes test data creation consistent
Cons:
- Requires changing test signatures
Effort: Medium
Risk: Medium
;; Helper function
(defn create-account [{:keys [numeric-code name location type]}
& {:keys [account-type account-location]
:or {account-type :account-type/asset
account-location "A"}}]
(sut/account-save {:form-params {:account/numeric-code numeric-code
:account/name name
:account/type account-type
:account/location account-location}
:request-method :post
:identity (admin-token)}))
;; Usage:
(create-account {:numeric-code 12345 :name "New Account" :location "B"})
Option 3: Extract full account save helper with all common params
Pros:
- Most concise approach
Cons:
- Less flexible for test variations
- Requires changing many test signatures
Effort: Medium
Risk: Medium
Option 4: Leave as-is
Pros:
- No changes needed
Cons:
- Maintains duplication
- Violates DRY principle
- Future changes require 9 updates
Effort: None
Risk: None
Recommended Action
Extract Solr mock helper function to eliminate duplication.
This is the lowest-risk, highest-impact first step. Once implemented, proceed to extract account creation helper if time permits.
Technical Details
Affected Component: Test utilities and helpers
Affected Files:
test/clj/auto_ap/ssr/admin/accounts_test.clj(lines 10-8)
Helper Function Location: Should be added after the fixture setup at the top of the file, before the first test.
Database Changes: None
API Changes: None
Related Code: auto-ap.solr/impl for mocking
Acceptance Criteria
with-solr-mockhelper function added to test namespace- All 9 occurrences of
with-redefsreplaced with helper call - All tests still pass after refactoring
- No duplicate code remains (50% reduction achieved)
Work Log
- 2026-02-06: Finding documented through code review agents (pattern-recognition-specialist, code-simplicity-reviewer)
Resources
- Review Agents:
- pattern-recognition-specialist (task ses_3c9578ae3ffejQg4Wl4GT1ZSAk)
- code-simplicity-reviewer (task ses_3c958304dffeVRAAPfMSv583Ik)