Skip to content

Commit 40c484d

Browse files
committed
Add tests for ledger-insert-effective-date-region.
1 parent 1a32890 commit 40c484d

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

test/mode-test.el

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,79 @@ http://bugs.ledger-cli.org/show_bug.cgi?id=256"
284284
(call-interactively 'ledger-insert-effective-date))
285285
(should (equal (buffer-string) orig-file-contents)))))
286286

287+
(ert-deftest ledger-mode/test-009 ()
288+
"Baseline test for `ledger-insert-effective-date-region'."
289+
:tags '(mode baseline)
290+
291+
(cl-flet ((file-with-dates (date-1 date-2)
292+
;; A file with two optional effective dates.
293+
(format
294+
"\
295+
2024-01-01%s Grocery Store
296+
Expenses:Groceries $30
297+
Liabilities:Credit Card
298+
299+
2024-01-02%s Grocery Store
300+
Expenses:Groceries $10
301+
Expenses:Tax $1.50
302+
Liabilities:Credit Card -$11.50
303+
"
304+
(if date-1 (concat "=" date-1) "")
305+
(if date-2 (concat "=" date-2) ""))))
306+
(ledger-tests-with-temp-file
307+
(file-with-dates nil nil)
308+
309+
;; With no prefix arg, insert or replace effective date for xacts that
310+
;; start on a line that overlaps the range. With one, remove the
311+
;; effective date.
312+
313+
;; Range fully contained in start line.
314+
(save-excursion
315+
(let ((min (progn (forward-char 1) (point)))
316+
(max (progn (forward-char 1) (point))))
317+
(ledger-insert-effective-date-region min max "2024-03-01")
318+
(should (equal (buffer-string) (file-with-dates "2024-03-01" nil)))))
319+
320+
;; Range doesn't overlap the start of an xact: don't do anything.
321+
(save-excursion
322+
(let ((min (progn (forward-line 1) (point)))
323+
(max (progn (forward-line 3) (point))))
324+
(ledger-insert-effective-date-region min max "2024-03-02")
325+
(should (equal (buffer-string) (file-with-dates "2024-03-01" nil)))))
326+
327+
;; Range overlaps multiple xacts: update them all.
328+
(save-excursion
329+
(let ((min (point))
330+
(max (progn (forward-line 4) (forward-char 1) (point))))
331+
(ledger-insert-effective-date-region min max "2024-03-03")
332+
(should (equal (buffer-string)
333+
(file-with-dates "2024-03-03" "2024-03-03")))))
334+
335+
;; Remove effective date from multiple.
336+
(save-excursion
337+
(let ((min (point))
338+
(max (progn (forward-line 4) (forward-char 1) (point)))
339+
(current-prefix-arg '(4)))
340+
(ledger-insert-effective-date-region min max nil)
341+
(should (equal (buffer-string) (file-with-dates nil nil)))))
342+
343+
;; Add it back to both.
344+
(save-excursion
345+
(let ((min (point))
346+
(max (progn (forward-line 4) (forward-char 1) (point))))
347+
(ledger-insert-effective-date-region min max "2024-03-04")
348+
(should (equal (buffer-string)
349+
(file-with-dates "2024-03-04" "2024-03-04")))))
350+
351+
;; Remove from just the first.
352+
(save-excursion
353+
(let ((min (progn (forward-char 1) (point)))
354+
(max (progn (forward-char 1) (point)))
355+
(current-prefix-arg '(4)))
356+
(ledger-insert-effective-date-region min max nil)
357+
(should (equal (buffer-string)
358+
(file-with-dates nil "2024-03-04"))))))))
359+
287360
(provide 'mode-test)
288361

289362
;;; mode-test.el ends here

0 commit comments

Comments
 (0)