unittest_views_editforms.py 7.04 KB
Newer Older
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
1
2
from logilab.common.testlib import unittest_main
from cubicweb.devtools.apptest import EnvBasedTC
3
from cubicweb.devtools.testlib import WebTest
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
4
from cubicweb.web.views.editforms import AutomaticEntityForm as AEF
5
from cubicweb.web.formwidgets import AutoCompletionWidget
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
6
7
8
9
10
def rbc(entity, category):
    return [(rschema.type, x) for rschema, tschemas, x in AEF.erelations_by_category(entity, category)]

class AutomaticEntityFormTC(EnvBasedTC):

11
    def test_custom_widget(self):
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
12
13
        AEF.rwidgets.tag_relation(AutoCompletionWidget,
                                  ('CWUser', 'login', '*'), 'subject')
14
15
16
17
        form = self.vreg.select_object('forms', 'edition', self.request(), None,
                                       entity=self.user())
        field = form.field_by_name('login')
        self.assertIsInstance(field.widget, AutoCompletionWidget)
18
        AEF.rwidgets.del_rtag('login', 'subject', 'CWUser')
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
19

20

sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
21
22
23
24
    def test_euser_relations_by_category(self):
        #for (rtype, role, stype, otype), tag in AEF.rcategories._tagdefs.items():
        #    if rtype == 'tags':
        #        print rtype, role, stype, otype, ':', tag
25
        e = self.etype_instance('CWUser')
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
        # see custom configuration in views.euser
        self.assertEquals(rbc(e, 'primary'),
                          [('login', 'subject'),
                           ('upassword', 'subject'),
                           ('in_group', 'subject'),
                           ('in_state', 'subject'),
                           ('eid', 'subject'),
                           ])
        self.assertListEquals(rbc(e, 'secondary'),
                              [('firstname', 'subject'),
                               ('surname', 'subject')
                               ])
        self.assertListEquals(rbc(e, 'metadata'),
                              [('last_login_time', 'subject'),
                               ('created_by', 'subject'),
                               ('creation_date', 'subject'),
                               ('modification_date', 'subject'),
                               ('owned_by', 'subject'),
                               ('bookmarked_by', 'object'),
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
45
                               ])
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
46
47
48
49
50
51
        self.assertListEquals(rbc(e, 'generic'),
                              [('primary_email', 'subject'),
                               ('use_email', 'subject'),
                               ('connait', 'subject'),
                               ('checked_by', 'object'),
                               ])
52
        # owned_by is defined both as subject and object relations on CWUser
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
53
        self.assertListEquals(rbc(e, 'generated'),
54
55
56
                              [('has_text', 'subject'),
                               ('identity', 'subject'),
                               ('is', 'subject'),
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
57
58
59
60
61
62
                               ('is_instance_of', 'subject'),
                               ('tags', 'object'),
                               ('for_user', 'object'),
                               ('created_by', 'object'),
                               ('wf_info_for', 'object'),
                               ('owned_by', 'object'),
63
                               ('identity', 'object'),
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
64
                               ])
65
66

    def test_inlined_view(self):
67
68
        self.failUnless(AEF.rinlined.etype_rtag('CWUser', 'use_email', 'subject'))
        self.failIf(AEF.rinlined.etype_rtag('CWUser', 'primary_email', 'subject'))
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
69

sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
    def test_personne_relations_by_category(self):
        e = self.etype_instance('Personne')
        self.assertListEquals(rbc(e, 'primary'),
                              [('nom', 'subject'),
                               ('eid', 'subject')
                               ])
        self.assertListEquals(rbc(e, 'secondary'),
                              [('prenom', 'subject'),
                               ('sexe', 'subject'),
                               ('promo', 'subject'),
                               ('titre', 'subject'),
                               ('ass', 'subject'),
                               ('web', 'subject'),
                               ('tel', 'subject'),
                               ('fax', 'subject'),
                               ('datenaiss', 'subject'),
                               ('test', 'subject'),
                               ('description', 'subject'),
                               ('salary', 'subject')
                               ])
        self.assertListEquals(rbc(e, 'metadata'),
                              [('created_by', 'subject'),
                               ('creation_date', 'subject'),
                               ('modification_date', 'subject'),
                               ('owned_by', 'subject'),
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
95
                               ])
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
96
97
98
99
100
        self.assertListEquals(rbc(e, 'generic'),
                              [('travaille', 'subject'),
                               ('connait', 'object')
                               ])
        self.assertListEquals(rbc(e, 'generated'),
101
102
103
                              [('has_text', 'subject'),
                               ('identity', 'subject'),
                               ('is', 'subject'),
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
104
                               ('is_instance_of', 'subject'),
105
                               ('identity', 'object'),
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
106
                               ])
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
107

108
    def test_edition_form(self):
109
        rset = self.execute('CWUser X LIMIT 1')
110
111
112
113
114
115
        form = self.vreg.select_object('forms', 'edition', rset.req, rset,
                                       row=0, col=0)
        # should be also selectable by specifying entity
        self.vreg.select_object('forms', 'edition', self.request(), None,
                                entity=rset.get_entity(0, 0))
        self.failIf(any(f for f in form.fields if f is None))
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
116
117


118
119
class FormViewsTC(WebTest):
    def test_delete_conf_formview(self):
120
        rset = self.execute('CWGroup X')
121
        self.view('deleteconf', rset, template=None).source
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
122

123
    def test_automatic_edition_formview(self):
124
        rset = self.execute('CWUser X')
125
        self.view('edition', rset, row=0, template=None).source
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
126

127
    def test_automatic_edition_formview(self):
128
        rset = self.execute('CWUser X')
129
        self.view('copy', rset, row=0, template=None).source
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
130

131
    def test_automatic_creation_formview(self):
132
        self.view('creation', None, etype='CWUser', template=None).source
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
133

134
    def test_automatic_muledit_formview(self):
135
        rset = self.execute('CWUser X')
136
        self.view('muledit', rset, template=None).source
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
137

138
    def test_automatic_reledit_formview(self):
139
        rset = self.execute('CWUser X')
140
        self.view('reledit', rset, row=0, rtype='login', template=None).source
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
141

142
    def test_automatic_inline_edit_formview(self):
143
144
        geid = self.execute('CWGroup X LIMIT 1')[0][0]
        rset = self.execute('CWUser X LIMIT 1')
145
        self.view('inline-edition', rset, row=0, rtype='in_group', peid=geid, template=None).source
sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
146

147
    def test_automatic_inline_creation_formview(self):
148
149
        geid = self.execute('CWGroup X LIMIT 1')[0][0]
        self.view('inline-creation', None, etype='CWUser', rtype='in_group', peid=geid, template=None).source
150

sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
151

sylvain.thenault@logilab.fr's avatar
sylvain.thenault@logilab.fr committed
152
153
if __name__ == '__main__':
    unittest_main()