11 from cubicweb.common.mttransforms import HAS_TAL |
9 from cubicweb.common.mttransforms import HAS_TAL |
12 from cubicweb.web.widgets import widget, AutoCompletionWidget |
10 from cubicweb.web.widgets import widget, AutoCompletionWidget |
13 |
11 |
14 |
12 |
15 class WidgetsTC(EnvBasedTC): |
13 class WidgetsTC(EnvBasedTC): |
16 |
14 |
17 def get_widget(self, etype, rname, rtype): |
15 def get_widget(self, etype, rname, rtype): |
18 rschema = self.schema[rname] |
16 rschema = self.schema[rname] |
19 return widget(self.vreg, etype, rschema, rtype, role='subject') |
17 return widget(self.vreg, etype, rschema, rtype, role='subject') |
20 |
18 |
21 |
19 |
22 def test_hidden_widget(self): |
20 def test_hidden_widget(self): |
23 w = self.get_widget('State', 'eid', 'Int') |
21 w = self.get_widget('State', 'eid', 'Int') |
24 self.assertEquals(w.name, 'eid') |
22 self.assertEquals(w.name, 'eid') |
25 self.assertEquals(w.render_example(self.request()), '') |
23 self.assertEquals(w.render_example(self.request()), '') |
185 '<input type="text" name="tel:X" value="0123456789" accesskey="t" id="tel:X" maxlength="15" size="5" tabindex="0"/>') |
183 '<input type="text" name="tel:X" value="0123456789" accesskey="t" id="tel:X" maxlength="15" size="5" tabindex="0"/>') |
186 |
184 |
187 def test_datetime_widget(self): |
185 def test_datetime_widget(self): |
188 w = self.get_widget('Personne', 'datenaiss', 'Datetime') |
186 w = self.get_widget('Personne', 'datenaiss', 'Datetime') |
189 self.assertEquals(w.name, 'datenaiss') |
187 self.assertEquals(w.name, 'datenaiss') |
190 example = '%s, or without time: %s' % ( |
188 example = '%s, or without time: %s' % ( |
191 NOW.strftime(self.vreg.property_value('ui.datetime-format')), |
189 NOW.strftime(self.vreg.property_value('ui.datetime-format')), |
192 NOW.strftime(self.vreg.property_value('ui.date-format'))) |
190 NOW.strftime(self.vreg.property_value('ui.date-format'))) |
193 self.assertEquals(w.render_example(self.request()), example) |
191 self.assertEquals(w.render_example(self.request()), example) |
194 self.assertDictEquals(w.attrs, {'accesskey': 'd', 'maxlength': 16, 'size': 16}) |
192 self.assertDictEquals(w.attrs, {'accesskey': 'd', 'maxlength': 16, 'size': 16}) |
195 entity = self.etype_instance('Personne') |
193 entity = self.etype_instance('Personne') |
229 self.assertEquals(w.required(entity), False) |
227 self.assertEquals(w.required(entity), False) |
230 self.assertEquals(w.render(entity), '') |
228 self.assertEquals(w.render(entity), '') |
231 self.assertEquals(w.edit_render(entity), |
229 self.assertEquals(w.edit_render(entity), |
232 u'<input type="hidden" name="edits-salary:X" value="__cubicweb_internal_field__"/>\n' |
230 u'<input type="hidden" name="edits-salary:X" value="__cubicweb_internal_field__"/>\n' |
233 '<input type="text" name="salary:X" value="" accesskey="s" id="salary:X" maxlength="15" size="5" tabindex="0"/>') |
231 '<input type="text" name="salary:X" value="" accesskey="s" id="salary:X" maxlength="15" size="5" tabindex="0"/>') |
234 |
232 |
235 |
233 |
236 def test_float_widget_previous_value(self): |
234 def test_float_widget_previous_value(self): |
237 w = self.get_widget('Personne', 'salary', 'Float') |
235 w = self.get_widget('Personne', 'salary', 'Float') |
238 self.assertEquals(w.name, 'salary') |
236 self.assertEquals(w.name, 'salary') |
239 format = self.vreg.property_value('ui.float-format') |
237 format = self.vreg.property_value('ui.float-format') |
240 self.assertEquals(w.render_example(self.request()), format % 1.23) |
238 self.assertEquals(w.render_example(self.request()), format % 1.23) |
312 self.assertEquals(w.render(entity), '') |
310 self.assertEquals(w.render(entity), '') |
313 |
311 |
314 self.assertTextEquals(w.edit_render(entity), |
312 self.assertTextEquals(w.edit_render(entity), |
315 u'<input type="hidden" name="edits-nom:X" value="__cubicweb_internal_field__"/>\n' |
313 u'<input type="hidden" name="edits-nom:X" value="__cubicweb_internal_field__"/>\n' |
316 u'<input type="text" name="nom:X" value="" cubicweb:dataurl="http://testing.fr/cubicweb/json?pageid=None&mode=remote&fname=getnames" class="widget required" id="nom:X" tabindex="0" cubicweb:loadtype="auto" cubicweb:wdgtype="SuggestField" cubicweb:accesskey="n" cubicweb:maxlength="64" cubicweb:size="40" />') |
314 u'<input type="text" name="nom:X" value="" cubicweb:dataurl="http://testing.fr/cubicweb/json?pageid=None&mode=remote&fname=getnames" class="widget required" id="nom:X" tabindex="0" cubicweb:loadtype="auto" cubicweb:wdgtype="SuggestField" cubicweb:accesskey="n" cubicweb:maxlength="64" cubicweb:size="40" />') |
317 |
315 |
318 finally: |
316 finally: |
319 del entity.widgets['nom'] |
317 del entity.widgets['nom'] |
320 |
318 |
321 |
319 |
322 def test_autocompletion_widget_previous_value(self): |
320 def test_autocompletion_widget_previous_value(self): |
335 self.assertEquals(w.required(entity), True) |
333 self.assertEquals(w.required(entity), True) |
336 self.assertEquals(w.render(entity), '') |
334 self.assertEquals(w.render(entity), '') |
337 self.assertTextEquals(w.edit_render(entity), |
335 self.assertTextEquals(w.edit_render(entity), |
338 u'<input type="hidden" name="edits-nom:X" value="__cubicweb_internal_field__"/>\n' |
336 u'<input type="hidden" name="edits-nom:X" value="__cubicweb_internal_field__"/>\n' |
339 u'<input type="text" name="nom:X" value="a name" cubicweb:dataurl="http://testing.fr/cubicweb/json?pageid=None&mode=remote&fname=getnames" class="widget required" id="nom:X" tabindex="0" cubicweb:loadtype="auto" cubicweb:wdgtype="SuggestField" cubicweb:accesskey="n" cubicweb:maxlength="64" cubicweb:size="40" />') |
337 u'<input type="text" name="nom:X" value="a name" cubicweb:dataurl="http://testing.fr/cubicweb/json?pageid=None&mode=remote&fname=getnames" class="widget required" id="nom:X" tabindex="0" cubicweb:loadtype="auto" cubicweb:wdgtype="SuggestField" cubicweb:accesskey="n" cubicweb:maxlength="64" cubicweb:size="40" />') |
340 |
338 |
341 finally: |
339 finally: |
342 del entity.widgets['nom'] |
340 del entity.widgets['nom'] |
343 |
341 |
344 |
342 |
345 def test_nonregr_float_widget_with_none(self): |
343 def test_nonregr_float_widget_with_none(self): |
363 entity = self.etype_instance('Personne', self.request()) |
361 entity = self.etype_instance('Personne', self.request()) |
364 entity.widgets['travaille'] = 'AutoCompletionWidget' |
362 entity.widgets['travaille'] = 'AutoCompletionWidget' |
365 entity.autocomplete_initfuncs = {'nom' : 'getnames'} |
363 entity.autocomplete_initfuncs = {'nom' : 'getnames'} |
366 w = self.get_widget(entity, 'travaille', 'Societe') |
364 w = self.get_widget(entity, 'travaille', 'Societe') |
367 self.failUnless(isinstance(w, AutoCompletionWidget)) |
365 self.failUnless(isinstance(w, AutoCompletionWidget)) |
368 |
366 |
369 |
367 |
370 if __name__ == '__main__': |
368 if __name__ == '__main__': |
371 unittest_main() |
369 unittest_main() |