Beispiel #1
0
    def test_profile_dynamic_fields(self):
        from oioioi.base.preferences import PreferencesFactory, \
                PreferencesSaved

        def callback_func(sender, **kwargs):
            self.assertEquals(sender.cleaned_data['dog'], 'Janusz')
            self.assertEquals(sender.cleaned_data['answer'], 42)

        try:
            PreferencesFactory.add_field('dog',
                                         CharField,
                                         lambda n, u: 'Andrzej',
                                         label='Doggy')
            PreferencesFactory.add_field('answer',
                                         IntegerField,
                                         lambda n, u: 72,
                                         label="The answer to everything")
            PreferencesSaved.connect(callback_func)

            self.client.login(username='******')
            url = reverse('edit_profile')

            response = self.client.get(url)

            for text in ['Doggy', 'Andrzej', '72', 'The answer to everything']:
                self.assertIn(text, response.content)

            data = {
                'username': '******',
                'first_name': 'fn',
                'last_name': 'ln',
                'email': '*****@*****.**',
                'dog': 'Janusz',
                'answer': '42'
            }
            self.client.post(url, data, follow=True)
            # callback_func should be called already
        finally:
            PreferencesSaved.disconnect(callback_func)
            PreferencesFactory.remove_field('dog')
            PreferencesFactory.remove_field('answer')
Beispiel #2
0
    def test_profile_dynamic_fields(self):
        from oioioi.base.preferences import PreferencesFactory
        from oioioi.base.models import PreferencesSaved

        def callback_func(sender, **kwargs):
            self.assertEqual(sender.cleaned_data['dog'], 'Janusz')
            self.assertEqual(sender.cleaned_data['answer'], 42)

        try:
            PreferencesFactory.add_field(
                'dog',
                CharField,
                lambda n, u: 'Andrzej',
                label='Doggy'
            )
            PreferencesFactory.add_field(
                'answer',
                IntegerField,
                lambda n, u: 72,
                label="The answer to everything"
            )
            PreferencesSaved.connect(callback_func)

            self.assertTrue(self.client.login(username='******'))
            url = reverse('edit_profile')

            response = self.client.get(url)

            for text in ['Doggy', 'Andrzej', '72', 'The answer to everything']:
                self.assertContains(response, text)

            data = {'username': '******', 'first_name': 'fn',
                    'last_name': 'ln', 'email': '*****@*****.**',
                    'dog': 'Janusz', 'answer': '42'}
            self.client.post(url, data, follow=True)
            # callback_func should be called already
        finally:
            PreferencesSaved.disconnect(callback_func)
            PreferencesFactory.remove_field('dog')
            PreferencesFactory.remove_field('answer')