diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 869d3d2..8f56e05 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -72,8 +72,8 @@ jobs: run: | python -m pip install --upgrade pip pip install pip-tools - pip-compile examples/requirements/${{ matrix.requirements }}.in - pip install -r examples/requirements/${{ matrix.requirements }}.txt + pip-compile examples/requirements/${{ matrix.requirements }}_and_flask.in + pip install -r examples/requirements/${{ matrix.requirements }}_and_flask.txt pip-compile examples/requirements/test.in pip install -r examples/requirements/test.txt - name: Run Tests diff --git a/examples/requirements/dev.txt b/examples/requirements/dev.txt index 205b313..091809e 100644 --- a/examples/requirements/dev.txt +++ b/examples/requirements/dev.txt @@ -1,8 +1,8 @@ # -# This file is autogenerated by pip-compile with python 3.6 +# This file is autogenerated by pip-compile # To update, run: # -# pip-compile examples/requirements/dev.in +# pip-compile dev.in # appdirs==1.4.4 # via virtualenv @@ -11,7 +11,7 @@ asgiref==3.3.4 attrs==21.2.0 # via pytest babel==2.9.1 - # via -r examples/requirements/common.in + # via -r common.in bleach==3.3.0 # via readme-renderer certifi==2021.5.30 @@ -26,25 +26,25 @@ colorama==0.4.4 # via twine coverage[toml]==5.5 # via - # -r examples/requirements/test.in + # -r test.in # pytest-cov cryptography==3.4.7 # via secretstorage distlib==0.3.2 # via virtualenv +django-debug-toolbar==3.2.1 + # via -r django_3_2.in django==3.2.4 # via - # -r examples/requirements/django_3_2.in + # -r django_3_2.in # django-debug-toolbar -django-debug-toolbar==3.2.1 - # via -r examples/requirements/django_3_2.in docutils==0.17.1 # via readme-renderer factory_boy==2.11.1 - # via -r examples/requirements/test.in + # via -r test.in faker==8.1.4 # via - # -r examples/requirements/test.in + # -r test.in # factory-boy filelock==3.0.12 # via @@ -80,7 +80,7 @@ packaging==20.9 pep517==0.10.0 # via pip-tools pip-tools==6.1.0 - # via -r examples/requirements/deployment.in + # via -r deployment.in pkginfo==1.7.0 # via twine pluggy==0.13.1 @@ -89,7 +89,7 @@ pluggy==0.13.1 # tox py==1.10.0 # via - # -r examples/requirements/test.in + # -r test.in # pytest # tox pycparser==2.20 @@ -98,21 +98,21 @@ pygments==2.9.0 # via readme-renderer pyparsing==2.4.7 # via packaging +pytest-cov==2.12.0 + # via -r test.in +pytest-django==4.3.0 + # via -r test.in +pytest-ordering==0.6 + # via -r test.in +pytest-pythonpath==0.7.3 + # via -r test.in pytest==6.2.4 # via - # -r examples/requirements/test.in + # -r test.in # pytest-cov # pytest-django # pytest-ordering # pytest-pythonpath -pytest-cov==2.12.0 - # via -r examples/requirements/test.in -pytest-django==4.3.0 - # via -r examples/requirements/test.in -pytest-ordering==0.6 - # via -r examples/requirements/test.in -pytest-pythonpath==0.7.3 - # via -r examples/requirements/test.in python-dateutil==2.8.1 # via faker pytz==2021.1 @@ -121,12 +121,12 @@ pytz==2021.1 # django readme-renderer==29.0 # via twine +requests-toolbelt==0.9.1 + # via twine requests==2.25.1 # via # requests-toolbelt # twine -requests-toolbelt==0.9.1 - # via twine rfc3986==1.5.0 # via twine secretstorage==3.3.1 @@ -151,11 +151,11 @@ toml==0.10.2 # pytest # tox tox==3.23.1 - # via -r examples/requirements/test.in + # via -r test.in tqdm==4.61.1 # via twine twine==3.4.1 - # via -r examples/requirements/deployment.in + # via -r deployment.in typing-extensions==3.10.0.0 # via # asgiref diff --git a/examples/requirements/django_2_2_and_flask.in b/examples/requirements/django_2_2_and_flask.in new file mode 100644 index 0000000..05f03b5 --- /dev/null +++ b/examples/requirements/django_2_2_and_flask.in @@ -0,0 +1,6 @@ +-r common.in +-r test.in +-r flask.in + +Django>=2.2,<3.0 +django-debug-toolbar>=3.2,<3.3 diff --git a/examples/requirements/django_2_2_and_flask.txt b/examples/requirements/django_2_2_and_flask.txt new file mode 100644 index 0000000..783a3b0 --- /dev/null +++ b/examples/requirements/django_2_2_and_flask.txt @@ -0,0 +1,154 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile django_2_2_and_flask.in +# +appdirs==1.4.4 + # via virtualenv +attrs==21.2.0 + # via pytest +babel==2.9.1 + # via + # -r common.in + # flask-babelex +click==8.0.1 + # via flask +coverage[toml]==5.5 + # via + # -r test.in + # pytest-cov +dataclasses==0.8 + # via werkzeug +distlib==0.3.2 + # via virtualenv +django-debug-toolbar==3.2.1 + # via -r django_2_2_and_flask.in +django==2.2.24 + # via + # -r django_2_2_and_flask.in + # django-debug-toolbar +factory_boy==2.11.1 + # via -r test.in +faker==8.1.4 + # via + # -r test.in + # factory-boy +filelock==3.0.12 + # via + # tox + # virtualenv +flask-admin==1.5.8 + # via -r flask.in +flask-babelex==0.9.4 + # via -r flask.in +flask-sqlalchemy==2.5.1 + # via -r flask.in +flask-testing==0.8.1 + # via -r flask.in +flask==2.0.1 + # via + # -r flask.in + # flask-admin + # flask-babelex + # flask-sqlalchemy + # flask-testing +greenlet==1.1.0 + # via sqlalchemy +importlib-metadata==4.6.1 + # via + # click + # pluggy + # pytest + # sqlalchemy + # tox + # virtualenv +importlib-resources==5.2.0 + # via virtualenv +iniconfig==1.1.1 + # via pytest +itsdangerous==2.0.1 + # via flask +jinja2==3.0.1 + # via + # flask + # flask-babelex +markupsafe==2.0.1 + # via + # jinja2 + # wtforms +packaging==21.0 + # via + # pytest + # tox +pluggy==0.13.1 + # via + # pytest + # tox +py==1.10.0 + # via + # -r test.in + # pytest + # tox +pyparsing==2.4.7 + # via packaging +pytest-cov==2.12.0 + # via -r test.in +pytest-django==4.3.0 + # via -r test.in +pytest-ordering==0.6 + # via -r test.in +pytest-pythonpath==0.7.3 + # via -r test.in +pytest==6.2.4 + # via + # -r test.in + # pytest-cov + # pytest-django + # pytest-ordering + # pytest-pythonpath +python-dateutil==2.8.1 + # via faker +pytz==2021.1 + # via + # babel + # django +six==1.16.0 + # via + # python-dateutil + # sqlalchemy-utils + # tox + # virtualenv +speaklater==1.3 + # via flask-babelex +sqlalchemy-utils==0.37.8 + # via -r flask.in +sqlalchemy==1.4.20 + # via + # flask-sqlalchemy + # sqlalchemy-utils +sqlparse==0.4.1 + # via + # django + # django-debug-toolbar +text-unidecode==1.3 + # via faker +toml==0.10.2 + # via + # coverage + # pytest + # tox +tox==3.23.1 + # via -r test.in +typing-extensions==3.10.0.0 + # via importlib-metadata +virtualenv==20.4.7 + # via tox +werkzeug==2.0.1 + # via flask +wtforms==2.3.3 + # via flask-admin +zipp==3.5.0 + # via + # importlib-metadata + # importlib-resources diff --git a/examples/requirements/django_3_0_and_flask.in b/examples/requirements/django_3_0_and_flask.in new file mode 100644 index 0000000..ccd58a4 --- /dev/null +++ b/examples/requirements/django_3_0_and_flask.in @@ -0,0 +1,6 @@ +-r common.in +-r test.in +-r flask.in + +Django>=3.0,<3.1 +django-debug-toolbar>=2.1 diff --git a/examples/requirements/django_3_0_and_flask.txt b/examples/requirements/django_3_0_and_flask.txt new file mode 100644 index 0000000..c4fd577 --- /dev/null +++ b/examples/requirements/django_3_0_and_flask.txt @@ -0,0 +1,158 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile django_3_0_and_flask.in +# +appdirs==1.4.4 + # via virtualenv +asgiref==3.4.1 + # via django +attrs==21.2.0 + # via pytest +babel==2.9.1 + # via + # -r common.in + # flask-babelex +click==8.0.1 + # via flask +coverage[toml]==5.5 + # via + # -r test.in + # pytest-cov +dataclasses==0.8 + # via werkzeug +distlib==0.3.2 + # via virtualenv +django-debug-toolbar==3.2.1 + # via -r django_3_0_and_flask.in +django==3.0.14 + # via + # -r django_3_0_and_flask.in + # django-debug-toolbar +factory_boy==2.11.1 + # via -r test.in +faker==8.1.4 + # via + # -r test.in + # factory-boy +filelock==3.0.12 + # via + # tox + # virtualenv +flask-admin==1.5.8 + # via -r flask.in +flask-babelex==0.9.4 + # via -r flask.in +flask-sqlalchemy==2.5.1 + # via -r flask.in +flask-testing==0.8.1 + # via -r flask.in +flask==2.0.1 + # via + # -r flask.in + # flask-admin + # flask-babelex + # flask-sqlalchemy + # flask-testing +greenlet==1.1.0 + # via sqlalchemy +importlib-metadata==4.6.1 + # via + # click + # pluggy + # pytest + # sqlalchemy + # tox + # virtualenv +importlib-resources==5.2.0 + # via virtualenv +iniconfig==1.1.1 + # via pytest +itsdangerous==2.0.1 + # via flask +jinja2==3.0.1 + # via + # flask + # flask-babelex +markupsafe==2.0.1 + # via + # jinja2 + # wtforms +packaging==21.0 + # via + # pytest + # tox +pluggy==0.13.1 + # via + # pytest + # tox +py==1.10.0 + # via + # -r test.in + # pytest + # tox +pyparsing==2.4.7 + # via packaging +pytest-cov==2.12.0 + # via -r test.in +pytest-django==4.3.0 + # via -r test.in +pytest-ordering==0.6 + # via -r test.in +pytest-pythonpath==0.7.3 + # via -r test.in +pytest==6.2.4 + # via + # -r test.in + # pytest-cov + # pytest-django + # pytest-ordering + # pytest-pythonpath +python-dateutil==2.8.1 + # via faker +pytz==2021.1 + # via + # babel + # django +six==1.16.0 + # via + # python-dateutil + # sqlalchemy-utils + # tox + # virtualenv +speaklater==1.3 + # via flask-babelex +sqlalchemy-utils==0.37.8 + # via -r flask.in +sqlalchemy==1.4.20 + # via + # flask-sqlalchemy + # sqlalchemy-utils +sqlparse==0.4.1 + # via + # django + # django-debug-toolbar +text-unidecode==1.3 + # via faker +toml==0.10.2 + # via + # coverage + # pytest + # tox +tox==3.23.1 + # via -r test.in +typing-extensions==3.10.0.0 + # via + # asgiref + # importlib-metadata +virtualenv==20.4.7 + # via tox +werkzeug==2.0.1 + # via flask +wtforms==2.3.3 + # via flask-admin +zipp==3.5.0 + # via + # importlib-metadata + # importlib-resources diff --git a/examples/requirements/django_3_1_and_flask.in b/examples/requirements/django_3_1_and_flask.in new file mode 100644 index 0000000..6e1a310 --- /dev/null +++ b/examples/requirements/django_3_1_and_flask.in @@ -0,0 +1,6 @@ +-r common.in +-r test.in +-r flask.in + +Django>=3.1,<3.2 +django-debug-toolbar>=2.1 diff --git a/examples/requirements/django_3_1_and_flask.txt b/examples/requirements/django_3_1_and_flask.txt new file mode 100644 index 0000000..4a073d6 --- /dev/null +++ b/examples/requirements/django_3_1_and_flask.txt @@ -0,0 +1,158 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile django_3_1_and_flask.in +# +appdirs==1.4.4 + # via virtualenv +asgiref==3.4.1 + # via django +attrs==21.2.0 + # via pytest +babel==2.9.1 + # via + # -r common.in + # flask-babelex +click==8.0.1 + # via flask +coverage[toml]==5.5 + # via + # -r test.in + # pytest-cov +dataclasses==0.8 + # via werkzeug +distlib==0.3.2 + # via virtualenv +django-debug-toolbar==3.2.1 + # via -r django_3_1_and_flask.in +django==3.1.13 + # via + # -r django_3_1_and_flask.in + # django-debug-toolbar +factory_boy==2.11.1 + # via -r test.in +faker==8.1.4 + # via + # -r test.in + # factory-boy +filelock==3.0.12 + # via + # tox + # virtualenv +flask-admin==1.5.8 + # via -r flask.in +flask-babelex==0.9.4 + # via -r flask.in +flask-sqlalchemy==2.5.1 + # via -r flask.in +flask-testing==0.8.1 + # via -r flask.in +flask==2.0.1 + # via + # -r flask.in + # flask-admin + # flask-babelex + # flask-sqlalchemy + # flask-testing +greenlet==1.1.0 + # via sqlalchemy +importlib-metadata==4.6.1 + # via + # click + # pluggy + # pytest + # sqlalchemy + # tox + # virtualenv +importlib-resources==5.2.0 + # via virtualenv +iniconfig==1.1.1 + # via pytest +itsdangerous==2.0.1 + # via flask +jinja2==3.0.1 + # via + # flask + # flask-babelex +markupsafe==2.0.1 + # via + # jinja2 + # wtforms +packaging==21.0 + # via + # pytest + # tox +pluggy==0.13.1 + # via + # pytest + # tox +py==1.10.0 + # via + # -r test.in + # pytest + # tox +pyparsing==2.4.7 + # via packaging +pytest-cov==2.12.0 + # via -r test.in +pytest-django==4.3.0 + # via -r test.in +pytest-ordering==0.6 + # via -r test.in +pytest-pythonpath==0.7.3 + # via -r test.in +pytest==6.2.4 + # via + # -r test.in + # pytest-cov + # pytest-django + # pytest-ordering + # pytest-pythonpath +python-dateutil==2.8.1 + # via faker +pytz==2021.1 + # via + # babel + # django +six==1.16.0 + # via + # python-dateutil + # sqlalchemy-utils + # tox + # virtualenv +speaklater==1.3 + # via flask-babelex +sqlalchemy-utils==0.37.8 + # via -r flask.in +sqlalchemy==1.4.20 + # via + # flask-sqlalchemy + # sqlalchemy-utils +sqlparse==0.4.1 + # via + # django + # django-debug-toolbar +text-unidecode==1.3 + # via faker +toml==0.10.2 + # via + # coverage + # pytest + # tox +tox==3.23.1 + # via -r test.in +typing-extensions==3.10.0.0 + # via + # asgiref + # importlib-metadata +virtualenv==20.4.7 + # via tox +werkzeug==2.0.1 + # via flask +wtforms==2.3.3 + # via flask-admin +zipp==3.5.0 + # via + # importlib-metadata + # importlib-resources diff --git a/examples/requirements/django_3_2_and_flask.in b/examples/requirements/django_3_2_and_flask.in new file mode 100644 index 0000000..ea0f3cd --- /dev/null +++ b/examples/requirements/django_3_2_and_flask.in @@ -0,0 +1,6 @@ +-r common.in +-r test.in +-r flask.in + +Django>=3.2,<4.0 +django-debug-toolbar>=2.1 diff --git a/examples/requirements/django_3_2_and_flask.txt b/examples/requirements/django_3_2_and_flask.txt new file mode 100644 index 0000000..b4597e5 --- /dev/null +++ b/examples/requirements/django_3_2_and_flask.txt @@ -0,0 +1,158 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile django_3_2_and_flask.in +# +appdirs==1.4.4 + # via virtualenv +asgiref==3.4.1 + # via django +attrs==21.2.0 + # via pytest +babel==2.9.1 + # via + # -r common.in + # flask-babelex +click==8.0.1 + # via flask +coverage[toml]==5.5 + # via + # -r test.in + # pytest-cov +dataclasses==0.8 + # via werkzeug +distlib==0.3.2 + # via virtualenv +django-debug-toolbar==3.2.1 + # via -r django_3_2_and_flask.in +django==3.2.5 + # via + # -r django_3_2_and_flask.in + # django-debug-toolbar +factory_boy==2.11.1 + # via -r test.in +faker==8.1.4 + # via + # -r test.in + # factory-boy +filelock==3.0.12 + # via + # tox + # virtualenv +flask-admin==1.5.8 + # via -r flask.in +flask-babelex==0.9.4 + # via -r flask.in +flask-sqlalchemy==2.5.1 + # via -r flask.in +flask-testing==0.8.1 + # via -r flask.in +flask==2.0.1 + # via + # -r flask.in + # flask-admin + # flask-babelex + # flask-sqlalchemy + # flask-testing +greenlet==1.1.0 + # via sqlalchemy +importlib-metadata==4.6.1 + # via + # click + # pluggy + # pytest + # sqlalchemy + # tox + # virtualenv +importlib-resources==5.2.0 + # via virtualenv +iniconfig==1.1.1 + # via pytest +itsdangerous==2.0.1 + # via flask +jinja2==3.0.1 + # via + # flask + # flask-babelex +markupsafe==2.0.1 + # via + # jinja2 + # wtforms +packaging==21.0 + # via + # pytest + # tox +pluggy==0.13.1 + # via + # pytest + # tox +py==1.10.0 + # via + # -r test.in + # pytest + # tox +pyparsing==2.4.7 + # via packaging +pytest-cov==2.12.0 + # via -r test.in +pytest-django==4.3.0 + # via -r test.in +pytest-ordering==0.6 + # via -r test.in +pytest-pythonpath==0.7.3 + # via -r test.in +pytest==6.2.4 + # via + # -r test.in + # pytest-cov + # pytest-django + # pytest-ordering + # pytest-pythonpath +python-dateutil==2.8.1 + # via faker +pytz==2021.1 + # via + # babel + # django +six==1.16.0 + # via + # python-dateutil + # sqlalchemy-utils + # tox + # virtualenv +speaklater==1.3 + # via flask-babelex +sqlalchemy-utils==0.37.8 + # via -r flask.in +sqlalchemy==1.4.20 + # via + # flask-sqlalchemy + # sqlalchemy-utils +sqlparse==0.4.1 + # via + # django + # django-debug-toolbar +text-unidecode==1.3 + # via faker +toml==0.10.2 + # via + # coverage + # pytest + # tox +tox==3.23.1 + # via -r test.in +typing-extensions==3.10.0.0 + # via + # asgiref + # importlib-metadata +virtualenv==20.4.7 + # via tox +werkzeug==2.0.1 + # via flask +wtforms==2.3.3 + # via flask-admin +zipp==3.5.0 + # via + # importlib-metadata + # importlib-resources diff --git a/examples/requirements/flask.txt b/examples/requirements/flask.txt index 7d9cce2..d6e09a0 100644 --- a/examples/requirements/flask.txt +++ b/examples/requirements/flask.txt @@ -1,13 +1,11 @@ # -# This file is autogenerated by pip-compile with python 3.6 +# This file is autogenerated by pip-compile # To update, run: # # pip-compile flask.in # appdirs==1.4.4 # via virtualenv -arrow==1.1.1 - # via -r flask.in attrs==21.2.0 # via pytest babel==2.9.1 @@ -16,8 +14,6 @@ babel==2.9.1 # flask-babelex click==8.0.1 # via flask -colour==0.1.5 - # via -r flask.in coverage[toml]==5.5 # via # -r test.in @@ -26,10 +22,6 @@ dataclasses==0.8 # via werkzeug distlib==0.3.2 # via virtualenv -dnspython==2.1.0 - # via email-validator -email-validator==1.1.3 - # via -r flask.in factory_boy==2.11.1 # via -r test.in faker==8.1.4 @@ -40,22 +32,23 @@ filelock==3.0.12 # via # tox # virtualenv -flask==2.0.1 - # via - # -r flask.in - # flask-admin - # flask-babelex - # flask-sqlalchemy flask-admin==1.5.8 # via -r flask.in flask-babelex==0.9.4 # via -r flask.in flask-sqlalchemy==2.5.1 # via -r flask.in +flask-testing==0.8.1 + # via -r flask.in +flask==2.0.1 + # via + # -r flask.in + # flask-admin + # flask-babelex + # flask-sqlalchemy + # flask-testing greenlet==1.1.0 # via sqlalchemy -idna==3.2 - # via email-validator importlib-metadata==4.6.0 # via # click @@ -93,13 +86,6 @@ py==1.10.0 # tox pyparsing==2.4.7 # via packaging -pytest==6.2.4 - # via - # -r test.in - # pytest-cov - # pytest-django - # pytest-ordering - # pytest-pythonpath pytest-cov==2.12.0 # via -r test.in pytest-django==4.3.0 @@ -108,10 +94,15 @@ pytest-ordering==0.6 # via -r test.in pytest-pythonpath==0.7.3 # via -r test.in -python-dateutil==2.8.1 +pytest==6.2.4 # via - # arrow - # faker + # -r test.in + # pytest-cov + # pytest-django + # pytest-ordering + # pytest-pythonpath +python-dateutil==2.8.1 + # via faker pytz==2021.1 # via babel six==1.16.0 @@ -122,14 +113,12 @@ six==1.16.0 # virtualenv speaklater==1.3 # via flask-babelex +sqlalchemy-utils==0.37.7 + # via -r flask.in sqlalchemy==1.4.19 # via # flask-sqlalchemy # sqlalchemy-utils -sqlalchemy-utils==0.37.7 - # via -r flask.in -tablib==3.0.0 - # via -r flask.in text-unidecode==1.3 # via faker toml==0.10.2 @@ -140,9 +129,7 @@ toml==0.10.2 tox==3.23.1 # via -r test.in typing-extensions==3.10.0.0 - # via - # arrow - # importlib-metadata + # via importlib-metadata virtualenv==20.4.7 # via tox werkzeug==2.0.1 diff --git a/pytest.ini b/pytest.ini index 2d0ede5..d2eff34 100644 --- a/pytest.ini +++ b/pytest.ini @@ -14,6 +14,7 @@ python_files = python_paths = src examples/django_example + examples/sqlalchemy_example DJANGO_SETTINGS_MODULE=project.settings.testing addopts= --cov=valuta diff --git a/scripts/compile_requirements.sh b/scripts/compile_requirements.sh index c7c3f35..402fd06 100755 --- a/scripts/compile_requirements.sh +++ b/scripts/compile_requirements.sh @@ -10,6 +10,10 @@ pip-compile django_2_2.in "$@" pip-compile django_3_0.in "$@" pip-compile django_3_1.in "$@" pip-compile django_3_2.in "$@" +pip-compile django_2_2_and_flask.in "$@" +pip-compile django_3_0_and_flask.in "$@" +pip-compile django_3_1_and_flask.in "$@" +pip-compile django_3_2_and_flask.in "$@" pip-compile docs.in "$@" pip-compile style_checkers.in "$@" pip-compile test.in "$@" diff --git a/src/valuta/contrib/django_integration/tests/test_models.py b/src/valuta/contrib/django_integration/tests/test_models.py index f3cace4..c36a115 100644 --- a/src/valuta/contrib/django_integration/tests/test_models.py +++ b/src/valuta/contrib/django_integration/tests/test_models.py @@ -152,11 +152,11 @@ def test_cast_to_decimal(self): ) price_in_currency_units = p.price_in_currency_units() self.assertEqual(price_in_currency_units, Decimal("100.0")) - self.assertIsinstance(price_in_currency_units, Decimal) + self.assertIsInstance(price_in_currency_units, Decimal) price_with_tax_in_currency_units = p.price_with_tax_in_currency_units() self.assertEqual(price_with_tax_in_currency_units, Decimal("120.0")) - self.assertIsinstance(price_in_currency_units, Decimal) + self.assertIsInstance(price_in_currency_units, Decimal) def test_empty_currency_value(self): p = Product.objects.create( diff --git a/src/valuta/contrib/sqlalchemy_integration/tests/test_types.py b/src/valuta/contrib/sqlalchemy_integration/tests/test_types.py new file mode 100644 index 0000000..9c1d86f --- /dev/null +++ b/src/valuta/contrib/sqlalchemy_integration/tests/test_types.py @@ -0,0 +1,49 @@ +from flask_testing import TestCase + +import valuta +from valuta.contrib.sqlalchemy_integration.types import ChoiceWithExtras + +from valuta_admin import create_app, db + +__author__ = "Artur Barseghyan" +__copyright__ = "2021 Artur Barseghyan" +__license__ = "GPL-2.0-only OR LGPL-2.1-or-later" +__all__ = ("SQLAlchemyIntegrationTestCase",) + + +class SQLAlchemyTestTypesTestCase(TestCase): + + SQLALCHEMY_DATABASE_URI = "sqlite://" + TESTING = True + + def create_app(self): + + # pass in test configuration + return create_app("config_test.py") + + def setUp(self): + db.create_all() + + def tearDown(self): + db.session.remove() + db.drop_all() + + # *********************************************************** + # ************************ Tests **************************** + # *********************************************************** + + def test_choices_with_extras(self): + c1 = ChoiceWithExtras( + **{ + "code": valuta.EUR.uid, + "value": 10000, + } + ) + + c2 = ChoiceWithExtras( + **{ + "code": valuta.EUR.uid, + "value": 10000, + } + ) + self.assertEqual(c1, c2) diff --git a/src/valuta/contrib/sqlalchemy_integration/types.py b/src/valuta/contrib/sqlalchemy_integration/types.py index 4a7b8cf..b6d3e56 100644 --- a/src/valuta/contrib/sqlalchemy_integration/types.py +++ b/src/valuta/contrib/sqlalchemy_integration/types.py @@ -8,7 +8,11 @@ __author__ = "Artur Barseghyan" __copyright__ = "2021 Artur Barseghyan" __license__ = "GPL-2.0-only OR LGPL-2.1-or-later" -__all__ = ("CurrencyType",) +__all__ = ( + "CurrencyType", + "ChoiceWithExtras", + "ChoiceTypeWithExtrasImpl", +) class ChoiceWithExtras(Choice):