web/test/unittest_form.py
changeset 2773 b2530e3e0afb
parent 2755 e69a4077ffb4
child 2968 0e3460341023
equal deleted inserted replaced
2767:58c519e5a31f 2773:b2530e3e0afb
    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)