10 from xml.etree.ElementTree import fromstring |
10 from xml.etree.ElementTree import fromstring |
11 |
11 |
12 from logilab.common.testlib import unittest_main, mock_object |
12 from logilab.common.testlib import unittest_main, mock_object |
13 |
13 |
14 from cubicweb import Binary |
14 from cubicweb import Binary |
15 from cubicweb.devtools.testlib import WebTest |
15 from cubicweb.devtools.testlib import CubicWebTC |
16 from cubicweb.web.formfields import (IntField, StringField, RichTextField, |
16 from cubicweb.web.formfields import (IntField, StringField, RichTextField, |
17 DateTimeField, DateTimePicker, |
17 DateTimeField, DateTimePicker, |
18 FileField, EditableFileField) |
18 FileField, EditableFileField) |
19 from cubicweb.web.formwidgets import PasswordInput, Input |
19 from cubicweb.web.formwidgets import PasswordInput, Input |
20 from cubicweb.web.views.forms import EntityFieldsForm, FieldsForm |
20 from cubicweb.web.views.forms import EntityFieldsForm, FieldsForm |
21 from cubicweb.web.views.workflow import ChangeStateForm |
21 from cubicweb.web.views.workflow import ChangeStateForm |
22 from cubicweb.web.views.formrenderers import FormRenderer |
22 from cubicweb.web.views.formrenderers import FormRenderer |
23 |
23 |
24 |
24 |
25 class FieldsFormTC(WebTest): |
25 class FieldsFormTC(CubicWebTC): |
26 |
26 |
27 def test_form_field_format(self): |
27 def test_form_field_format(self): |
28 form = FieldsForm(self.request(), None) |
28 form = FieldsForm(self.request(), None) |
29 self.assertEquals(form.form_field_format(None), 'text/html') |
29 self.assertEquals(form.form_field_format(None), 'text/html') |
30 self.execute('INSERT CWProperty X: X pkey "ui.default-text-format", X value "text/rest", X for_user U WHERE U login "admin"') |
30 self.execute('INSERT CWProperty X: X pkey "ui.default-text-format", X value "text/rest", X for_user U WHERE U login "admin"') |
31 self.commit() |
31 self.commit() |
32 self.assertEquals(form.form_field_format(None), 'text/rest') |
32 self.assertEquals(form.form_field_format(None), 'text/rest') |
33 |
33 |
34 |
34 |
35 class EntityFieldsFormTC(WebTest): |
35 class EntityFieldsFormTC(CubicWebTC): |
36 |
36 |
37 def setUp(self): |
37 def setUp(self): |
38 super(EntityFieldsFormTC, self).setUp() |
38 super(EntityFieldsFormTC, self).setUp() |
39 self.req = self.request() |
39 self.req = self.request() |
40 self.entity = self.user(self.req) |
40 self.entity = self.user(self.req) |
53 self.failIf(b.eid in unrelated, unrelated) |
53 self.failIf(b.eid in unrelated, unrelated) |
54 unrelated = [reid for rview, reid in form2.object_relation_vocabulary('tags')] |
54 unrelated = [reid for rview, reid in form2.object_relation_vocabulary('tags')] |
55 self.failIf(t.eid in unrelated, unrelated) |
55 self.failIf(t.eid in unrelated, unrelated) |
56 |
56 |
57 def test_form_field_vocabulary_new_entity(self): |
57 def test_form_field_vocabulary_new_entity(self): |
58 e = self.etype_instance('CWUser') |
58 e = self.vreg['etypes'].etype_class('CWUser')(self.request()) |
59 form = EntityFieldsForm(self.request(), None, entity=e) |
59 form = EntityFieldsForm(e.req, None, entity=e) |
60 unrelated = [rview for rview, reid in form.subject_relation_vocabulary('in_group')] |
60 unrelated = [rview for rview, reid in form.subject_relation_vocabulary('in_group')] |
61 # should be default groups but owners, i.e. managers, users, guests |
61 # should be default groups but owners, i.e. managers, users, guests |
62 self.assertEquals(unrelated, [u'guests', u'managers', u'users']) |
62 self.assertEquals(unrelated, [u'guests', u'managers', u'users']) |
63 |
63 |
64 def test_subject_in_state_vocabulary(self): |
64 def test_subject_in_state_vocabulary(self): |
65 # on a new entity |
65 # on a new entity |
66 e = self.etype_instance('CWUser') |
66 e = self.vreg['etypes'].etype_class('CWUser')(self.request()) |
67 form = EntityFieldsForm(self.request(), None, entity=e) |
67 form = EntityFieldsForm(e.req, None, entity=e) |
68 states = list(form.subject_in_state_vocabulary('in_state')) |
68 states = list(form.subject_in_state_vocabulary('in_state')) |
69 self.assertEquals(len(states), 1) |
69 self.assertEquals(len(states), 1) |
70 self.assertEquals(states[0][0], u'activated') # list of (combobox view, state eid) |
70 self.assertEquals(states[0][0], u'activated') # list of (combobox view, state eid) |
71 # on an existant entity |
71 # on an existant entity |
72 e = self.user() |
72 e = self.user() |
73 form = EntityFieldsForm(self.request(), None, entity=e) |
73 form = EntityFieldsForm(e.req, None, entity=e) |
74 states = list(form.subject_in_state_vocabulary('in_state')) |
74 states = list(form.subject_in_state_vocabulary('in_state')) |
75 self.assertEquals(len(states), 1) |
75 self.assertEquals(len(states), 1) |
76 self.assertEquals(states[0][0], u'deactivated') # list of (combobox view, state eid) |
76 self.assertEquals(states[0][0], u'deactivated') # list of (combobox view, state eid) |
77 |
77 |
78 def test_consider_req_form_params(self): |
78 def test_consider_req_form_params(self): |
79 e = self.etype_instance('CWUser') |
79 e = self.vreg['etypes'].etype_class('CWUser')(self.request()) |
80 e.eid = 'A' |
80 e.eid = 'A' |
81 form = EntityFieldsForm(self.request(login=u'toto'), None, entity=e) |
81 form = EntityFieldsForm(self.request(login=u'toto'), None, entity=e) |
82 field = StringField(name='login', eidparam=True) |
82 field = StringField(name='login', eidparam=True) |
83 form.append_field(field) |
83 form.append_field(field) |
84 form.form_build_context({}) |
84 form.form_build_context({}) |
85 self.assertEquals(form.form_field_display_value(field, {}), 'toto') |
85 self.assertEquals(form.form_field_display_value(field, {}), 'toto') |
86 |
86 |
87 |
87 |
88 def test_linkto_field_duplication(self): |
88 def test_linkto_field_duplication(self): |
89 e = self.etype_instance('CWUser') |
89 e = self.vreg['etypes'].etype_class('CWUser')(self.request()) |
90 e.eid = 'A' |
90 e.eid = 'A' |
91 e.req = self.req |
91 e.req = self.req |
92 geid = self.execute('CWGroup X WHERE X name "users"')[0][0] |
92 geid = self.execute('CWGroup X WHERE X name "users"')[0][0] |
93 self.req.form['__linkto'] = 'in_group:%s:subject' % geid |
93 self.req.form['__linkto'] = 'in_group:%s:subject' % geid |
94 form = self.vreg['forms'].select('edition', self.req, entity=e) |
94 form = self.vreg['forms'].select('edition', self.req, entity=e) |