[MERGE] forward port of branch saas-3 up to revid 5060 chs@openerp.com-20140206131116...
[odoo/odoo.git] / openerp / tests / test_view_validation.py
1 # This test can be run stand-alone with something like:
2 # > PYTHONPATH=. python2 openerp/tests/test_view_validation.py
3 from lxml import etree
4 from StringIO import StringIO
5 import unittest2
6
7 from openerp.tools.view_validation import (valid_page_in_book, valid_att_in_form, valid_type_in_colspan,
8                                            valid_type_in_col, valid_att_in_field, valid_att_in_label,
9                                            valid_field_in_graph, valid_field_in_tree
10                                            )
11
12 invalid_form = etree.parse(StringIO('''\
13 <form>
14     <label></label>
15     <group>
16         <div>
17             <page></page>
18             <label colspan="True"></label>
19             <field></field>
20         </div>
21     </group>
22     <notebook>
23         <page>
24             <group col="Two">
25             <div>
26                 <label></label>
27                 <field colspan="Five"> </field>
28                 </div>
29             </group>
30         </page>
31     </notebook>
32 </form>
33 ''')).getroot()
34
35 valid_form = etree.parse(StringIO('''\
36 <form string="">
37     <field name=""></field>
38     <field name=""></field>
39     <notebook>
40         <page>
41             <field name=""></field>
42             <label string=""></label>
43             <field name=""></field>
44         </page>
45         <page>
46             <group colspan="5" col="2">
47                 <label for=""></label>
48                 <label string="" colspan="5"></label>
49             </group>
50         </page>
51     </notebook>
52 </form>
53 ''')).getroot()
54
55 invalid_graph = etree.parse(StringIO('''\
56 <graph>
57     <label/>
58     <group>
59         <div>
60             <field></field>
61             <field></field>
62         </div>
63     </group>
64 </graph>
65 ''')).getroot()
66
67 valid_graph = etree.parse(StringIO('''\
68 <graph string="">
69     <field name=""></field>
70     <field name=""></field>
71 </graph>
72 ''')).getroot()
73
74 invalid_tree = etree.parse(StringIO('''\
75 <tree>
76   <group>
77     <div>
78       <field></field>
79       <field></field>
80     </div>
81   </group>
82 </tree>
83 ''')).getroot()
84
85 valid_tree = etree.parse(StringIO('''\
86 <tree string="">
87     <field name=""></field>
88     <field name=""></field>
89     <button/>
90     <field name=""></field>
91 </tree>
92 ''')).getroot()
93
94
95 class test_view_validation(unittest2.TestCase):
96     """ Test the view validation code (but not the views themselves). """
97
98     def test_page_validation(self):
99         assert not valid_page_in_book(invalid_form)
100         assert valid_page_in_book(valid_form)
101
102     def test_all_field_validation(self):
103         assert not valid_att_in_field(invalid_form)
104         assert valid_att_in_field(valid_form)
105
106     def test_all_label_validation(self):
107         assert not valid_att_in_label(invalid_form)
108         assert valid_att_in_label(valid_form)
109
110     def test_form_string_validation(self):
111         assert valid_att_in_form(valid_form)
112
113     def test_graph_validation(self):
114         assert not valid_field_in_graph(invalid_graph)
115         assert valid_field_in_graph(valid_graph)
116
117     def test_tree_validation(self):
118         assert not valid_field_in_tree(invalid_tree)
119         assert valid_field_in_tree(valid_tree)
120
121     def test_colspan_datatype_validation(self):
122         assert not valid_type_in_colspan(invalid_form)
123         assert valid_type_in_colspan(valid_form)
124
125     def test_col_datatype_validation(self):
126         assert not valid_type_in_col(invalid_form)
127         assert valid_type_in_col(valid_form)
128
129
130 if __name__ == '__main__':
131     unittest2.main()