aboutsummaryrefslogtreecommitdiff
path: root/tests/test-wttrin--validate-weather-data.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-02-17 19:14:14 -0600
committerCraig Jennings <c@cjennings.net>2026-02-17 19:14:14 -0600
commit28b7e4cecadce207d532b8d42346c3823450a35f (patch)
tree4d8772206e10c59762ae1e60343d4bc8dded77b5 /tests/test-wttrin--validate-weather-data.el
parentbf989bb594680eb2e3b69f55752353aa33cb47bb (diff)
downloademacs-wttrin-28b7e4cecadce207d532b8d42346c3823450a35f.tar.gz
emacs-wttrin-28b7e4cecadce207d532b8d42346c3823450a35f.zip
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-<module>-<category>-<scenario>-<expected-result> 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 <noreply@anthropic.com>
Diffstat (limited to 'tests/test-wttrin--validate-weather-data.el')
-rw-r--r--tests/test-wttrin--validate-weather-data.el35
1 files changed, 23 insertions, 12 deletions
diff --git a/tests/test-wttrin--validate-weather-data.el b/tests/test-wttrin--validate-weather-data.el
index 651fb5c..168c8ef 100644
--- a/tests/test-wttrin--validate-weather-data.el
+++ b/tests/test-wttrin--validate-weather-data.el
@@ -10,62 +10,73 @@
(require 'ert)
(require 'wttrin)
+(require 'testutil-wttrin)
+
+;;; Setup and Teardown
+
+(defun test-wttrin--validate-weather-data-setup ()
+ "Setup for validate-weather-data tests."
+ (testutil-wttrin-setup))
+
+(defun test-wttrin--validate-weather-data-teardown ()
+ "Teardown for validate-weather-data tests."
+ (testutil-wttrin-teardown))
;;; Normal Cases
-(ert-deftest test-wttrin--validate-weather-data-normal-valid-weather-string ()
+(ert-deftest test-wttrin--validate-weather-data-normal-valid-weather-string-returns-true ()
"Test that valid weather data string is accepted."
(let ((valid-weather "Weather: 20°C\nCondition: Sunny\nWind: 10 km/h"))
(should (wttrin--validate-weather-data valid-weather))))
-(ert-deftest test-wttrin--validate-weather-data-normal-multiline-weather ()
+(ert-deftest test-wttrin--validate-weather-data-normal-multiline-weather-returns-true ()
"Test that multiline weather data is accepted."
(let ((weather "┌─────────────┐\n│ Weather │\n│ 20°C │\n└─────────────┘"))
(should (wttrin--validate-weather-data weather))))
-(ert-deftest test-wttrin--validate-weather-data-normal-weather-with-unicode ()
+(ert-deftest test-wttrin--validate-weather-data-normal-weather-with-unicode-returns-true ()
"Test that weather data with Unicode characters is accepted."
(let ((weather "Temperature: 20°C ☀️\nWind: 15 km/h 💨"))
(should (wttrin--validate-weather-data weather))))
;;; Boundary Cases
-(ert-deftest test-wttrin--validate-weather-data-boundary-empty-string ()
+(ert-deftest test-wttrin--validate-weather-data-boundary-empty-string-returns-true ()
"Test that empty string is considered valid (though unusual)."
(should (wttrin--validate-weather-data "")))
-(ert-deftest test-wttrin--validate-weather-data-boundary-whitespace-only ()
+(ert-deftest test-wttrin--validate-weather-data-boundary-whitespace-only-returns-true ()
"Test that whitespace-only string is considered valid."
(should (wttrin--validate-weather-data " \n \t ")))
-(ert-deftest test-wttrin--validate-weather-data-boundary-single-character ()
+(ert-deftest test-wttrin--validate-weather-data-boundary-single-character-returns-true ()
"Test that single character string is valid."
(should (wttrin--validate-weather-data "x")))
-(ert-deftest test-wttrin--validate-weather-data-boundary-error-lowercase ()
+(ert-deftest test-wttrin--validate-weather-data-boundary-error-lowercase-returns-nil ()
"Test that lowercase 'error' is rejected (case-insensitive matching)."
;; string-match uses case-fold-search which defaults to t in Emacs
(should-not (wttrin--validate-weather-data "error: connection failed")))
-(ert-deftest test-wttrin--validate-weather-data-boundary-error-in-middle ()
+(ert-deftest test-wttrin--validate-weather-data-boundary-error-in-middle-returns-nil ()
"Test that 'ERROR' anywhere in string causes rejection."
(should-not (wttrin--validate-weather-data "Weather: ERROR occurred while fetching")))
;;; Error Cases
-(ert-deftest test-wttrin--validate-weather-data-error-nil-string ()
+(ert-deftest test-wttrin--validate-weather-data-error-nil-string-returns-nil ()
"Test that nil string is rejected."
(should-not (wttrin--validate-weather-data nil)))
-(ert-deftest test-wttrin--validate-weather-data-error-uppercase-error ()
+(ert-deftest test-wttrin--validate-weather-data-error-uppercase-error-returns-nil ()
"Test that string containing 'ERROR' is rejected."
(should-not (wttrin--validate-weather-data "ERROR: Unable to fetch weather")))
-(ert-deftest test-wttrin--validate-weather-data-error-error-at-start ()
+(ert-deftest test-wttrin--validate-weather-data-error-error-at-start-returns-nil ()
"Test that 'ERROR' at start of string causes rejection."
(should-not (wttrin--validate-weather-data "ERROR 404")))
-(ert-deftest test-wttrin--validate-weather-data-error-error-at-end ()
+(ert-deftest test-wttrin--validate-weather-data-error-error-at-end-returns-nil ()
"Test that 'ERROR' at end of string causes rejection."
(should-not (wttrin--validate-weather-data "Network ERROR")))