source: products/quintagroup.transmogrifier.pfm2pfg/trunk/quintagroup/transmogrifier/pfm2pfg/tests/test_import.py @ 329

Last change on this file since 329 was 329, checked in by piv, 18 years ago

realise 0.2

File size: 15.9 KB
Line 
1import unittest
2import os.path
3
4from zope.interface import classProvides, implements
5import transaction
6
7from Products.Five import zcml
8from Products.Five import fiveconfigure
9from Testing import ZopeTestCase as ztc
10
11from Products.PloneTestCase import PloneTestCase as ptc
12from Products.PloneTestCase.layer import onsetup
13
14from collective.transmogrifier.interfaces import ISectionBlueprint, ISection, ITransmogrifier
15
16class Source(object):
17    classProvides(ISectionBlueprint)
18    implements(ISection)
19
20    def __init__(self, transmogrifier, name, options, previous):
21        self.previous = previous
22
23    def __iter__(self):
24        for item in self.previous:
25            yield item
26
27        fname = os.path.join(os.path.dirname(__file__), 'complex_form.xml')
28        xml = file(fname).read()
29        item = dict(
30            _type='PloneFormMailer',
31            _path='complex-form',
32            _files=dict(
33                marshall=dict(
34                    name='.marshall.xml',
35                    data=xml
36                )
37            )
38        )
39        yield item
40
41        fname = os.path.join(os.path.dirname(__file__), 'fieldset_form.xml')
42        xml = file(fname).read()
43        item = dict(
44            _type='PloneFormMailer',
45            _path='fieldset-form',
46            _files=dict(
47                marshall=dict(
48                    name='.marshall.xml',
49                    data=xml
50                )
51            )
52        )
53        yield item
54
55ztc.installProduct('PloneFormGen')
56
57@onsetup
58def setup_product():
59    fiveconfigure.debug_mode = True
60    import quintagroup.transmogrifier.pfm2pfg
61    zcml.load_config('configure.zcml', quintagroup.transmogrifier.pfm2pfg)
62    import quintagroup.transmogrifier.pfm2pfg.tests
63    zcml.load_config('test_import.zcml', quintagroup.transmogrifier.pfm2pfg.tests)
64    fiveconfigure.debug_mode = False
65
66setup_product()
67ptc.setupPloneSite(products=['PloneFormGen'])
68
69class TestImport(ptc.PloneTestCase):
70    """ Test importing of PloneFormGen content.
71    """
72
73    def afterSetUp(self):
74        if 'complex-form' not in self.portal:
75            # run transmogrifier pipeline
76            transmogrifier = ITransmogrifier(self.portal)
77            transmogrifier('test_import')
78
79    def beforeTearDown(self):
80        transaction.commit()
81
82    def test_form_folder(self):
83        self.failUnless('complex-form' in self.portal)
84        form = self.portal['complex-form']
85
86        self.assertEqual(form['title'], 'Publish new content management product or module')
87        self.assertEqual(form.getFormPrologue(), '<p>form prologue</p>')
88        self.assertEqual(form.getFormEpilogue(), '<p>form epilogue</p>')
89        #self.assertEqual(form['thanksPageOverride'], 'string:')
90        #self.assertEqual(form['afterValidationOverride'], 'redirect_to:')
91
92    def test_mailer(self):
93        form = self.portal['complex-form']
94        self.failUnless('mailer' in form)
95        mailer = form['mailer']
96
97        self.assertEqual(mailer['subjectOverride'], 'string:Update Software')
98        self.assertEqual(mailer['recipientOverride'], 'string:test@mail.com')
99        self.assertEqual(mailer['body_type'], 'html')
100
101        self.assertEqual(mailer.created(), form.created())
102        self.assertEqual(mailer.modified(), form.modified())
103
104    def test_thanks_page(self):
105        form = self.portal['complex-form']
106        self.failUnless('thank-you' in form)
107        page = form['thank-you']
108
109        self.assertEqual(page.Title(), 'The form was send to editor.')
110        self.assertEqual(page.getThanksPrologue(), 
111            '<p>Thank you for new content. Our editor will review your request.<br /></p>')
112
113        self.assertEqual(page.created(), form.created())
114        self.assertEqual(page.modified(), form.modified())
115
116    def test_string_field(self):
117        form = self.portal['complex-form']
118        self.failIf('field1' not in form)
119        field = form['field1']
120
121        self.assertEqual(field.getPortalTypeName(), 'FormStringField')
122        self.assertEqual(field['title'], 'String field')
123        self.assertEqual(field.Description(), 'field description')
124        self.assertEqual(field['required'], True)
125        self.assertEqual(field['hidden'], False)
126        self.assertEqual(field['fgDefault'], '')
127        self.assertEqual(field['fgmaxlength'], 255)
128        self.assertEqual(field['fgsize'], 20)
129
130        self.assertEqual(field.created(), form.created())
131        self.assertEqual(field.modified(), form.modified())
132
133    def test_email_field(self):
134        form = self.portal['complex-form']
135        self.failIf('field2' not in form)
136        field = form['field2']
137
138        self.assertEqual(field.getPortalTypeName(), 'FormStringField')
139        self.assertEqual(field['title'], 'Email field')
140        self.assertEqual(field.Description(), '')
141        self.assertEqual(field['required'], True)
142        self.assertEqual(field['hidden'], False)
143        self.assertEqual(field['fgDefault'], 'test@mail.com')
144        self.assertEqual(field['fgmaxlength'], 255)
145        self.assertEqual(field['fgsize'], 20)
146        self.assertEqual(field['fgStringValidator'], 'isEmail')
147
148        self.assertEqual(field.created(), form.created())
149        self.assertEqual(field.modified(), form.modified())
150
151    def test_link_field(self):
152        form = self.portal['complex-form']
153        self.failIf('field3' not in form)
154        field = form['field3']
155
156        self.assertEqual(field.getPortalTypeName(), 'FormStringField')
157        self.assertEqual(field['title'], 'Link field')
158        self.assertEqual(field.Description(), '')
159        self.assertEqual(field['required'], False)
160        self.assertEqual(field['hidden'], False)
161        self.assertEqual(field['fgDefault'], '')
162        self.assertEqual(field['fgmaxlength'], 15)
163        self.assertEqual(field['fgsize'], 20)
164        self.assertEqual(field['fgStringValidator'], 'isURL')
165
166        self.assertEqual(field.created(), form.created())
167        self.assertEqual(field.modified(), form.modified())
168
169    def test_pattern_field(self):
170        form = self.portal['complex-form']
171        self.failIf('field4' not in form)
172        field = form['field4']
173
174        self.assertEqual(field.getPortalTypeName(), 'FormStringField')
175        self.assertEqual(field['title'], 'Pattern field')
176        self.assertEqual(field.Description(), '')
177        self.assertEqual(field['required'], True)
178        self.assertEqual(field['hidden'], True)
179        self.assertEqual(field['fgDefault'], '')
180        self.assertEqual(field['fgmaxlength'], 255)
181        self.assertEqual(field['fgsize'], 20)
182
183        self.assertEqual(field.created(), form.created())
184        self.assertEqual(field.modified(), form.modified())
185
186    def test_textarea_field(self):
187        form = self.portal['complex-form']
188        self.failIf('field5' not in form)
189        field = form['field5']
190
191        self.assertEqual(field.getPortalTypeName(), 'FormTextField')
192        self.assertEqual(field['title'], 'Text area field')
193        self.assertEqual(field.Description(), '')
194        self.assertEqual(field['required'], True)
195        self.assertEqual(field['hidden'], False)
196        self.assertEqual(field.getFgDefault(), '')
197        self.assertEqual(field['fgmaxlength'], 1000)
198        self.assertEqual(field['fgRows'], 5)
199
200        self.assertEqual(field.created(), form.created())
201        self.assertEqual(field.modified(), form.modified())
202
203    def test_rawtextarea_field(self):
204        form = self.portal['complex-form']
205        self.failIf('field6' not in form)
206        field = form['field6']
207
208        self.assertEqual(field.getPortalTypeName(), 'FormTextField')
209        self.assertEqual(field['title'], 'Raw text area field')
210        self.assertEqual(field.Description(), '')
211        self.assertEqual(field['required'], True)
212        self.assertEqual(field['hidden'], False)
213        self.assertEqual(field.getFgDefault(), '')
214        self.assertEqual(field['fgmaxlength'], '0')
215        self.assertEqual(field['fgRows'], 5)
216
217        self.assertEqual(field.created(), form.created())
218        self.assertEqual(field.modified(), form.modified())
219
220    def test_password_field(self):
221        form = self.portal['complex-form']
222        self.failIf('field7' not in form)
223        field = form['field7']
224
225        self.assertEqual(field.getPortalTypeName(), 'FormPasswordField')
226        self.assertEqual(field['title'], 'Password field')
227        self.assertEqual(field.Description(), '')
228        self.assertEqual(field['required'], True)
229        self.assertEqual(field['fgDefault'], '')
230        self.assertEqual(field['fgmaxlength'], 255)
231        self.assertEqual(field['fgsize'], 20)
232
233        self.assertEqual(field.created(), form.created())
234        self.assertEqual(field.modified(), form.modified())
235
236    def test_label_field(self):
237        form = self.portal['complex-form']
238        self.failIf('field8' not in form)
239        field = form['field8']
240
241        self.assertEqual(field.getPortalTypeName(), 'FormRichLabelField')
242        self.assertEqual(field['title'], 'Label field')
243        self.assertEqual(field.Description(), '')
244        self.assertEqual(field['fgDefault'], 'label text')
245
246        self.assertEqual(field.created(), form.created())
247        self.assertEqual(field.modified(), form.modified())
248
249    def test_integer_field(self):
250        form = self.portal['complex-form']
251        self.failIf('field9' not in form)
252        field = form['field9']
253
254        self.assertEqual(field.getPortalTypeName(), 'FormIntegerField')
255        self.assertEqual(field['title'], 'Integer field')
256        self.assertEqual(field.Description(), '')
257        self.assertEqual(field['required'], True)
258        self.assertEqual(field['fgDefault'], '55')
259        self.assertEqual(field['fgmaxlength'], 40)
260        self.assertEqual(field['fgsize'], 20)
261        self.assertEqual(field['minval'], 10)
262        self.assertEqual(field['maxval'], 1000)
263
264        self.assertEqual(field.created(), form.created())
265        self.assertEqual(field.modified(), form.modified())
266
267    def test_float_field(self):
268        form = self.portal['complex-form']
269        self.failIf('field10' not in form)
270        field = form['field10']
271
272        self.assertEqual(field.getPortalTypeName(), 'FormFixedPointField')
273        self.assertEqual(field['title'], 'Float field')
274        self.assertEqual(field.Description(), '')
275        self.assertEqual(field['required'], True)
276        self.assertEqual(field['fgDefault'], '')
277        self.assertEqual(field['fgmaxlength'], 10)
278        self.assertEqual(field['fgsize'], 20)
279
280        self.assertEqual(field.created(), form.created())
281        self.assertEqual(field.modified(), form.modified())
282
283    def test_datetime_field(self):
284        form = self.portal['complex-form']
285        self.failIf('field11' not in form)
286        field = form['field11']
287
288        self.assertEqual(field.getPortalTypeName(), 'FormDateField')
289        self.assertEqual(field['title'], 'Date time field')
290        self.assertEqual(field.Description(), '')
291        self.assertEqual(field['required'], True)
292        self.assertEqual(field['fgDefault'], '2008/10/10 10:10:00 GMT+3')
293        self.assertEqual(field['fgStartingYear'], 2006)
294        self.assertEqual(field['fgEndingYear'], 2010)
295
296        self.assertEqual(field.created(), form.created())
297        self.assertEqual(field.modified(), form.modified())
298
299    def test_file_field(self):
300        form = self.portal['complex-form']
301        self.failIf('field12' not in form)
302        field = form['field12']
303
304        self.assertEqual(field.getPortalTypeName(), 'FormFileField')
305        self.assertEqual(field['title'], 'File field')
306        self.assertEqual(field.Description(), '')
307
308        self.assertEqual(field.created(), form.created())
309        self.assertEqual(field.modified(), form.modified())
310
311    def test_lines_field(self):
312        form = self.portal['complex-form']
313        self.failIf('field13' not in form)
314        field = form['field13']
315
316        self.assertEqual(field.getPortalTypeName(), 'FormLinesField')
317        self.assertEqual(field['title'], 'Lines field')
318        self.assertEqual(field.Description(), '')
319        self.assertEqual(field['required'], True)
320        self.assertEqual(field['fgDefault'], ('first', 'second', 'third'))
321        self.assertEqual(field['fgRows'], 5)
322
323        self.assertEqual(field.created(), form.created())
324        self.assertEqual(field.modified(), form.modified())
325
326    def test_checkbox_field(self):
327        form = self.portal['complex-form']
328        self.failIf('field14' not in form)
329        field = form['field14']
330
331        self.assertEqual(field.getPortalTypeName(), 'FormBooleanField')
332        self.assertEqual(field['title'], 'Checkbox field')
333        self.assertEqual(field.Description(), '')
334        self.assertEqual(field['fgDefault'], True)
335
336        self.assertEqual(field.created(), form.created())
337        self.assertEqual(field.modified(), form.modified())
338
339    def test_list_field(self):
340        form = self.portal['complex-form']
341        self.failIf('field15' not in form)
342        field = form['field15']
343
344        self.assertEqual(field.getPortalTypeName(), 'FormSelectionField')
345        self.assertEqual(field['title'], 'List field')
346        self.assertEqual(field.Description(), '')
347        self.assertEqual(field['fgDefault'], 'first')
348        self.assertEqual(field['fgVocabulary'], ('first|First', 'second|Second', 'third|Third'))
349        self.assertEqual(field['fgFormat'], 'select')
350
351        self.assertEqual(field.created(), form.created())
352        self.assertEqual(field.modified(), form.modified())
353
354    def test_radio_field(self):
355        form = self.portal['complex-form']
356        self.failIf('field16' not in form)
357        field = form['field16']
358
359        self.assertEqual(field.getPortalTypeName(), 'FormSelectionField')
360        self.assertEqual(field['title'], 'Radio field')
361        self.assertEqual(field.Description(), '')
362        self.assertEqual(field['fgDefault'], 'first')
363        self.assertEqual(field['fgVocabulary'], ('first|First', 'second|Second', 'third|Third'))
364        self.assertEqual(field['fgFormat'], 'radio')
365
366        self.assertEqual(field.created(), form.created())
367        self.assertEqual(field.modified(), form.modified())
368
369    def test_multilist_field(self):
370        form = self.portal['complex-form']
371        self.failIf('field17' not in form)
372        field = form['field17']
373
374        self.assertEqual(field.getPortalTypeName(), 'FormMultiSelectionField')
375        self.assertEqual(field['title'], 'Multi list field')
376        self.assertEqual(field.Description(), '')
377        self.assertEqual(field['required'], True)
378        self.assertEqual(field['fgDefault'], ('first', 'third'))
379        self.assertEqual(field['fgVocabulary'], ('first|First', 'second|Second', 'third|Third'))
380        self.assertEqual(field['fgFormat'], 'select')
381        self.assertEqual(field['fgRows'], 5)
382
383        self.assertEqual(field.created(), form.created())
384        self.assertEqual(field.modified(), form.modified())
385
386    def test_multicheckbox_field(self):
387        form = self.portal['complex-form']
388        self.failIf('field18' not in form)
389        field = form['field18']
390
391        self.assertEqual(field.getPortalTypeName(), 'FormMultiSelectionField')
392        self.assertEqual(field['title'], 'Multi checkbox field')
393        self.assertEqual(field.Description(), '')
394        self.assertEqual(field['required'], True)
395        self.assertEqual(field['fgDefault'], ('first', 'third'))
396        self.assertEqual(field['fgVocabulary'], ('first|First', 'second|Second', 'third|Third'))
397        self.assertEqual(field['fgFormat'], 'checkbox')
398
399        self.assertEqual(field.created(), form.created())
400        self.assertEqual(field.modified(), form.modified())
401
402    def test_fieldset(self):
403        self.failIf('fieldset-form' not in self.portal)
404        form = self.portal['fieldset-form']
405        self.assertEqual(form.objectIds(), ['mailer', 'thank-you', 'checkbox', 'datetime', 'Other'])
406
407        fieldset = form['Other']
408        self.assertEqual(fieldset['title'], 'Other')
409        self.assertEqual(fieldset.objectIds(), ['email', 'float', 'string'])
410
411
412def test_suite():
413    suite = unittest.TestSuite()
414    suite.addTest(unittest.makeSuite(TestImport))
415    return suite
Note: See TracBrowser for help on using the repository browser.