diff options
| author | Craig Jennings <c@cjennings.net> | 2026-02-17 19:14:14 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-02-17 19:14:14 -0600 |
| commit | 28b7e4cecadce207d532b8d42346c3823450a35f (patch) | |
| tree | 4d8772206e10c59762ae1e60343d4bc8dded77b5 /tests/test-wttrin--validate-weather-data.el | |
| parent | bf989bb594680eb2e3b69f55752353aa33cb47bb (diff) | |
| download | emacs-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.el | 35 |
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"))) |
