[IMP][FIX]Hy Odoo : test whole Odoo DSL + fixes

This commit is contained in:
Fabien BOURGEOIS 2022-11-02 18:07:24 +01:00
parent 7977739967
commit 85ecf8d809
4 changed files with 299 additions and 4 deletions

View File

@ -6,3 +6,4 @@ clean:
.PHONY: test
test:
hy hy_odoo/tests/test_xml.hy
hy hy_odoo/tests/test_odoo.hy

View File

@ -34,12 +34,13 @@
; XML helpers functions and macros
(defn odoo [children] (xmlroot (xmln "odoo" {} children)))
(defn odoo [children] (xmlroot {"tag" "odoo" "attrs" {} "children" children}))
(defn data [#* args]
"Special data node, allow optional args on data tag"
(when (= (len args) 1) (setv args (.insert (list args) 0 {})))
(xmln "data" args))
(when (= (len args) 1) (do (setv args (list args))
(.insert args 0 {})))
(xmln "data" #* args))
; Aliases
(defn function [#* args] (xmln "function" #*args))

293
hy_odoo/tests/test_odoo.hy Normal file
View 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))

View File

@ -18,7 +18,7 @@ class install(install):
setup(
name="hy_odoo",
version="0.8.2pre",
version="0.8.3pre",
packages=find_packages(),
package_data={
'hy_odoo': ['*.hy'],