def test_can_list_preference_of_requeting_user(self):
        second_user = User(
            username="******",
            email="*****@*****.**",
            is_superuser=True,
            is_staff=True)
        second_user.set_password('test')
        second_user.save()

        manager = registry.manager(instance=self.user)
        url = reverse('api:user-list')
        self.client.login(username='******', password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        payload = json.loads(response.content.decode('utf-8'))

        self.assertEqual(len(payload), len(registry.preferences()))

        url = reverse('api:user-list')
        self.client.login(username='******', password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        payload = json.loads(response.content.decode('utf-8'))

        # This should be 7 because each user gets 7 preferences by default.
        self.assertEqual(len(payload), 7)

        for e in payload:
            pref = manager.get_db_pref(section=e['section'], name=e['name'])
            serializer = serializers.UserPreferenceSerializer(pref)
            self.assertEqual(pref.preference.identifier(), e['identifier'])
Example #2
0
    def test_can_list_preference_of_requeting_user(self):
        second_user = User(username="******",
                           email="*****@*****.**",
                           is_superuser=True,
                           is_staff=True)
        second_user.set_password('test')
        second_user.save()

        manager = registry.manager(instance=self.user)
        url = reverse('api:user-list')
        self.client.login(username='******', password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        payload = json.loads(response.content.decode('utf-8'))

        self.assertEqual(len(payload), len(registry.preferences()))

        url = reverse('api:user-list')
        self.client.login(username='******', password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        payload = json.loads(response.content.decode('utf-8'))

        # This should be 7 because each user gets 7 preferences by default.
        self.assertEqual(len(payload), 8)

        for e in payload:
            pref = manager.get_db_pref(section=e['section'], name=e['name'])
            serializer = serializers.UserPreferenceSerializer(pref)
            self.assertEqual(pref.preference.identifier(), e['identifier'])
Example #3
0
    def test_serializer_includes_additional_data_if_any(self):
        user = User(username="******", email="*****@*****.**")
        user.set_password('test')
        user.save()

        manager = user_registry.manager(instance=user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')

        serializer = UserPreferenceSerializer(pref)
        self.assertEqual(serializer.data['additional_data']['choices'],
                         pref.preference.choices)
    def test_can_detail_preference(self):
        manager = registry.manager(instance=self.user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')
        url = reverse('api:user-detail',
                      kwargs={'pk': pref.preference.identifier()})
        self.client.login(username='******', password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        payload = json.loads(response.content.decode('utf-8'))
        self.assertEqual(pref.preference.identifier(), payload['identifier'])
        self.assertEqual(pref.value, payload['value'])
    def test_can_detail_preference(self):
        manager = registry.manager(instance=self.user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')
        url = reverse(
            'api:user-detail',
            kwargs={'pk': pref.preference.identifier()})
        self.client.login(username='******', password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        payload = json.loads(response.content.decode('utf-8'))
        self.assertEqual(pref.preference.identifier(), payload['identifier'])
        self.assertEqual(pref.value, payload['value'])
    def test_update_preference_returns_validation_error(self):
        manager = registry.manager(instance=self.user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')
        url = reverse('api:user-detail',
                      kwargs={'pk': pref.preference.identifier()})
        self.client.login(username='******', password="******")
        response = self.client.patch(url,
                                     json.dumps({'value': 'Z'}),
                                     content_type='application/json')
        self.assertEqual(response.status_code, 400)

        payload = json.loads(response.content.decode('utf-8'))

        self.assertIn('valid choice', payload['value'][0])
    def test_can_update_preference(self):
        manager = registry.manager(instance=self.user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')
        url = reverse('api:user-detail',
                      kwargs={'pk': pref.preference.identifier()})
        self.client.login(username='******', password="******")
        response = self.client.patch(url,
                                     json.dumps({'value': 'P'}),
                                     content_type='application/json')
        self.assertEqual(response.status_code, 200)

        pref = manager.get_db_pref(section='user', name='favorite_vegetable')

        self.assertEqual(pref.value, 'P')
    def test_update_preference_returns_validation_error(self):
        manager = registry.manager(instance=self.user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')
        url = reverse(
            'api:user-detail',
            kwargs={'pk': pref.preference.identifier()})
        self.client.login(username='******', password="******")
        response = self.client.patch(
            url, json.dumps({'value': 'Z'}), content_type='application/json')
        self.assertEqual(response.status_code, 400)

        payload = json.loads(response.content.decode('utf-8'))

        self.assertIn('valid choice', payload['value'][0])
    def test_can_update_preference(self):
        manager = registry.manager(instance=self.user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')
        url = reverse(
            'api:user-detail',
            kwargs={'pk': pref.preference.identifier()})
        self.client.login(username='******', password="******")
        response = self.client.patch(
            url, json.dumps({'value': 'P'}), content_type='application/json')
        self.assertEqual(response.status_code, 200)

        pref = manager.get_db_pref(section='user', name='favorite_vegetable')

        self.assertEqual(pref.value, 'P')
    def test_can_list_preferences(self):
        manager = registry.manager(instance=self.user)
        url = reverse('api:user-list')
        self.client.login(username='******', password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        payload = json.loads(response.content.decode('utf-8'))

        self.assertEqual(len(payload), len(registry.preferences()))

        for e in payload:
            pref = manager.get_db_pref(section=e['section'], name=e['name'])
            serializer = serializers.UserPreferenceSerializer(pref)
            self.assertEqual(pref.preference.identifier(), e['identifier'])
    def test_serializer_includes_additional_data_if_any(self):
        user = User(
            username="******",
            email="*****@*****.**")
        user.set_password('test')
        user.save()

        manager = user_registry.manager(instance=user)
        pref = manager.get_db_pref(
            section='user', name='favorite_vegetable')

        serializer = UserPreferenceSerializer(pref)
        self.assertEqual(
            serializer.data['additional_data']['choices'],
            pref.preference.choices)
    def test_can_list_preferences(self):
        manager = registry.manager(instance=self.user)
        url = reverse('api:user-list')
        self.client.login(username='******', password="******")
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        payload = json.loads(response.content.decode('utf-8'))

        self.assertEqual(len(payload), len(registry.preferences()))

        for e in payload:
            pref = manager.get_db_pref(section=e['section'], name=e['name'])
            serializer = serializers.UserPreferenceSerializer(pref)
            self.assertEqual(pref.preference.identifier(), e['identifier'])
    def test_can_update_multiple_preferences(self):
        manager = registry.manager(instance=self.user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')
        url = reverse('api:user-bulk')
        self.client.login(username='******', password="******")
        payload = {
            'user__favorite_vegetable': 'C',
            'misc__favourite_colour': 'Blue',
        }
        response = self.client.post(url,
                                    json.dumps(payload),
                                    content_type='application/json')
        self.assertEqual(response.status_code, 200)

        pref1 = manager.get_db_pref(section='user', name='favorite_vegetable')
        pref2 = manager.get_db_pref(section='misc', name='favourite_colour')

        self.assertEqual(pref1.value, 'C')
        self.assertEqual(pref2.value, 'Blue')
    def test_can_update_multiple_preferences(self):
        manager = registry.manager(instance=self.user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')
        url = reverse('api:user-bulk')
        self.client.login(username='******', password="******")
        payload = {
            'user__favorite_vegetable': 'C',
            'misc__favourite_colour': 'Blue',
        }
        response = self.client.post(
            url, json.dumps(payload), content_type='application/json')
        self.assertEqual(response.status_code, 200)

        pref1 = manager.get_db_pref(section='user', name='favorite_vegetable')
        pref2 = manager.get_db_pref(
            section='misc', name='favourite_colour')

        self.assertEqual(pref1.value, 'C')
        self.assertEqual(pref2.value, 'Blue')
    def test_update_multiple_preferences_with_validation_errors_rollback(self):
        manager = registry.manager(instance=self.user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')
        url = reverse('api:user-bulk')
        self.client.login(username='******', password="******")
        payload = {
            'user__favorite_vegetable': 'Z',
            'misc__favourite_colour': 'Blue',
        }
        response = self.client.post(url,
                                    json.dumps(payload),
                                    content_type='application/json')
        self.assertEqual(response.status_code, 400)

        errors = json.loads(response.content.decode('utf-8'))
        self.assertIn('valid choice',
                      errors[pref.preference.identifier()]['value'][0])

        pref1 = manager.get_db_pref(section='user', name='favorite_vegetable')
        pref2 = manager.get_db_pref(section='misc', name='favourite_colour')

        self.assertEqual(pref1.value, pref1.preference.default)
        self.assertEqual(pref2.value, pref2.preference.default)
    def test_update_multiple_preferences_with_validation_errors_rollback(self):
        manager = registry.manager(instance=self.user)
        pref = manager.get_db_pref(section='user', name='favorite_vegetable')
        url = reverse('api:user-bulk')
        self.client.login(username='******', password="******")
        payload = {
            'user__favorite_vegetable': 'Z',
            'misc__favourite_colour': 'Blue',
        }
        response = self.client.post(
            url, json.dumps(payload), content_type='application/json')
        self.assertEqual(response.status_code, 400)

        errors = json.loads(response.content.decode('utf-8'))
        self.assertIn(
            'valid choice',
            errors[pref.preference.identifier()]['value'][0])

        pref1 = manager.get_db_pref(section='user', name='favorite_vegetable')
        pref2 = manager.get_db_pref(
            section='misc', name='favourite_colour')

        self.assertEqual(pref1.value, pref1.preference.default)
        self.assertEqual(pref2.value, pref2.preference.default)