---
status: pending
priority: p2
issue_id: 003
tags: [test-fix, important, assertion-quality]
---

# Problem Statement

**Weak assertions in multiple tests**

Multiple tests only verify type checking `(is (number? matching-count))` instead of verifying actual functionality. This gives false confidence that tests are validating the system behavior.

**Impact**: Tests pass even when incorrect data is returned, providing minimal test coverage and risking regressions.

## Findings

- **Location**: Multiple test functions
  - Line 100 (account-grid-view-loads-accounts): `(is (number? matching-count))`
  - Line 110 (account-grid-displays-correct-columns): `(is (number? matching-count))`
  - Line 126 (account-sorting-by-name): `(is (number? matching-count))`
  - Line 137 (account-sorting-by-numeric-code): `(is (number? matching-count))`
  - Line 150 (account-sorting-by-type): `(is (number? matching-count))`
  - Line 28 (account-creation-success): `(is (= 1 (count accounts)))`
  - Line 30 (account-creation-success): `(is (= 12345 (:account/numeric-code account)))`
  - Line 41 (account-creation-success): `(is (= "B" (:account/location account)))`

- **Issue**: Some tests verify only the count of accounts returned, not that the correct accounts are returned

- **Example of weak assertion**:
  ```clojure
  ;; Line 100 - Only checks type, not functionality
  (is (number? matching-count))

  ;; Should verify:
  ;; - The correct accounts were returned
  ;; - The accounts have the expected data
  ;; - Data integrity is maintained
  ```

- **Evidence**: Code review identified that ~40% of assertions are weak type-checking assertions

## Proposed Solutions

### Option 1: Verify actual account data returned (RECOMMENDED)
**Pros**:
- Strong validation that tests verify actual behavior
- Catches regressions more effectively
- Better test confidence

**Cons**:
- Requires test setup of expected account data
- More complex test code

**Effort**: Medium

**Risk**: None

**Example implementation**:
```clojure
;; Line 100 - Account grid view
(let [[accounts matching-count] (sut/fetch-page {:query-params {:page 1 :per-page 10}})]
  (is (number? matching-count))
  (is (pos? (count accounts)))  ; Verify accounts exist
  (is (every? #(contains? % :account/name) accounts)))  ; Verify required fields
```

### Option 2: Combine with data verification from test setup
**Pros**:
- Consistent data verification
- Checks both creation and retrieval

**Cons**:
- Requires each test to create expected data
- More code duplication

**Effort**: Medium

**Risk**: None

### Option 3: Accept current weak assertions for now
**Pros**:
- Minimal changes
- Maintains current test structure

**Cons**:
- Low test confidence
- Doesn't actually verify functionality
- More likely to miss regressions

**Effort**: None

**Risk**: High (tests are not effective)

## Recommended Action

**Strengthen assertions to verify actual account data returned, not just type checking.**

For grid and sorting tests, verify that:
1. Accounts are actually returned (not just matching-count exists)
2. Returned accounts have required fields (account/name, account/numeric-code, etc.)
3. For grid tests, verify accounts match what was created

## Technical Details

**Affected Component**: Test assertions, account grid and sorting functionality

**Affected Files**:
- `test/clj/auto_ap/ssr/admin/accounts_test.clj` (lines 100, 110, 126, 137, 150)

**Database Changes**: None

**API Changes**: None

**Related Code**: None

## Acceptance Criteria

- [ ] Grid tests verify accounts are returned and have required fields
- [ ] Sorting tests verify accounts are returned
- [ ] All weak assertions strengthened to verify actual data
- [ ] All tests still pass with strengthened assertions
- [ ] Tests provide real confidence in system behavior

## Work Log

- **2026-02-06**: Finding documented through code review agents (kieran-python-reviewer, code-simplicity-reviewer)

## Resources

- **Review Agents**:
  - kieran-python-reviewer (task ses_3c958be13ffehUVu6E1NzOC3Ch)
  - code-simplicity-reviewer (task ses_3c958304dffeVRAAPfMSv583Ik)
