43 '') |
47 '') |
44 |
48 |
45 # fields tests ############################################################ |
49 # fields tests ############################################################ |
46 |
50 |
47 def _render_entity_field(self, name, form): |
51 def _render_entity_field(self, name, form): |
|
52 form.form_add_entity_hiddens(form.entity.e_schema) |
48 form.form_build_context({}) |
53 form.form_build_context({}) |
49 form.form_add_entity_hiddens(form.entity.e_schema) |
|
50 return form.field_by_name(name).render(form, self.renderer) |
54 return form.field_by_name(name).render(form, self.renderer) |
51 |
55 |
52 def _test_richtextfield(self, expected): |
56 def _test_richtextfield(self, expected): |
53 class RTFForm(EntityFieldsForm): |
57 class RTFForm(EntityFieldsForm): |
54 content = RichTextField() |
58 content = RichTextField() |
55 card = self.add_entity('Card', title=u"tls sprint fev 2009", |
59 card = self.add_entity('Card', title=u"tls sprint fev 2009", |
56 content=u'<h1>new widgets system</h1>', |
60 content=u'<h1>new widgets system</h1>', |
57 content_format=u'text/html') |
61 content_format=u'text/html') |
58 form = RTFForm(self.req, redirect_path='perdu.com', entity=card) |
62 form = RTFForm(self.req, redirect_path='perdu.com', entity=card) |
59 self.assertTextEquals(self._render_entity_field('content', form), expected) |
63 self.assertTextEquals(self._render_entity_field('content', form), expected % {'eid': card.eid}) |
|
64 |
60 |
65 |
61 def test_richtextfield_1(self): |
66 def test_richtextfield_1(self): |
62 self.req.use_fckeditor = lambda: False |
67 self.req.use_fckeditor = lambda: False |
63 self._test_richtextfield('''<select name="content_format" id="content_format" tabindex="0"> |
68 self._test_richtextfield('''<select name="content_format:%(eid)s" id="content_format:%(eid)s" tabindex="0"> |
64 <option value="text/rest">text/rest</option> |
69 <option value="text/rest">text/rest</option> |
65 <option selected="selected" value="text/html">text/html</option> |
70 <option selected="selected" value="text/html">text/html</option> |
66 <option value="text/plain">text/plain</option> |
71 <option value="text/plain">text/plain</option> |
67 <option value="text/cubicweb-page-template">text/cubicweb-page-template</option> |
72 <option value="text/cubicweb-page-template">text/cubicweb-page-template</option> |
68 </select><textarea tabindex="1" id="content" name="content" onkeypress="autogrow(this)"/>''') |
73 </select><textarea tabindex="1" id="content:%(eid)s" name="content:%(eid)s" onkeypress="autogrow(this)"><h1>new widgets system</h1></textarea>''') |
|
74 |
69 |
75 |
70 def test_richtextfield_2(self): |
76 def test_richtextfield_2(self): |
71 self.req.use_fckeditor = lambda: True |
77 self.req.use_fckeditor = lambda: True |
72 self._test_richtextfield('''<input type="hidden" name="content_format" value="text/html"/><textarea tabindex="0" cubicweb:type="wysiwyg" id="content" name="content" onkeypress="autogrow(this)"/>''') |
78 self._test_richtextfield('''<input type="hidden" name="content_format:%(eid)s" value="text/html"/><textarea tabindex="0" cubicweb:type="wysiwyg" id="content:%(eid)s" name="content:%(eid)s" onkeypress="autogrow(this)"><h1>new widgets system</h1></textarea>''') |
73 |
79 |
74 |
80 |
75 def test_filefield(self): |
81 def test_filefield(self): |
76 class FFForm(EntityFieldsForm): |
82 class FFForm(EntityFieldsForm): |
77 data = FileField(format_field=StringField(name='data_format'), |
83 data = FileField(format_field=StringField(name='data_format'), |
78 encoding_field=StringField(name='data_encoding')) |
84 encoding_field=StringField(name='data_encoding')) |
79 file = self.add_entity('File', name=u"pouet.txt", |
85 file = self.add_entity('File', name=u"pouet.txt", |
80 data=Binary('new widgets system')) |
86 data=Binary('new widgets system')) |
81 form = FFForm(self.req, redirect_path='perdu.com', entity=file) |
87 form = FFForm(self.req, redirect_path='perdu.com', entity=file) |
82 self.assertTextEquals(self._render_entity_field('data', form), |
88 self.assertTextEquals(self._render_entity_field('data', form), |
83 '''<input id="data" type="file" name="data" value="" tabindex="0"/> |
89 '''<input id="data:%(eid)s" type="file" name="data:%(eid)s" value="" tabindex="0"/> |
84 <a href="javascript: toggleVisibility('data-advanced')" title="show advanced fields"><img src="http://testing.fr/cubicweb/data/puce_down.png" alt="show advanced fields"/></a> |
90 <a href="javascript: toggleVisibility('data:%(eid)s-advanced')" title="show advanced fields"><img src="http://testing.fr/cubicweb/data/puce_down.png" alt="show advanced fields"/></a> |
85 <div id="data-advanced" class="hidden"> |
91 <div id="data:%(eid)s-advanced" class="hidden"> |
86 <label for="data_format">data_format</label><input id="data_format" type="text" name="data_format" value="" tabindex="1"/><br/><br/> |
92 <label for="data_format:%(eid)s">data_format</label><input id="data_format:%(eid)s" type="text" name="data_format:%(eid)s" value="text/plain" tabindex="1"/><br/><br/> |
87 <label for="data_encoding">data_encoding</label><input id="data_encoding" type="text" name="data_encoding" value="" tabindex="2"/><br/><br/> |
93 <label for="data_encoding:%(eid)s">data_encoding</label><input id="data_encoding:%(eid)s" type="text" name="data_encoding:%(eid)s" value="UTF-8" tabindex="2"/><br/><br/> |
88 </div>''') |
94 </div> |
|
95 <br/> |
|
96 <input type="checkbox" name="data:594__detach"/> |
|
97 detach attached file |
|
98 ''' % {'eid': file.eid}) |
89 |
99 |
90 |
100 |
91 def test_editablefilefield(self): |
101 def test_editablefilefield(self): |
92 class EFFForm(EntityFieldsForm): |
102 class EFFForm(EntityFieldsForm): |
93 data = EditableFileField(format_field=StringField(name='data_format'), |
103 data = EditableFileField(format_field=StringField(name='data_format'), |
98 return 'text/plain' |
108 return 'text/plain' |
99 file = self.add_entity('File', name=u"pouet.txt", |
109 file = self.add_entity('File', name=u"pouet.txt", |
100 data=Binary('new widgets system')) |
110 data=Binary('new widgets system')) |
101 form = EFFForm(self.req, redirect_path='perdu.com', entity=file) |
111 form = EFFForm(self.req, redirect_path='perdu.com', entity=file) |
102 self.assertTextEquals(self._render_entity_field('data', form), |
112 self.assertTextEquals(self._render_entity_field('data', form), |
103 '''<input id="data" type="file" name="data" value="" tabindex="0"/> |
113 '''<input id="data:%(eid)s" type="file" name="data:%(eid)s" value="" tabindex="0"/> |
104 <a href="javascript: toggleVisibility('data-advanced')" title="show advanced fields"><img src="http://testing.fr/cubicweb/data/puce_down.png" alt="show advanced fields"/></a> |
114 <a href="javascript: toggleVisibility('data:%(eid)s-advanced')" title="show advanced fields"><img src="http://testing.fr/cubicweb/data/puce_down.png" alt="show advanced fields"/></a> |
105 <div id="data-advanced" class="hidden"> |
115 <div id="data:%(eid)s-advanced" class="hidden"> |
106 <label for="data_format">data_format</label><input id="data_format" type="text" name="data_format" value="" tabindex="1"/><br/><br/> |
116 <label for="data_format:%(eid)s">data_format</label><input id="data_format:%(eid)s" type="text" name="data_format:%(eid)s" value="text/plain" tabindex="1"/><br/><br/> |
107 <label for="data_encoding">data_encoding</label><input id="data_encoding" type="text" name="data_encoding" value="" tabindex="2"/><br/><br/> |
117 <label for="data_encoding:%(eid)s">data_encoding</label><input id="data_encoding:%(eid)s" type="text" name="data_encoding:%(eid)s" value="UTF-8" tabindex="2"/><br/><br/> |
108 </div> |
118 </div> |
|
119 <br/> |
|
120 <input type="checkbox" name="data:594__detach"/> |
|
121 detach attached file |
109 <p><b>You can either submit a new file using the browse button above, or choose to remove already uploaded file by checking the "detach attached file" check-box, or edit file content online with the widget below.</b></p> |
122 <p><b>You can either submit a new file using the browse button above, or choose to remove already uploaded file by checking the "detach attached file" check-box, or edit file content online with the widget below.</b></p> |
110 <textarea tabindex="3" name="data" onkeypress="autogrow(this)">new widgets system</textarea>''') |
123 <textarea tabindex="3" name="data:%(eid)s" onkeypress="autogrow(this)">new widgets system</textarea>''' % {'eid': file.eid}) |
|
124 |
111 |
125 |
112 def test_passwordfield(self): |
126 def test_passwordfield(self): |
113 class PFForm(EntityFieldsForm): |
127 class PFForm(EntityFieldsForm): |
114 upassword = StringField(widget=PasswordInput) |
128 upassword = StringField(widget=PasswordInput) |
115 form = PFForm(self.req, redirect_path='perdu.com', entity=self.entity) |
129 form = PFForm(self.req, redirect_path='perdu.com', entity=self.entity) |
116 self.assertTextEquals(self._render_entity_field('upassword', form), |
130 self.assertTextEquals(self._render_entity_field('upassword', form), |
117 '''<input id="upassword" type="password" name="upassword" value="" tabindex="0"/> |
131 '''<input id="upassword:%(eid)s" type="password" name="upassword:%(eid)s" value="__cubicweb_internal_field__" tabindex="0"/> |
118 <br/> |
132 <br/> |
119 <input type="password" id="upassword" name="upassword-confirm" tabindex="0"/> |
133 <input type="password" name="upassword-confirm:%(eid)s" tabindex="0"/> |
120 |
134 |
121 <span class="emphasis">confirm password</span>''') |
135 <span class="emphasis">confirm password</span>''' % {'eid': self.entity.eid}) |
122 |
136 |
123 |
137 |
124 if __name__ == '__main__': |
138 if __name__ == '__main__': |
125 unittest_main() |
139 unittest_main() |