hy_odoo/hy_odoo/macros/test.hy

52 lines
2.5 KiB
Hy

;; -*- coding: utf-8 -*-
;;
;; Copyright 2021 Fabien Bourgeois <fabien@yaltik.com>
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU Affero 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 Affero General Public License for more details.
;;
;; You should have received a copy of the GNU Affero General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
" Hy Odoo Tests Helpers and Macros "
(require [hy-odoo.macros.general [if-python2]])
(defmacro o-assert-equal [left right] `(.assertEqual self ~left ~right))
(defmacro o-assert-list-equal [left right] `(.assertListEqual self ~left ~right))
(defmacro o-assert-dict-equal [left right] `(.assertDictEqual self ~left ~right))
(defmacro o-assert-not-equal [left right] `(.assertNotEqual self ~left ~right))
(defmacro o-assert-true [val] `(.assertTrue self ~val))
(defmacro o-assert-false [val] `(.assertFalse self ~val))
(defmacro o-assert-is [left right] `(.assertIs self ~left ~right))
(defmacro o-assert-is-not [left right] `(.assertIsNot self ~left ~right))
(defmacro o-assert-is-none [val] `(.assertIsNone self ~val))
(defmacro o-assert-is-not-none [val] `(.assertIsNotNone self ~val))
(defmacro o-assert-in [left right] `(.assertIn self ~left ~right))
(defmacro o-assert-not-in [left right] `(.assertNotIn self ~left ~right))
(defmacro o-assert-is-instance [left right] `(.assertIsInstance self ~left ~right))
(defmacro o-assert-not-is-instance [left right] `(.assertNotIsInstance self ~left ~right))
(defmacro o-assert-raises [Error] `(.assertRaises self ~Error))
(defmacro o-assert-raises-regex [Error regexp]
(if-python2
`(.assertRaisesRegexp self ~Error ~regexp)
`(.assertRaisesRegex self ~Error ~regexp)))
(defmacro odo-assert-raises [Error body]
"Macro to test Error with self.assertRaises and do block"
`(with [err (.assertRaises self ~Error)] ~body))
(defmacro o-test [name body]
"Macro for unit test case"
(setv fn-name (% "test-%s" (str name))
humanized-name (.replace (str name) "-" " ")
descr (bytes (% "Test %s" humanized-name)))
`(defn ~(HySymbol fn-name) [self] ~descr ~body))