From 28b7e4cecadce207d532b8d42346c3823450a35f Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Tue, 17 Feb 2026 19:14:14 -0600 Subject: refactor: tests: standardize naming, consolidate files, and expand testutil - Expand testutil-wttrin.el with shared fixtures and macros (testutil-wttrin-with-clean-weather-buffer, testutil-wttrin-mock-http-response, sample ANSI/weather constants) - Consolidate cache tests: port unique tests from cleanup-cache-constants and cleanup-cache-refactored into cleanup-cache-if-needed, delete obsolete files - Extract startup-delay tests into dedicated file - Add setup/teardown and (require 'testutil-wttrin) to all test files - Rename all 160 tests to follow test---- convention - Rename integration test file and add detailed docstrings - Update Makefile glob to discover new integration test naming pattern Co-Authored-By: Claude Opus 4.6 --- tests/test-wttrin--cleanup-cache-refactored.el | 182 ------------------------- 1 file changed, 182 deletions(-) delete mode 100644 tests/test-wttrin--cleanup-cache-refactored.el (limited to 'tests/test-wttrin--cleanup-cache-refactored.el') diff --git a/tests/test-wttrin--cleanup-cache-refactored.el b/tests/test-wttrin--cleanup-cache-refactored.el deleted file mode 100644 index 80d1da0..0000000 --- a/tests/test-wttrin--cleanup-cache-refactored.el +++ /dev/null @@ -1,182 +0,0 @@ -;;; test-wttrin--cleanup-cache-refactored.el --- Tests for refactored cache cleanup -*- lexical-binding: t; -*- - -;; Copyright (C) 2024 Craig Jennings - -;;; Commentary: -;; Tests for refactored wttrin--cleanup-cache-if-needed function. -;; Verifies that the cleanup logic works correctly when using -;; the extracted wttrin--get-cache-entries-by-age helper. - -;;; Code: - -(require 'ert) -(require 'wttrin) - -;;; Normal Cases - -(ert-deftest test-wttrin--cleanup-cache-refactored-does-nothing-when-under-limit () - "Should not remove entries when cache is below max." - (let ((wttrin--cache (make-hash-table :test 'equal)) - (wttrin-cache-max-entries 50)) - ;; Add 40 entries (under the limit of 50) - (dotimes (i 40) - (puthash (format "Loc%d|m" i) (cons (float i) "data") wttrin--cache)) - - (wttrin--cleanup-cache-if-needed) - - ;; Should still have all 40 entries - (should (= 40 (hash-table-count wttrin--cache))))) - -(ert-deftest test-wttrin--cleanup-cache-refactored-removes-oldest-entries () - "Should remove oldest 20% when cache exceeds max." - (let ((wttrin--cache (make-hash-table :test 'equal)) - (wttrin-cache-max-entries 50) - (wttrin--cache-cleanup-percentage 0.20)) - ;; Add 51 entries (1 over the limit) - ;; Timestamps: 1000.0, 1001.0, ..., 1050.0 - (dotimes (i 51) - (puthash (format "Loc%d|m" i) - (cons (+ 1000.0 i) "data") - wttrin--cache)) - - (wttrin--cleanup-cache-if-needed) - - ;; Should remove floor(51 * 0.20) = 10 oldest entries - (should (= 41 (hash-table-count wttrin--cache))) - - ;; Oldest entries (Loc0 through Loc9) should be gone - (should-not (gethash "Loc0|m" wttrin--cache)) - (should-not (gethash "Loc9|m" wttrin--cache)) - - ;; Newer entries (Loc10 and up) should remain - (should (gethash "Loc10|m" wttrin--cache)) - (should (gethash "Loc50|m" wttrin--cache)))) - -(ert-deftest test-wttrin--cleanup-cache-refactored-uses-helper-function () - "Should use wttrin--get-cache-entries-by-age for sorting." - (let ((wttrin--cache (make-hash-table :test 'equal)) - (wttrin-cache-max-entries 10) - (wttrin--cache-cleanup-percentage 0.20) - (helper-called nil)) - - ;; Add entries in random timestamp order - (puthash "New|m" (cons 3000.0 "data") wttrin--cache) - (puthash "Old|m" (cons 1000.0 "data") wttrin--cache) - (puthash "Mid|m" (cons 2000.0 "data") wttrin--cache) - (dotimes (i 8) - (puthash (format "Extra%d|m" i) (cons (+ 1500.0 i) "data") wttrin--cache)) - - ;; Mock the helper to verify it's called - (cl-letf (((symbol-function 'wttrin--get-cache-entries-by-age) - (lambda () - (setq helper-called t) - ;; Return actual sorted entries - (let ((entries nil)) - (maphash (lambda (k v) (push (cons k (car v)) entries)) - wttrin--cache) - (sort entries (lambda (a b) (< (cdr a) (cdr b)))))))) - - (wttrin--cleanup-cache-if-needed) - - ;; Verify helper was called (after refactoring) - ;; Note: This test will pass even before refactoring since we mock it - ;; The real verification is that cleanup still works correctly - (should (= 9 (hash-table-count wttrin--cache))) - - ;; Oldest entry should be removed - (should-not (gethash "Old|m" wttrin--cache)) - - ;; Newer entries should remain - (should (gethash "Mid|m" wttrin--cache)) - (should (gethash "New|m" wttrin--cache))))) - -;;; Boundary Cases - -(ert-deftest test-wttrin--cleanup-cache-refactored-exactly-at-max () - "Should not cleanup when exactly at max entries." - (let ((wttrin--cache (make-hash-table :test 'equal)) - (wttrin-cache-max-entries 50)) - ;; Add exactly 50 entries - (dotimes (i 50) - (puthash (format "Loc%d|m" i) (cons (float i) "data") wttrin--cache)) - - (wttrin--cleanup-cache-if-needed) - - ;; Should still have all 50 entries - (should (= 50 (hash-table-count wttrin--cache))))) - -(ert-deftest test-wttrin--cleanup-cache-refactored-respects-cleanup-percentage () - "Should use wttrin--cache-cleanup-percentage constant." - (let ((wttrin--cache (make-hash-table :test 'equal)) - (wttrin-cache-max-entries 100) - (wttrin--cache-cleanup-percentage 0.30)) ; 30% cleanup - ;; Add 101 entries - (dotimes (i 101) - (puthash (format "Loc%d|m" i) (cons (float i) "data") wttrin--cache)) - - (wttrin--cleanup-cache-if-needed) - - ;; Should remove floor(101 * 0.30) = 30 oldest entries - ;; Leaving 71 entries - (should (= 71 (hash-table-count wttrin--cache))) - - ;; First 30 should be gone - (should-not (gethash "Loc0|m" wttrin--cache)) - (should-not (gethash "Loc29|m" wttrin--cache)) - - ;; Entry 30 and beyond should remain - (should (gethash "Loc30|m" wttrin--cache)) - (should (gethash "Loc100|m" wttrin--cache)))) - -(ert-deftest test-wttrin--cleanup-cache-refactored-small-percentage () - "Should handle small cleanup percentages correctly." - (let ((wttrin--cache (make-hash-table :test 'equal)) - (wttrin-cache-max-entries 10) - (wttrin--cache-cleanup-percentage 0.10)) ; Only 10% - ;; Add 11 entries - (dotimes (i 11) - (puthash (format "Loc%d|m" i) (cons (float i) "data") wttrin--cache)) - - (wttrin--cleanup-cache-if-needed) - - ;; Should remove floor(11 * 0.10) = 1 oldest entry - (should (= 10 (hash-table-count wttrin--cache))) - - ;; Oldest should be gone - (should-not (gethash "Loc0|m" wttrin--cache)) - - ;; Rest should remain - (should (gethash "Loc1|m" wttrin--cache)) - (should (gethash "Loc10|m" wttrin--cache)))) - -;;; Integration Tests - -(ert-deftest test-wttrin--cleanup-cache-refactored-multiple-cleanups () - "Should handle multiple cleanup cycles correctly." - (let ((wttrin--cache (make-hash-table :test 'equal)) - (wttrin-cache-max-entries 50) - (wttrin--cache-cleanup-percentage 0.20)) - - ;; First batch: 51 entries - (dotimes (i 51) - (puthash (format "Batch1-%d|m" i) (cons (+ 1000.0 i) "data") wttrin--cache)) - - (wttrin--cleanup-cache-if-needed) - (should (= 41 (hash-table-count wttrin--cache))) - - ;; Second batch: add 10 more (now 51 again) - (dotimes (i 10) - (puthash (format "Batch2-%d|m" i) (cons (+ 2000.0 i) "data") wttrin--cache)) - - (wttrin--cleanup-cache-if-needed) - ;; Should cleanup again: floor(51 * 0.20) = 10 removed, leaving 41 - (should (= 41 (hash-table-count wttrin--cache))) - - ;; Oldest from first batch should be gone - (should-not (gethash "Batch1-0|m" wttrin--cache)) - - ;; Newest from second batch should remain - (should (gethash "Batch2-9|m" wttrin--cache)))) - -(provide 'test-wttrin--cleanup-cache-refactored) -;;; test-wttrin--cleanup-cache-refactored.el ends here -- cgit v1.2.3