From dd60d80f038ae76ef5cf6dd597d77408d69aea8c Mon Sep 17 00:00:00 2001 From: Bryce Date: Sat, 7 Feb 2026 07:31:14 -0800 Subject: [PATCH] feat(tests): Add route handler tests for transaction rules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../ssr/admin/transaction_rules_test.clj | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/test/clj/auto_ap/ssr/admin/transaction_rules_test.clj b/test/clj/auto_ap/ssr/admin/transaction_rules_test.clj index c05e997e..0b37c6fb 100644 --- a/test/clj/auto_ap/ssr/admin/transaction_rules_test.clj +++ b/test/clj/auto_ap/ssr/admin/transaction_rules_test.clj @@ -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 ;; ============================================