~viktor-nagy/django-questions/trunk

« back to all changes in this revision

Viewing changes to questions/tests.py

  • Committer: Viktor Nagy
  • Date: 2009-07-20 12:59:31 UTC
  • Revision ID: viktor.nagy@gmail.com-20090720125931-x7epvlwqb3xo3my1
Added new field: FoodPreferenceSelect
ExportCSV view is now running well with a small bug: no "User" column in 
the first row
Fixed a bug in forms as function calls don't accept unicode argument 
names
Fixed Responder.__unicode__

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
class TestCase(test.TestCase):
15
15
    def setUp(self):
16
16
        initial_fields.run()
17
 
        
18
 
 
19
 
class SimpleTextField(TestCase):
20
 
    
21
 
    def setUp(self):
22
 
        super(SimpleTextField, self).setUp()
23
 
        self.field = models.FieldType.objects.get(name='Simple text')
24
 
    
25
 
    def test_simpleText(self):
26
 
        '''
27
 
        Validate when field is not required
28
 
        '''
29
 
        data = {'label': 'Test label',
30
 
                'field': self.field,
31
 
                'required': False,
32
 
                }
33
 
        q = models.Question.objects.create(**data)
34
 
        form = get_form_from_questions('Test', q)
35
 
        instance = form(data={'q_%d' % q.pk: 'hello'})        
36
 
        self.assertTrue(instance.is_valid())
37
 
        instance.save()
38
 
        self.assertEqual(models.Answer.objects.count(), 1)
39
 
        
40
 
    def test_simpleText_required(self):
41
 
        '''
42
 
        Validate required field
43
 
        '''
44
 
        data = {'label': 'Test label',
45
 
                'field': self.field,
46
 
                }
47
 
        q = models.Question.objects.create(**data)
48
 
        form = get_form_from_questions('Test', q,)
49
 
        instance = form(data={'q_%d' % q.pk: None})
50
 
        self.assertFalse(instance.is_valid())
51
 
        self.assertTrue(instance.errors.has_key('q_%d' % q.pk))
52
 
        
53
 
        # and works now
54
 
        instance = form(data={'q_%d' % q.pk: 'hello'})
55
 
        self.assertTrue(instance.is_valid())
56
 
        instance.save()
57
 
        self.assertEqual(models.Answer.objects.count(), 1)
58
 
        
59
 
class CheckboxField(TestCase):
60
 
    
61
 
    def setUp(self):
62
 
        TestCase.setUp(self)
63
 
        self.field = models.FieldType.objects.get(name='Checkbox')
64
 
        
65
 
    def test_default(self):
66
 
        '''
67
 
        Validate required field
68
 
        '''
69
 
        data = {'label': 'Test label',
70
 
                'field': self.field,
71
 
                }
72
 
        q = models.Question.objects.create(**data)
73
 
        form = get_form_from_questions('Test', q,)
74
 
        instance = form(data={'q_%d' % q.pk: None})
75
 
        self.assertFalse(instance.is_valid())
76
 
        self.assertTrue(instance.errors.has_key('q_%d' % q.pk))
77
 
        
78
 
        # and works now
79
 
        instance = form(data={'q_%d' % q.pk: True})
80
 
        self.assertTrue(instance.is_valid())
81
 
        instance.save()
82
 
        self.assertEqual(models.Answer.objects.count(), 1)
83
 
        
84
 
    def test_empty(self):
85
 
        '''
86
 
        Validate when field is not required
87
 
        '''
88
 
        data = {'label': 'Test label',
89
 
                'field': self.field,
90
 
                'required': False,
91
 
                }
92
 
        q = models.Question.objects.create(**data)
93
 
        form = get_form_from_questions('Test', q)
94
 
        instance = form(data={'q_%d' % q.pk: None})
95
 
        self.assertTrue(instance.is_valid())
96
 
        instance.save()
97
 
        self.assertEqual(models.Answer.objects.count(), 1)
98
 
        
99
17
 
100
18
class SurveyFormTest(TestCase):
101
19
    
237
155
        self.assertEqual(rsp.status_code, 302)
238
156
    
239
157
 
240
 
class ExportCSVTest(TestCase):
 
158
class ExportCSVView(ViewTestCase):
 
159
    
 
160
    def setUp(self):
 
161
        '''
 
162
        Create a response
 
163
        '''
 
164
        super(ExportCSVView, self).setUp()
 
165
        answer = models.Answer.objects.create(question=self.question, answer=str(True))
 
166
        models.Responder.objects.create(user=self.user, answer=answer)
 
167
    
 
168
    def test_access(self):
 
169
        '''
 
170
        Test that only staff can access this view
 
171
        '''
 
172
        raise NotImplementedError
241
173
    
242
174
    def test_run(self):
 
175
        rsp = self.client.get(reverse('export_survey_data', kwargs={'survey_id': self.survey.pk}))
 
176
        print rsp.status_code
 
177
        print rsp
243
178
        raise NotImplementedError
244
179
    
 
180
###########################
 
181
# Testing boundled fields #
 
182
###########################
 
183
 
 
184
class SimpleTextField(TestCase):
 
185
    
 
186
    def setUp(self):
 
187
        super(SimpleTextField, self).setUp()
 
188
        self.field = models.FieldType.objects.get(name='Simple text')
 
189
    
 
190
    def test_simpleText(self):
 
191
        '''
 
192
        Validate when field is not required
 
193
        '''
 
194
        data = {'label': 'Test label',
 
195
                'field': self.field,
 
196
                'required': False,
 
197
                }
 
198
        q = models.Question.objects.create(**data)
 
199
        form = get_form_from_questions('Test', q)
 
200
        instance = form(data={'q_%d' % q.pk: 'hello'})        
 
201
        self.assertTrue(instance.is_valid())
 
202
        instance.save()
 
203
        self.assertEqual(models.Answer.objects.count(), 1)
 
204
        
 
205
    def test_simpleText_required(self):
 
206
        '''
 
207
        Validate required field
 
208
        '''
 
209
        data = {'label': 'Test label',
 
210
                'field': self.field,
 
211
                }
 
212
        q = models.Question.objects.create(**data)
 
213
        form = get_form_from_questions('Test', q,)
 
214
        instance = form(data={'q_%d' % q.pk: None})
 
215
        self.assertFalse(instance.is_valid())
 
216
        self.assertTrue(instance.errors.has_key('q_%d' % q.pk))
 
217
        
 
218
        # and works now
 
219
        instance = form(data={'q_%d' % q.pk: 'hello'})
 
220
        self.assertTrue(instance.is_valid())
 
221
        instance.save()
 
222
        self.assertEqual(models.Answer.objects.count(), 1)
 
223
        
 
224
class CheckboxField(TestCase):
 
225
    
 
226
    def setUp(self):
 
227
        TestCase.setUp(self)
 
228
        self.field = models.FieldType.objects.get(name='Checkbox')
 
229
        
 
230
    def test_default(self):
 
231
        '''
 
232
        Validate required field
 
233
        '''
 
234
        data = {'label': 'Test label',
 
235
                'field': self.field,
 
236
                }
 
237
        q = models.Question.objects.create(**data)
 
238
        form = get_form_from_questions('Test', q,)
 
239
        instance = form(data={'q_%d' % q.pk: None})
 
240
        self.assertFalse(instance.is_valid())
 
241
        self.assertTrue(instance.errors.has_key('q_%d' % q.pk))
 
242
        
 
243
        # and works now
 
244
        instance = form(data={'q_%d' % q.pk: True})
 
245
        self.assertTrue(instance.is_valid())
 
246
        instance.save()
 
247
        self.assertEqual(models.Answer.objects.count(), 1)
 
248
        
 
249
    def test_empty(self):
 
250
        '''
 
251
        Validate when field is not required
 
252
        '''
 
253
        data = {'label': 'Test label',
 
254
                'field': self.field,
 
255
                'required': False,
 
256
                }
 
257
        q = models.Question.objects.create(**data)
 
258
        form = get_form_from_questions('Test', q)
 
259
        instance = form(data={'q_%d' % q.pk: None})
 
260
        self.assertTrue(instance.is_valid())
 
261
        instance.save()
 
262
        self.assertEqual(models.Answer.objects.count(), 1)
 
263
        
 
264
 
 
265
class FoodPreferenceSelectField(TestCase):
 
266
    
 
267
    def setUp(self):
 
268
        super(FoodPreferenceSelectField, self).setUp()
 
269
        self.field = models.FieldType.objects.get(name='FoodPreferenceSelect')
 
270
    
 
271
    def test_default(self):
 
272
        data = {'label': 'Food prefs',
 
273
                'field': self.field}
 
274
        q = models.Question.objects.create(**data)
 
275
        form = get_form_from_questions('Test', q,)
 
276
        instance = form(data={'q_%d' % q.pk: 'Vega+Fish'})
 
277
        self.assertTrue(instance.is_valid())
 
278
        instance.save()
 
279
        self.assertEqual(models.Answer.objects.count(), 1)