web/test/unittest_form.py
branchstable
changeset 6340 470d8e828fda
parent 5914 dc5a77a2e485
child 6637 6bbfc628555b
equal deleted inserted replaced
6339:bdc3dc94d744 6340:470d8e828fda
    34 
    34 
    35 class FieldsFormTC(CubicWebTC):
    35 class FieldsFormTC(CubicWebTC):
    36 
    36 
    37     def test_form_field_format(self):
    37     def test_form_field_format(self):
    38         form = FieldsForm(self.request(), None)
    38         form = FieldsForm(self.request(), None)
    39         self.assertEquals(StringField().format(form), 'text/html')
    39         self.assertEqual(StringField().format(form), 'text/html')
    40         self.execute('INSERT CWProperty X: X pkey "ui.default-text-format", X value "text/rest", X for_user U WHERE U login "admin"')
    40         self.execute('INSERT CWProperty X: X pkey "ui.default-text-format", X value "text/rest", X for_user U WHERE U login "admin"')
    41         self.commit()
    41         self.commit()
    42         self.assertEquals(StringField().format(form), 'text/rest')
    42         self.assertEqual(StringField().format(form), 'text/rest')
    43 
    43 
    44 
    44 
    45 class EntityFieldsFormTC(CubicWebTC):
    45 class EntityFieldsFormTC(CubicWebTC):
    46 
    46 
    47     def setUp(self):
    47     def setUp(self):
    68     def test_form_field_vocabulary_new_entity(self):
    68     def test_form_field_vocabulary_new_entity(self):
    69         e = self.vreg['etypes'].etype_class('CWUser')(self.request())
    69         e = self.vreg['etypes'].etype_class('CWUser')(self.request())
    70         form = self.vreg['forms'].select('edition', self.req, entity=e)
    70         form = self.vreg['forms'].select('edition', self.req, entity=e)
    71         unrelated = [rview for rview, reid in form.field_by_name('in_group', 'subject').choices(form)]
    71         unrelated = [rview for rview, reid in form.field_by_name('in_group', 'subject').choices(form)]
    72         # should be default groups but owners, i.e. managers, users, guests
    72         # should be default groups but owners, i.e. managers, users, guests
    73         self.assertEquals(unrelated, [u'guests', u'managers', u'users'])
    73         self.assertEqual(unrelated, [u'guests', u'managers', u'users'])
    74 
    74 
    75     def test_consider_req_form_params(self):
    75     def test_consider_req_form_params(self):
    76         e = self.vreg['etypes'].etype_class('CWUser')(self.request())
    76         e = self.vreg['etypes'].etype_class('CWUser')(self.request())
    77         e.eid = 'A'
    77         e.eid = 'A'
    78         form = EntityFieldsForm(self.request(login=u'toto'), None, entity=e)
    78         form = EntityFieldsForm(self.request(login=u'toto'), None, entity=e)
    79         field = StringField(name='login', role='subject', eidparam=True)
    79         field = StringField(name='login', role='subject', eidparam=True)
    80         form.append_field(field)
    80         form.append_field(field)
    81         form.build_context({})
    81         form.build_context({})
    82         self.assertEquals(field.widget.values(form, field), (u'toto',))
    82         self.assertEqual(field.widget.values(form, field), (u'toto',))
    83 
    83 
    84 
    84 
    85     def test_linkto_field_duplication(self):
    85     def test_linkto_field_duplication(self):
    86         e = self.vreg['etypes'].etype_class('CWUser')(self.request())
    86         e = self.vreg['etypes'].etype_class('CWUser')(self.request())
    87         e.eid = 'A'
    87         e.eid = 'A'
   142         state = self.vreg['etypes'].etype_class('State')(self.req)
   142         state = self.vreg['etypes'].etype_class('State')(self.req)
   143         state.eid = 'S'
   143         state.eid = 'S'
   144         form = RTFForm(self.req, redirect_path='perdu.com', entity=state)
   144         form = RTFForm(self.req, redirect_path='perdu.com', entity=state)
   145         # make it think it can use fck editor anyway
   145         # make it think it can use fck editor anyway
   146         form.field_by_name('description', 'subject').format = lambda x: 'text/html'
   146         form.field_by_name('description', 'subject').format = lambda x: 'text/html'
   147         self.assertTextEquals(self._render_entity_field('description', form),
   147         self.assertMultiLineEqual(self._render_entity_field('description', form),
   148                               expected % {'eid': state.eid})
   148                               expected % {'eid': state.eid})
   149 
   149 
   150 
   150 
   151     def test_richtextfield_1(self):
   151     def test_richtextfield_1(self):
   152         self.req.use_fckeditor = lambda: False
   152         self.req.use_fckeditor = lambda: False
   172                                            eidparam=True, role='subject'),
   172                                            eidparam=True, role='subject'),
   173                 eidparam=True, role='subject')
   173                 eidparam=True, role='subject')
   174         file = self.req.create_entity('File', data_name=u"pouet.txt", data_encoding=u'UTF-8',
   174         file = self.req.create_entity('File', data_name=u"pouet.txt", data_encoding=u'UTF-8',
   175                                data=Binary('new widgets system'))
   175                                data=Binary('new widgets system'))
   176         form = FFForm(self.req, redirect_path='perdu.com', entity=file)
   176         form = FFForm(self.req, redirect_path='perdu.com', entity=file)
   177         self.assertTextEquals(self._render_entity_field('data', form),
   177         self.assertMultiLineEqual(self._render_entity_field('data', form),
   178                               '''<input id="data-subject:%(eid)s" name="data-subject:%(eid)s" tabindex="1" type="file" value="" />
   178                               '''<input id="data-subject:%(eid)s" name="data-subject:%(eid)s" tabindex="1" type="file" value="" />
   179 <a href="javascript: toggleVisibility(&#39;data-subject:%(eid)s-advanced&#39;)" title="show advanced fields"><img src="http://testing.fr/cubicweb/data/puce_down.png" alt="show advanced fields"/></a>
   179 <a href="javascript: toggleVisibility(&#39;data-subject:%(eid)s-advanced&#39;)" title="show advanced fields"><img src="http://testing.fr/cubicweb/data/puce_down.png" alt="show advanced fields"/></a>
   180 <div id="data-subject:%(eid)s-advanced" class="hidden">
   180 <div id="data-subject:%(eid)s-advanced" class="hidden">
   181 <label for="data_format-subject:%(eid)s">data_format</label><input id="data_format-subject:%(eid)s" maxlength="50" name="data_format-subject:%(eid)s" size="45" tabindex="2" type="text" value="text/plain" /><br/>
   181 <label for="data_format-subject:%(eid)s">data_format</label><input id="data_format-subject:%(eid)s" maxlength="50" name="data_format-subject:%(eid)s" size="45" tabindex="2" type="text" value="text/plain" /><br/>
   182 <label for="data_encoding-subject:%(eid)s">data_encoding</label><input id="data_encoding-subject:%(eid)s" maxlength="20" name="data_encoding-subject:%(eid)s" size="20" tabindex="3" type="text" value="UTF-8" /><br/>
   182 <label for="data_encoding-subject:%(eid)s">data_encoding</label><input id="data_encoding-subject:%(eid)s" maxlength="20" name="data_encoding-subject:%(eid)s" size="20" tabindex="3" type="text" value="UTF-8" /><br/>
   183 </div>
   183 </div>
   184 <br/>
   184 <br/>
   185 <input name="data-subject__detach:%(eid)s" type="checkbox" />
   185 <input name="data-subject__detach:%(eid)s" type="checkbox" />
   186 detach attached file
   186 detach attached file''' % {'eid': file.eid})
   187 ''' % {'eid': file.eid})
       
   188 
   187 
   189 
   188 
   190     def test_editablefilefield(self):
   189     def test_editablefilefield(self):
   191         class EFFForm(EntityFieldsForm):
   190         class EFFForm(EntityFieldsForm):
   192             data = EditableFileField(
   191             data = EditableFileField(
   196                                            eidparam=True, role='subject'),
   195                                            eidparam=True, role='subject'),
   197                 eidparam=True, role='subject')
   196                 eidparam=True, role='subject')
   198         file = self.req.create_entity('File', data_name=u"pouet.txt", data_encoding=u'UTF-8',
   197         file = self.req.create_entity('File', data_name=u"pouet.txt", data_encoding=u'UTF-8',
   199                                data=Binary('new widgets system'))
   198                                data=Binary('new widgets system'))
   200         form = EFFForm(self.req, redirect_path='perdu.com', entity=file)
   199         form = EFFForm(self.req, redirect_path='perdu.com', entity=file)
   201         self.assertTextEquals(self._render_entity_field('data', form),
   200         self.assertMultiLineEqual(self._render_entity_field('data', form),
   202                               '''<input id="data-subject:%(eid)s" name="data-subject:%(eid)s" tabindex="1" type="file" value="" />
   201                               '''<input id="data-subject:%(eid)s" name="data-subject:%(eid)s" tabindex="1" type="file" value="" />
   203 <a href="javascript: toggleVisibility(&#39;data-subject:%(eid)s-advanced&#39;)" title="show advanced fields"><img src="http://testing.fr/cubicweb/data/puce_down.png" alt="show advanced fields"/></a>
   202 <a href="javascript: toggleVisibility(&#39;data-subject:%(eid)s-advanced&#39;)" title="show advanced fields"><img src="http://testing.fr/cubicweb/data/puce_down.png" alt="show advanced fields"/></a>
   204 <div id="data-subject:%(eid)s-advanced" class="hidden">
   203 <div id="data-subject:%(eid)s-advanced" class="hidden">
   205 <label for="data_format-subject:%(eid)s">data_format</label><input id="data_format-subject:%(eid)s" maxlength="50" name="data_format-subject:%(eid)s" size="45" tabindex="2" type="text" value="text/plain" /><br/>
   204 <label for="data_format-subject:%(eid)s">data_format</label><input id="data_format-subject:%(eid)s" maxlength="50" name="data_format-subject:%(eid)s" size="45" tabindex="2" type="text" value="text/plain" /><br/>
   206 <label for="data_encoding-subject:%(eid)s">data_encoding</label><input id="data_encoding-subject:%(eid)s" maxlength="20" name="data_encoding-subject:%(eid)s" size="20" tabindex="3" type="text" value="UTF-8" /><br/>
   205 <label for="data_encoding-subject:%(eid)s">data_encoding</label><input id="data_encoding-subject:%(eid)s" maxlength="20" name="data_encoding-subject:%(eid)s" size="20" tabindex="3" type="text" value="UTF-8" /><br/>
   214 
   213 
   215     def test_passwordfield(self):
   214     def test_passwordfield(self):
   216         class PFForm(EntityFieldsForm):
   215         class PFForm(EntityFieldsForm):
   217             upassword = PasswordField(eidparam=True, role='subject')
   216             upassword = PasswordField(eidparam=True, role='subject')
   218         form = PFForm(self.req, redirect_path='perdu.com', entity=self.entity)
   217         form = PFForm(self.req, redirect_path='perdu.com', entity=self.entity)
   219         self.assertTextEquals(self._render_entity_field('upassword', form),
   218         self.assertMultiLineEqual(self._render_entity_field('upassword', form),
   220                               '''<input id="upassword-subject:%(eid)s" name="upassword-subject:%(eid)s" tabindex="1" type="password" value="" />
   219                               '''<input id="upassword-subject:%(eid)s" name="upassword-subject:%(eid)s" tabindex="1" type="password" value="" />
   221 <br/>
   220 <br/>
   222 <input name="upassword-subject-confirm:%(eid)s" tabindex="1" type="password" value="" />
   221 <input name="upassword-subject-confirm:%(eid)s" tabindex="1" type="password" value="" />
   223 &#160;
   222 &#160;
   224 <span class="emphasis">confirm password</span>''' % {'eid': self.entity.eid})
   223 <span class="emphasis">confirm password</span>''' % {'eid': self.entity.eid})
   228     #     class DFForm(EntityFieldsForm):
   227     #     class DFForm(EntityFieldsForm):
   229     #         creation_date = DateTimeField(widget=Input)
   228     #         creation_date = DateTimeField(widget=Input)
   230     #     form = DFForm(self.req, entity=self.entity)
   229     #     form = DFForm(self.req, entity=self.entity)
   231     #     init, cur = (fromstring(self._render_entity_field(attr, form)).get('value')
   230     #     init, cur = (fromstring(self._render_entity_field(attr, form)).get('value')
   232     #                  for attr in ('edits-creation_date', 'creation_date'))
   231     #                  for attr in ('edits-creation_date', 'creation_date'))
   233     #     self.assertEquals(init, cur)
   232     #     self.assertEqual(init, cur)
   234 
   233 
   235 if __name__ == '__main__':
   234 if __name__ == '__main__':
   236     unittest_main()
   235     unittest_main()