hh-web-tags / tests.lisp

;; Copyright (c) 2011 Phil Hargett

;; Permission is hereby granted, free of charge, to any person obtaining a copy
;; of this software and associated documentation files (the "Software"), to deal
;; in the Software without restriction, including without limitation the rights
;; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
;; copies of the Software, and to permit persons to whom the Software is
;; furnished to do so, subject to the following conditions:

;; The above copyright notice and this permission notice shall be included in
;; all copies or substantial portions of the Software.

;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
;; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
;; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
;; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
;; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
;; THE SOFTWARE.


(defpackage :hh-web-tags-tests
  (:use :cl :asdf :lisp-unit :hh-web-tags))

(in-package :hh-web-tags-tests)

;; start fresh--remove any tests that no longer exist
(remove-all-tests)

;;----------------------------------------
;; Templates

;; Note that we're using really ugly template file names because
;; we don't ever want them to be used in a real application--they
;; are just for test

(deftemplates :tag-library-packages ( "hh-web-tags" )
  :template-packages ( "hh-web-tags")
  :templates ((test-page1 "test-page1.lisp")
	      (test-html1 "test-html1.lisp")
	      (test-html2 "test-html2.lisp")
	      (test-html3 "test-html3.lisp")
	      (test-html-text-field "test-html-text-field.lisp"))
  :tag-library-folder "testtaglibraries"
  :template-folder "testtemplates")

;;----------------------------------------
;; Tests

(define-test template-tests
  (assert-equal "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
</head>
<body>
hello
</body>
</html>
" (nth-value 0 (test-page1))))

(define-test html-tests
  ;; (format *standard-output* "html 1 : ~s~%" (test-html1))
   
  (assert-equal "
<p>hello
</p>" (nth-value 0 (test-html1)))

  ;; (format *standard-output* "html 2 : ~s~%" (test-html2))
    
  (assert-equal "
<a href='bar'>bwirp
</a>" (nth-value 0  (test-html2)))

  ;; (format *standard-output* "html 3 : ~s~%" (test-html3))
  ;; (format *standard-output* "html for text-field : ~s~%" (test-html-text-field))
  )

;;----------------------------------------
;; Run
(run-tests)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.