-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
212 additions
and
39 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
Converting field names | ||
====================== | ||
|
||
To support automatic case conversion, a custom implementation can be provided. | ||
|
||
.. code-block:: python | ||
# app/utils.py | ||
def my_converter(field_name: str) -> str: | ||
# do something with field_name | ||
return field_name | ||
and in ``settings.py``: | ||
|
||
.. code-block:: python | ||
NLF_FIELD_NAME_CONVERTER = "app.utils.my_converter" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,3 +5,4 @@ Customization | |
:maxdepth: 1 | ||
|
||
custom_functions.rst | ||
field_name_conversion.rst |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
from unittest import TestCase | ||
|
||
from django.test import override_settings | ||
|
||
from django_nlf.conf import NLFSettings | ||
|
||
|
||
class NLFSettingsTestCase(TestCase): | ||
def setUp(self): | ||
self.nlf_settings = NLFSettings() | ||
|
||
def test_retrieve_default(self): | ||
self.assertEqual(self.nlf_settings.EMPTY_VALUE, self.nlf_settings.DEFAULTS["EMPTY_VALUE"]) | ||
|
||
@override_settings(NLF_EMPTY_VALUE="FOO") | ||
def test_retrieve_custom(self): | ||
self.assertEqual(self.nlf_settings.EMPTY_VALUE, "FOO") | ||
|
||
def test_invalid_setting(self): | ||
with self.assertRaises(AttributeError): | ||
self.nlf_settings.NON_EXISTING_SETTING # pylint: disable=pointless-statement | ||
|
||
@override_settings(NLF_EMPTY_VALUE="FOO") | ||
def test_deprecated_setting(self): | ||
self.nlf_settings.DEPRECATED_SETTINGS = ["EMPTY_VALUE"] | ||
with self.assertWarns(DeprecationWarning): | ||
self.nlf_settings.EMPTY_VALUE # pylint: disable=pointless-statement | ||
|
||
@override_settings(NLF_EMPTY_VALUE="django_nlf.utils.coerce_bool") | ||
def test_import_string(self): | ||
self.nlf_settings.IMPORT_STRINGS = ("EMPTY_VALUE") | ||
self.assertTrue(callable(self.nlf_settings.EMPTY_VALUE)) | ||
|
||
@override_settings(NLF_EMPTY_VALUE=("django_nlf.utils.coerce_bool", )) | ||
def test_import_list(self): | ||
self.nlf_settings.IMPORT_STRINGS = ["EMPTY_VALUE"] | ||
self.assertEqual(len(self.nlf_settings.EMPTY_VALUE), 1) | ||
self.assertTrue(callable(self.nlf_settings.EMPTY_VALUE[0])) | ||
|
||
@override_settings(NLF_EMPTY_VALUE=True) | ||
def test_import_other(self): | ||
self.nlf_settings.IMPORT_STRINGS = ["EMPTY_VALUE"] | ||
self.assertEqual(self.nlf_settings.EMPTY_VALUE, True) | ||
|
||
@override_settings(NLF_EMPTY_VALUE="my.custom.module.function") | ||
def test_import_fail(self): | ||
self.nlf_settings.IMPORT_STRINGS = ["EMPTY_VALUE"] | ||
with self.assertRaises(ImportError): | ||
self.nlf_settings.EMPTY_VALUE # pylint: disable=pointless-statement | ||
|
||
def test_settings_changed(self): | ||
self.nlf_settings.EMPTY_VALUE # pylint: disable=pointless-statement | ||
self.assertTrue("EMPTY_VALUE" in self.nlf_settings.__dict__) | ||
self.nlf_settings.change_setting("RANDOM_SETTING", "FOO", True) | ||
self.nlf_settings.change_setting("NLF_RANDOM_SETTING", "FOO", True) | ||
self.assertTrue("EMPTY_VALUE" in self.nlf_settings.__dict__) | ||
self.nlf_settings.change_setting("NLF_EMPTY_VALUE", "FOO", True) | ||
self.assertFalse("EMPTY_VALUE" in self.nlf_settings.__dict__) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
from unittest import TestCase | ||
|
||
from django.test import override_settings | ||
|
||
from django_nlf.utils import camel_to_snake_case, coerce_bool | ||
|
||
|
||
class CamelToSnakeCaseTestCase(TestCase): | ||
def test_conversion(self): | ||
self.assertEqual(camel_to_snake_case("fooBar"), "foo_bar") | ||
self.assertEqual(camel_to_snake_case("_fooBar_"), "foo_bar_") | ||
self.assertEqual(camel_to_snake_case("HTTPRequest"), "h_t_t_p_request") | ||
|
||
|
||
class CoerceBoolTestCase(TestCase): | ||
def test_with_default_settings(self): | ||
self.assertTrue(coerce_bool("true")) | ||
self.assertTrue(coerce_bool("a")) | ||
self.assertTrue(coerce_bool(True)) | ||
self.assertTrue(coerce_bool(1)) | ||
|
||
self.assertFalse(coerce_bool("False")) | ||
self.assertFalse(coerce_bool("f")) | ||
self.assertFalse(coerce_bool("0")) | ||
self.assertFalse(coerce_bool("")) | ||
self.assertFalse(coerce_bool(0)) | ||
self.assertFalse(coerce_bool({})) | ||
|
||
@override_settings(NLF_FALSE_VALUES=("a", "b", "c")) | ||
def test_with_other_settings(self): | ||
self.assertTrue(coerce_bool("f")) | ||
|
||
self.assertFalse(coerce_bool("aasd")) | ||
self.assertFalse(coerce_bool("bar")) | ||
self.assertFalse(coerce_bool("co2")) |