Browse Source

Add ERTs for feed templates

* testing/lisp/test-org-capture.el (test-org-capture/fill-template):
  Strengthen some expectations, add new tests.

* testing/lisp/test-org-feed.el: New file derived from
  testing/lisp/test-org-capture.el.
Michael Brand 9 years ago
parent
commit
531985d21c
2 changed files with 138 additions and 11 deletions
  1. 30 11
      testing/lisp/test-org-capture.el
  2. 108 0
      testing/lisp/test-org-feed.el

+ 30 - 11
testing/lisp/test-org-capture.el

@@ -27,6 +27,10 @@
 
 (ert-deftest test-org-capture/fill-template ()
   "Test `org-capture-fill-template' specifications."
+
+  ;; When working on these tests consider to also change
+  ;; `test-org-feed/fill-template'.
+
   ;; %(sexp) placeholder.
   (should
    (equal "success!\n"
@@ -37,19 +41,19 @@
 	  (org-capture-fill-template "%<%Y>")))
   ;; %t and %T placeholders.
   (should
-   (equal (concat (format-time-string (car org-time-stamp-formats)) "\n")
+   (equal (concat (format-time-string (org-time-stamp-format nil nil)) "\n")
 	  (org-capture-fill-template "%t")))
   (should
-   (equal (concat (format-time-string (cdr org-time-stamp-formats)) "\n")
+   (equal (concat (format-time-string (org-time-stamp-format t nil)) "\n")
 	  (org-capture-fill-template "%T")))
   ;; %u and %U placeholders.
   (should
-   (string-match-p
-    (format-time-string (substring (car org-time-stamp-formats) 1 -1))
+   (equal
+    (concat (format-time-string (org-time-stamp-format nil t)) "\n")
     (org-capture-fill-template "%u")))
   (should
-   (string-match-p
-    (format-time-string (substring (cdr org-time-stamp-formats) 1 -1))
+   (equal
+    (concat (format-time-string (org-time-stamp-format t t)) "\n")
     (org-capture-fill-template "%U")))
   ;; %i placeholder.  Make sure sexp placeholders are not expanded
   ;; when they are inserted through this one.
@@ -57,11 +61,12 @@
    (equal "success!\n"
 	  (let ((org-store-link-plist nil))
 	    (org-capture-fill-template "%i" "success!"))))
-  (should-not
-   (equal "failure!\n"
+  (should
+   (equal "%(concat \"no \" \"evaluation\")\n"
 	  (let ((org-store-link-plist nil))
-	    (org-capture-fill-template "%i" "%(concat \"failure\" \"!\")"))))
-  ;; Test %-escaping with / character.
+	    (org-capture-fill-template
+	     "%i" "%(concat \"no \" \"evaluation\")"))))
+  ;; Test %-escaping with \ character.
   (should
    (equal "%i\n"
 	  (let ((org-store-link-plist nil))
@@ -73,7 +78,21 @@
   (should
    (equal "\\%i\n"
 	  (let ((org-store-link-plist nil))
-	    (org-capture-fill-template "\\\\\\%i" "success!")))))
+	    (org-capture-fill-template "\\\\\\%i" "success!"))))
+  ;; More than one placeholder in the same template.
+  (should
+   (equal "success! success! success! success!\n"
+	  (let ((org-store-link-plist nil))
+	    (org-capture-fill-template "%i %i %i %i" "success!"))))
+  ;; %(sexp) placeholder with an input containing the traps %, " and )
+  ;; all at once which is complicated to parse.
+  (should
+   (equal
+    "5 % Less (See Item \"3)\" Somewhere)\n"
+    (let ((org-store-link-plist nil))
+      (org-capture-fill-template
+       "%(capitalize \"%i\")"
+       "5 % less (see item \"3)\" somewhere)")))))
 
 
 

+ 108 - 0
testing/lisp/test-org-feed.el

@@ -0,0 +1,108 @@
+;;; test-org-feed.el --- Tests for org-feed.el -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2016  Michael Brand
+
+;; Author: Michael Brand <michael.ch.brand@gmail.com>
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Unit tests for Org Feed library.
+
+;;; Code:
+
+(require 'org-feed)
+
+(ert-deftest test-org-feed/fill-template ()
+  "Test `org-feed-format-entry' template specifications."
+
+  ;; When working on these tests consider to also change
+  ;; `test-org-capture/fill-template'.
+
+  ;; %(sexp) placeholder.
+  (should
+   (equal "success!"
+	  (org-feed-format-entry nil "%(concat \"success\" \"!\")" nil)))
+  ;; %a placeholder.
+  (should
+   (equal "[[http://orgmode.org]]\n"
+	  (org-feed-format-entry '(:link "http://orgmode.org") "%a" nil)))
+  ;; %t and %T placeholders.
+  (should
+   (equal (format-time-string (org-time-stamp-format nil nil))
+	  (org-feed-format-entry nil "%t" nil)))
+  (should
+   (equal "<2016-01-02 Sat>"
+	  (org-feed-format-entry
+	   '(:pubDate "Sat, 02 Jan 2016 12:00:00 +0000") "%t" nil)))
+  (should
+   (equal (format-time-string (org-time-stamp-format t nil))
+	  (org-feed-format-entry nil "%T" nil)))
+  (should
+   (equal "<2016-01-02 Sat 12:00>"
+	  (org-feed-format-entry
+	   '(:pubDate "Sat, 02 Jan 2016 12:00:00 +0000") "%T" nil)))
+  ;; %u and %U placeholders.
+  (should
+   (equal (format-time-string (org-time-stamp-format nil t))
+	  (org-feed-format-entry nil "%u" nil)))
+  (should
+   (equal "[2016-01-02 Sat]"
+	  (org-feed-format-entry
+	   '(:pubDate "Sat, 02 Jan 2016 12:00:00 +0000") "%u" nil)))
+  (should
+   (equal (format-time-string (org-time-stamp-format t t))
+	  (org-feed-format-entry nil "%U" nil)))
+  (should
+   (equal "[2016-01-02 Sat 12:00]"
+	  (org-feed-format-entry
+	   '(:pubDate "Sat, 02 Jan 2016 12:00:00 +0000") "%U" nil)))
+  ;; %h placeholder.  Make sure sexp placeholders are not expanded
+  ;; when they are inserted through this one.
+  (should
+   (equal "success!"
+	  (org-feed-format-entry '(:title "success!") "%h" nil)))
+  (should
+   (equal "%(concat \"no \" \"evaluation\")"
+	  (org-feed-format-entry
+	   '(:title "%(concat \"no \" \"evaluation\")") "%h" nil)))
+  ;; Test %-escaping with \ character.
+  (should
+   (equal "%h"
+	  (org-feed-format-entry '(:title "success!") "\\%h" nil)))
+  (should
+   (equal "\\success!"
+	  (org-feed-format-entry '(:title "success!") "\\\\%h" nil)))
+  (should
+   (equal "\\%h"
+	  (org-feed-format-entry '(:title "success!") "\\\\\\%h" nil)))
+  ;; More than one placeholder in the same template.
+  (should
+   (equal "success! success! success! success!"
+	  (org-feed-format-entry '(:title "success!") "%h %h %h %h" nil)))
+  ;; %(sexp) placeholder with an input containing the traps %, ", )
+  ;; and \n all at once which is complicated to parse.
+  (should
+   (equal
+    "5 % Less (See\n Item \"3)\" Somewhere)"
+    (org-feed-format-entry
+     '(:title "5 % less (see\n item \"3)\" somewhere)")
+     "%(capitalize \"%h\")" nil))))
+
+
+
+
+(provide 'test-org-feed)
+;;; test-org-feed.el ends here