[IMP][FIX]Hy Odoo : test whole Odoo DSL + fixes
This commit is contained in:
parent
7977739967
commit
85ecf8d809
1
Makefile
1
Makefile
@ -6,3 +6,4 @@ clean:
|
|||||||
.PHONY: test
|
.PHONY: test
|
||||||
test:
|
test:
|
||||||
hy hy_odoo/tests/test_xml.hy
|
hy hy_odoo/tests/test_xml.hy
|
||||||
|
hy hy_odoo/tests/test_odoo.hy
|
||||||
|
@ -34,12 +34,13 @@
|
|||||||
|
|
||||||
; XML helpers functions and macros
|
; XML helpers functions and macros
|
||||||
|
|
||||||
(defn odoo [children] (xmlroot (xmln "odoo" {} children)))
|
(defn odoo [children] (xmlroot {"tag" "odoo" "attrs" {} "children" children}))
|
||||||
|
|
||||||
(defn data [#* args]
|
(defn data [#* args]
|
||||||
"Special data node, allow optional args on data tag"
|
"Special data node, allow optional args on data tag"
|
||||||
(when (= (len args) 1) (setv args (.insert (list args) 0 {})))
|
(when (= (len args) 1) (do (setv args (list args))
|
||||||
(xmln "data" args))
|
(.insert args 0 {})))
|
||||||
|
(xmln "data" #* args))
|
||||||
|
|
||||||
; Aliases
|
; Aliases
|
||||||
(defn function [#* args] (xmln "function" #*args))
|
(defn function [#* args] (xmln "function" #*args))
|
||||||
|
293
hy_odoo/tests/test_odoo.hy
Normal file
293
hy_odoo/tests/test_odoo.hy
Normal file
@ -0,0 +1,293 @@
|
|||||||
|
;; -*- coding: utf-8 -*-
|
||||||
|
;;
|
||||||
|
;; Copyright 2022 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/>.
|
||||||
|
|
||||||
|
" Odoo Helpers tests "
|
||||||
|
|
||||||
|
(require
|
||||||
|
hyrule.control [defmain]
|
||||||
|
hy-odoo.mtest *)
|
||||||
|
|
||||||
|
(import unittest
|
||||||
|
functools [partial]
|
||||||
|
xml.etree.ElementTree :as ET
|
||||||
|
hy-odoo.xml [XMLDictElement]
|
||||||
|
hy-odoo.odoo :as od)
|
||||||
|
|
||||||
|
(defclass TextOdooBase [(. unittest TestCase)]
|
||||||
|
"Odoo Helpers tests"
|
||||||
|
|
||||||
|
(defn test-odoo [self]
|
||||||
|
" Test odoo function "
|
||||||
|
(setv element (od.odoo []))
|
||||||
|
(o-assert-is-instance element (. ET Element))
|
||||||
|
(o-assert-equal (. element tag) "odoo"))
|
||||||
|
|
||||||
|
(defn test-data [self]
|
||||||
|
" Test data function "
|
||||||
|
(setv element (od.data []))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal element.tag "data")
|
||||||
|
(o-assert-equal element.attrs {})
|
||||||
|
|
||||||
|
(setv element (od.data {"one" "attribute"} []))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal element.tag "data")
|
||||||
|
(o-assert-equal element.attrs {"one" "attribute"}))
|
||||||
|
|
||||||
|
(defn test-aliases [self]
|
||||||
|
" Test simple aliases to xmln "
|
||||||
|
(setv element (od.record {"one" "attribute"} "A child"))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal element.tag "record")
|
||||||
|
(o-assert-equal element.attrs {"one" "attribute"})
|
||||||
|
(o-assert-equal element.children ["A child"])
|
||||||
|
|
||||||
|
(setv element (od.tree))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal element.tag "tree"))
|
||||||
|
|
||||||
|
|
||||||
|
(defn test-act-window-model [self]
|
||||||
|
" Test act_window function "
|
||||||
|
(setv element (od.act_window_model "sample.model" {"view_type" "form"}))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal element.tag "act_window")
|
||||||
|
(o-assert-equal (get (. element attrs) "view_type") "form")
|
||||||
|
(o-assert-equal (get (. element attrs) "id") "sample_model_view_action")
|
||||||
|
(o-assert-equal (get (. element attrs) "res_model") "sample.model")
|
||||||
|
(o-assert-equal (get (. element attrs) "name") "Sample Model Action"))
|
||||||
|
|
||||||
|
(defn test-menunitem-model [self]
|
||||||
|
" Test menuitem function "
|
||||||
|
(setv element (od.menuitem-model "sample.model" {"groups" "base.user_employee"}))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "menuitem")
|
||||||
|
(o-assert-equal (get (. element attrs) "groups") "base.user_employee")
|
||||||
|
(o-assert-equal (get (. element attrs) "id") "sample_model_menu")
|
||||||
|
(o-assert-equal (get (. element attrs) "action") "sample_model_view_action"))
|
||||||
|
|
||||||
|
(defn test-attribute [self]
|
||||||
|
" Test attribute function "
|
||||||
|
(setv element (od.attribute "invisible" "1"))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "attribute")
|
||||||
|
(o-assert-equal (get (. element attrs) "name") "invisible")
|
||||||
|
(o-assert-equal (. element children) ["1"]))
|
||||||
|
|
||||||
|
(defn test-fields [self]
|
||||||
|
" Test fields function "
|
||||||
|
(setv element (od.field {"one" "attribute"} "A child"))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal element.tag "field")
|
||||||
|
|
||||||
|
(setv element (od.field-name "A name"))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "field")
|
||||||
|
(o-assert-equal (get (. element attrs) "name") "name")
|
||||||
|
(o-assert-equal (. element children) ["A name"])
|
||||||
|
|
||||||
|
(setv element (od.field-model "sample.model"))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "field")
|
||||||
|
(o-assert-equal (get (. element attrs) "name") "model")
|
||||||
|
(o-assert-equal (. element children) ["sample.model"])
|
||||||
|
|
||||||
|
(setv element (od.field-inherit "module.xml_view"))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "field")
|
||||||
|
(o-assert-equal (get (. element attrs) "name") "inherit_id")
|
||||||
|
(o-assert-equal (get (. element attrs) "ref") "module.xml_view")
|
||||||
|
(o-assert-false (. element children))
|
||||||
|
|
||||||
|
(setv element (od.field-arch))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "field")
|
||||||
|
(o-assert-equal (get (. element attrs) "name") "arch")
|
||||||
|
(o-assert-equal (get (. element attrs) "type") "xml")
|
||||||
|
(o-assert-false (. element children)))
|
||||||
|
|
||||||
|
(defn test-view [self]
|
||||||
|
" Test view function "
|
||||||
|
(setv element (od.view "view_xmlid" []))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "record")
|
||||||
|
(o-assert-equal (get (. element attrs) "id") "view_xmlid")
|
||||||
|
(o-assert-equal (get (. element attrs) "model") "ir.ui.view")
|
||||||
|
(o-assert-false (. element children)))
|
||||||
|
|
||||||
|
(defn test-view-def [self]
|
||||||
|
" Test view def function "
|
||||||
|
(setv element (od.view_def "view_xmlid" "View" "sample.model" []))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "record")
|
||||||
|
(o-assert-equal (get (. element attrs) "id") "view_xmlid")
|
||||||
|
(o-assert-equal (get (. element attrs) "model") "ir.ui.view")
|
||||||
|
(o-assert-equal (len (. element children)) 3)
|
||||||
|
|
||||||
|
(setv child (get (. element children) 0))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "name")
|
||||||
|
(o-assert-equal (. child children) ["View"])
|
||||||
|
|
||||||
|
(setv child (get (. element children) 1))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "model")
|
||||||
|
(o-assert-equal (. child children) ["sample.model"])
|
||||||
|
|
||||||
|
(setv child (get (. element children) 2))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "arch")
|
||||||
|
(o-assert-equal (get (. child attrs) "type") "xml")
|
||||||
|
(o-assert-false (. child children)))
|
||||||
|
|
||||||
|
(defn test-view-new [self]
|
||||||
|
" Test view-new function "
|
||||||
|
(setv element (od.view-new "tree" "sample.model" []))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element.tag) "record")
|
||||||
|
(o-assert-equal (get (. element attrs) "id") "sample_model_view_tree")
|
||||||
|
(o-assert-equal (get (. element attrs) "model") "ir.ui.view")
|
||||||
|
(o-assert-equal (len (. element children)) 3)
|
||||||
|
|
||||||
|
(setv child (get (. element children) 0))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "name")
|
||||||
|
(o-assert-equal (. child children) ["Sample Model Tree"])
|
||||||
|
|
||||||
|
(setv child (get (. element children) 1))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "model")
|
||||||
|
(o-assert-equal (. child children) ["sample.model"])
|
||||||
|
|
||||||
|
(setv child (get (. element children) 2))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "arch")
|
||||||
|
(o-assert-equal (get (. child attrs) "type") "xml")
|
||||||
|
(o-assert-false (. child children)))
|
||||||
|
|
||||||
|
|
||||||
|
(defn test_view_inherit [self]
|
||||||
|
" Test view_inherit function "
|
||||||
|
(setv element (od.view-inherit "odoo.addons.module" "sample.model" "parent.view" []))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "record")
|
||||||
|
(o-assert-equal (get (. element attrs) "id") "view_inherit_module")
|
||||||
|
(o-assert-equal (get (. element attrs) "model") "ir.ui.view")
|
||||||
|
(o-assert-equal (len (. element children)) 4)
|
||||||
|
|
||||||
|
(setv child (get (. element children) 0))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "name")
|
||||||
|
(o-assert-equal (. child children) ["Sample Model Adaptations"])
|
||||||
|
|
||||||
|
(setv child (get (. element children) 1))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "model")
|
||||||
|
(o-assert-equal (. child children) ["sample.model"])
|
||||||
|
|
||||||
|
(setv child (get (. element children) 2))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "inherit_id")
|
||||||
|
(o-assert-false (. child children))
|
||||||
|
|
||||||
|
(setv child (get (. element children) 3))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "arch")
|
||||||
|
(o-assert-equal (get (. child attrs) "type") "xml")
|
||||||
|
(o-assert-false (. child children)))
|
||||||
|
|
||||||
|
(defn test-actions-server-code [self]
|
||||||
|
" Test actions-server-code function "
|
||||||
|
(setv element (od.actions-server-code "sample.xmlid" "Code" "sample.model"
|
||||||
|
"record.do_something()"))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "record")
|
||||||
|
(o-assert-equal (get (. element attrs) "id") "sample.xmlid")
|
||||||
|
(o-assert-equal (get (. element attrs) "model") "ir.actions.server")
|
||||||
|
(o-assert-equal (len (. element children)) 4)
|
||||||
|
|
||||||
|
(setv child (get (. element children) 0))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "name")
|
||||||
|
(o-assert-equal (. child children) ["Code"])
|
||||||
|
|
||||||
|
(setv child (get (. element children) 1))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "model_id")
|
||||||
|
(o-assert-equal (get (. child attrs) "ref") "sample.model")
|
||||||
|
(o-assert-false (. child children))
|
||||||
|
|
||||||
|
(setv child (get (. element children) 2))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "state")
|
||||||
|
(o-assert-equal (. child children) ["code"])
|
||||||
|
|
||||||
|
(setv child (get (. element children) 3))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "code")
|
||||||
|
(o-assert-equal (. child children) ["record.do_something()"]))
|
||||||
|
|
||||||
|
(defn test-client-action-multi [self]
|
||||||
|
" Test client_action_multi function "
|
||||||
|
(setv element (od.client-action-multi "sample.xmlid" "Multi" "sample.model" "sample.action"))
|
||||||
|
(o-assert-is-instance element XMLDictElement)
|
||||||
|
(o-assert-equal (. element tag) "record")
|
||||||
|
(o-assert-equal (get (. element attrs) "id") "sample.xmlid")
|
||||||
|
(o-assert-equal (get (. element attrs) "model") "ir.values")
|
||||||
|
(o-assert-equal (len (. element children)) 4)
|
||||||
|
|
||||||
|
(setv child (get (. element children) 0))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "name")
|
||||||
|
(o-assert-equal (. child children) ["Multi"])
|
||||||
|
|
||||||
|
(setv child (get (. element children) 1))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "key2")
|
||||||
|
(o-assert-equal (get (. child attrs) "eval") "'client_action_multi'")
|
||||||
|
(o-assert-false (. child children))
|
||||||
|
|
||||||
|
(setv child (get (. element children) 2))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "model")
|
||||||
|
(o-assert-equal (get (. child attrs) "eval") "'sample.model'")
|
||||||
|
|
||||||
|
(setv child (get (. element children) 3))
|
||||||
|
(o-assert-is-instance child XMLDictElement)
|
||||||
|
(o-assert-equal (. child tag) "field")
|
||||||
|
(o-assert-equal (get (. child attrs) "name") "value")
|
||||||
|
(o-assert-equal (get (. child attrs) "eval") "'ir.actions.server,%d'%sample.action")))
|
||||||
|
|
||||||
|
|
||||||
|
(defmain [] (.main unittest))
|
Loading…
x
Reference in New Issue
Block a user