Simple app to add configuration options to a Django project.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

added missing files 🦆

+99
+12
.travis.yml
··· 1 + language: python 2 + python: 3 + - "3.6" 4 + - "3.7" 5 + install: 6 + - pip install pipenv 7 + - pipenv install --system 8 + script: 9 + - pytest --cov options 10 + after_success: 11 + - coveralls 12 +
+3
pytest.ini
··· 1 + [pytest] 2 + DJANGO_SETTINGS_MODULE=tests.settings 3 +
+84
tests/test_options.py
··· 1 + from django.test import override_settings, TestCase 2 + from django.contrib.auth.models import User 3 + from rest_framework.test import APITestCase 4 + from rest_framework import status 5 + 6 + from tests.test_settings import TEST_SETTINGS 7 + from tests.factories import UserFactory, UserOptionFactory, OptionFactory 8 + from options import INT, FLOAT, STRING 9 + from options.models import Option, UserOption 10 + 11 + 12 + @override_settings(**TEST_SETTINGS) 13 + class OptionTests(TestCase): 14 + def test_default_options(self): 15 + value = Option.objects.get_value("default_option", default="ohter") 16 + self.assertEqual("default", value) 17 + 18 + def test_int_conversion_options(self): 19 + name = "int_option" 20 + option = OptionFactory(name=name, value="42", type=INT) 21 + value = Option.objects.get_value(name) 22 + self.assertIsInstance(value, int) 23 + self.assertEqual(42, value) 24 + 25 + def test_str_conversion_options(self): 26 + name = "string_option" 27 + option = OptionFactory(name=name, value="42") 28 + value = Option.objects.get_value(name) 29 + self.assertIsInstance(value, str) 30 + self.assertEqual("42", value) 31 + 32 + def test_float_conversion_options(self): 33 + name = "string_option" 34 + option = OptionFactory(name=name, value="42.5", type=FLOAT) 35 + value = Option.objects.get_value(name) 36 + self.assertIsInstance(value, float) 37 + self.assertAlmostEqual(42.5, value) 38 + 39 + 40 + @override_settings(**TEST_SETTINGS) 41 + class UserOptionTests(TestCase): 42 + def test_custom_user_options(self): 43 + user = UserFactory() 44 + name = "default_option" 45 + expected_value = "user default" 46 + UserOption.objects.create( 47 + name=name, public_name=name, value=expected_value, type=STRING, user=user 48 + ) 49 + value = UserOption.objects.get_value(name, user=user, default="ohter") 50 + self.assertEqual(expected_value, value) 51 + 52 + 53 + @override_settings(**TEST_SETTINGS) 54 + class OptionAPITests(APITestCase): 55 + def test_list_options(self): 56 + admin = UserFactory(is_staff=True) 57 + self.client.force_authenticate(admin) 58 + response = self.client.get("/api/options/", format="json") 59 + self.assertEqual(response.status_code, status.HTTP_200_OK) 60 + data = response.json() 61 + self.assertEqual(1, len(data)) 62 + 63 + def test_list_user_options(self): 64 + user = UserFactory() 65 + name = "default_option" 66 + expected_value = "user default" 67 + UserOptionFactory(name=name, value=expected_value, user=user) 68 + self.client.force_authenticate(user) 69 + response = self.client.get("/api/user-options/", format="json") 70 + self.assertEqual(response.status_code, status.HTTP_200_OK) 71 + data = response.json() 72 + self.assertEqual(1, len(data)) 73 + 74 + def test_list_user_options_with_exclude(self): 75 + user = UserFactory() 76 + name = "default_option" 77 + expected_value = "user default" 78 + UserOptionFactory(name="secret_option", value="secret", user=user) 79 + UserOptionFactory(name=name, value=expected_value, user=user) 80 + self.client.force_authenticate(user) 81 + response = self.client.get("/api/user-options/", format="json") 82 + self.assertEqual(response.status_code, status.HTTP_200_OK) 83 + data = response.json() 84 + self.assertEqual(1, len(data))