aboutsummaryrefslogtreecommitdiff
path: root/tests/test-wttrin-hide-follow-line.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-wttrin-hide-follow-line.el')
-rw-r--r--tests/test-wttrin-hide-follow-line.el75
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/test-wttrin-hide-follow-line.el b/tests/test-wttrin-hide-follow-line.el
new file mode 100644
index 0000000..fcfb906
--- /dev/null
+++ b/tests/test-wttrin-hide-follow-line.el
@@ -0,0 +1,75 @@
+;;; test-wttrin-hide-follow-line.el --- Tests for hiding the follow line -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2026 Craig Jennings
+
+;;; Commentary:
+
+;; Unit tests for wttrin--effective-display-options and its effect on
+;; wttrin--build-url: the wttr.in F flag is added to the buffer request when
+;; wttrin-hide-follow-line is non-nil, composing with wttrin-display-options.
+
+;;; Code:
+
+(require 'ert)
+(require 'wttrin)
+
+;;; --------------------------------------------------------------------------
+;;; wttrin--effective-display-options
+;;; --------------------------------------------------------------------------
+
+;;; Normal Cases
+
+(ert-deftest test-wttrin--effective-display-options-normal-hide-empty-adds-f ()
+ "Normal: hiding with no other options yields just the F flag."
+ (let ((wttrin-display-options nil)
+ (wttrin-hide-follow-line t))
+ (should (equal (wttrin--effective-display-options) "F"))))
+
+(ert-deftest test-wttrin--effective-display-options-normal-hide-appends-f ()
+ "Normal: hiding appends F to existing options."
+ (let ((wttrin-display-options "0q")
+ (wttrin-hide-follow-line t))
+ (should (equal (wttrin--effective-display-options) "0qF"))))
+
+(ert-deftest test-wttrin--effective-display-options-normal-no-hide-unchanged ()
+ "Normal: not hiding leaves the options untouched."
+ (let ((wttrin-display-options "0q")
+ (wttrin-hide-follow-line nil))
+ (should (equal (wttrin--effective-display-options) "0q"))))
+
+;;; Boundary Cases
+
+(ert-deftest test-wttrin--effective-display-options-boundary-f-already-present ()
+ "Boundary: F already in the options is not duplicated."
+ (let ((wttrin-display-options "0Fq")
+ (wttrin-hide-follow-line t))
+ (should (equal (wttrin--effective-display-options) "0Fq"))))
+
+(ert-deftest test-wttrin--effective-display-options-boundary-no-hide-nil-options ()
+ "Boundary: not hiding with nil options yields an empty string."
+ (let ((wttrin-display-options nil)
+ (wttrin-hide-follow-line nil))
+ (should (equal (wttrin--effective-display-options) ""))))
+
+;;; --------------------------------------------------------------------------
+;;; wttrin--build-url integration
+;;; --------------------------------------------------------------------------
+
+;;; Normal Cases
+
+(ert-deftest test-wttrin--build-url-normal-hide-appends-f-to-url ()
+ "Normal: hiding the follow line puts the F flag at the end of the URL."
+ (let ((wttrin-display-options nil)
+ (wttrin-hide-follow-line t)
+ (wttrin-unit-system nil))
+ (should (string-suffix-p "F" (wttrin--build-url "Tokyo")))))
+
+(ert-deftest test-wttrin--build-url-normal-no-hide-no-trailing-f ()
+ "Normal: with hiding off, the URL does not end in the F flag."
+ (let ((wttrin-display-options nil)
+ (wttrin-hide-follow-line nil)
+ (wttrin-unit-system nil))
+ (should-not (string-suffix-p "F" (wttrin--build-url "Tokyo")))))
+
+(provide 'test-wttrin-hide-follow-line)
+;;; test-wttrin-hide-follow-line.el ends here