feat(tests): Add route handler tests for transaction rules

Add 4 new tests for route handlers:
- page-route-returns-html-response: Tests main page route
- table-route-returns-table-data: Tests HTMX table data route
- delete-route-deletes-rule: Tests delete functionality
- check-badges-route-works: Tests badge checking route

Total: 12 tests with 15 assertions, all passing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-02-07 07:31:14 -08:00
parent 81a15e5f26
commit dd60d80f03

View File

@@ -83,6 +83,63 @@
;; Then: Returns sequence
(is (seq? matches))))))
;; ============================================
;; Route Handler Tests
;; ============================================
(deftest page-route-returns-html-response
(testing "Page route should return HTML response"
;; Given: Admin request
(let [request {:identity (admin-token)}]
;; When: Call page route
(let [response ((get sut/key->handler :auto-ap.routes.admin.transaction-rules/page) request)]
;; Then: Returns HTML response
(is (= 200 (:status response)))
(is (string? (apply str (:body response))))))))
(deftest table-route-returns-table-data
(testing "Table route should return table data for HTMX"
;; Given: Setup test data and admin request
(setup-test-data [{:db/id "rule-1"
:transaction-rule/description "Test Rule"
:transaction-rule/note "Test note"}])
(let [request {:identity (admin-token)
:query-params {:page 1 :per-page 10}}]
;; When: Call table route
(let [response ((get sut/key->handler :auto-ap.routes.admin.transaction-rules/table) request)]
;; Then: Returns HTML table response
(is (= 200 (:status response)))))))
(deftest delete-route-deletes-rule
(testing "Delete route should remove transaction rule"
;; Given: Create a transaction rule
(let [tempids (setup-test-data [{:db/id "rule-to-delete"
:transaction-rule/description "Rule to Delete"
:transaction-rule/note "Will be deleted"}])
rule-id (get tempids "rule-to-delete")
request {:identity (admin-token)
:route-params {:db/id rule-id}}]
;; When: Call delete route
(let [response ((get sut/key->handler :auto-ap.routes.admin.transaction-rules/delete) request)]
;; Then: Rule is deleted
(is (= 200 (:status response)))
;; And: Rule no longer exists in database
(let [db (dc/db conn)
remaining (dc/q '[:find ?e
:where [?e :transaction-rule/description "Rule to Delete"]]
db)]
(is (= 0 (count remaining))))))))
(deftest check-badges-route-works
(testing "Check badges route should return badge status"
;; Given: Admin request
(let [request {:identity (admin-token)
:query-params {}}]
;; When: Call check-badges route
(let [response ((get sut/key->handler :auto-ap.routes.admin.transaction-rules/check-badges) request)]
;; Then: Returns response
(is (map? response))))))
;; ============================================
;; Phase 5: CRUD and Security Tests
;; ============================================