From 19b3d02f082d35bdfb65461f310ef1ff280a3a55 Mon Sep 17 00:00:00 2001 From: Simone Basso Date: Sat, 20 Jan 2018 13:16:26 +0100 Subject: [PATCH 1/5] users: add tests for UserManager --- backend/tests/users/test_managers.py | 59 ++++++++++++++++++++++++++++ backend/tests/users/test_models.py | 22 ++--------- 2 files changed, 62 insertions(+), 19 deletions(-) create mode 100644 backend/tests/users/test_managers.py diff --git a/backend/tests/users/test_managers.py b/backend/tests/users/test_managers.py new file mode 100644 index 0000000000..9cd73f3f5c --- /dev/null +++ b/backend/tests/users/test_managers.py @@ -0,0 +1,59 @@ +from django.contrib.auth import authenticate, get_user_model + +import pytest +from users.models import User +from users.managers import UserManager + + +@pytest.mark.django_db +def test_create_user_empty_email(): + with pytest.raises(ValueError) as error: + user = UserManager().create_user('', 'johnpassword') + + assert 'The given email must be set' in str(error.value) + + +@pytest.mark.django_db +def test_create_user_with_email_and_password(): + user = User.objects.create_user('lennon@thebeatles.com', 'johnpassword') + + assert user.email == 'lennon@thebeatles.com' + assert not user.is_superuser + assert not user.is_staff + + +@pytest.mark.django_db +def test_create_user_superuser_with_email_and_password(): + user = User.objects.create_user( + 'lennon@thebeatles.com', + 'johnpassword', + is_superuser=True + ) + + assert user.email == 'lennon@thebeatles.com' + assert user.is_superuser + assert not user.is_staff + + +@pytest.mark.django_db +def test_cannot_create_superuser_not_superuser_flag(): + with pytest.raises(ValueError) as error: + user = User.objects.create_superuser( + 'lennon@thebeatles.com', + 'johnpassword', + is_superuser=False + ) + + assert 'Superuser must have is_superuser=True.' in str(error.value) + + +@pytest.mark.django_db +def test_create_superuser_with_email_and_password(): + user = User.objects.create_superuser( + 'lennon@thebeatles.com', + 'johnpassword' + ) + + assert user.email == 'lennon@thebeatles.com' + assert user.is_staff + assert user.is_superuser diff --git a/backend/tests/users/test_models.py b/backend/tests/users/test_models.py index df77b93171..f368c1ace8 100644 --- a/backend/tests/users/test_models.py +++ b/backend/tests/users/test_models.py @@ -2,31 +2,15 @@ import pytest from users.models import User +from users.managers import UserManager def test_that_get_user_model_returns_correct_model(): assert get_user_model() == User - -@pytest.mark.django_db -def test_create_user_with_email_and_password(): - user = User.objects.create_user('lennon@thebeatles.com', 'johnpassword') - - assert user.email == 'lennon@thebeatles.com' - assert not user.is_superuser - assert not user.is_staff - - @pytest.mark.django_db -def test_create_superuser_with_email_and_password(): - user = User.objects.create_superuser( - 'lennon@thebeatles.com', - 'johnpassword' - ) - - assert user.email == 'lennon@thebeatles.com' - assert user.is_staff - assert user.is_superuser +def test_user_manager(): + assert isinstance(User.objects, UserManager) @pytest.mark.django_db From c665845d706c212ef16496587e751b72f1c72c08 Mon Sep 17 00:00:00 2001 From: Simone Basso Date: Sat, 20 Jan 2018 13:18:01 +0100 Subject: [PATCH 2/5] user: add test for models --- backend/tests/users/test_models.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/backend/tests/users/test_models.py b/backend/tests/users/test_models.py index f368c1ace8..ad0bb19987 100644 --- a/backend/tests/users/test_models.py +++ b/backend/tests/users/test_models.py @@ -23,3 +23,9 @@ def test_create_user_and_authenticate(): ) assert user == authenticated_user + +@pytest.mark.django_db +def test_user_get_short_name(): + user = User.objects.create_user('lennon@thebeatles.com', 'johnpassword') + + assert 'lennon@thebeatles.com' == user.get_short_name() From b7a59ede71894ef5374a94655044730f6a65fb65 Mon Sep 17 00:00:00 2001 From: Simone Basso Date: Sat, 20 Jan 2018 13:21:41 +0100 Subject: [PATCH 3/5] user: ignore debug branch --- backend/users/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/users/urls.py b/backend/users/urls.py index c11993a26b..032d3bf7d8 100644 --- a/backend/users/urls.py +++ b/backend/users/urls.py @@ -7,7 +7,7 @@ path('post-login', post_login_view, name='post-login'), ] -if settings.DEBUG: +if settings.DEBUG: # pragma: no cover from django.views.generic import TemplateView urlpatterns += [ From fdaae0369ef0dd9441e78f06796053b5f40786fa Mon Sep 17 00:00:00 2001 From: Simone Basso Date: Sat, 20 Jan 2018 14:55:38 +0100 Subject: [PATCH 4/5] users: add tests for views --- backend/tests/users/test_views.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 backend/tests/users/test_views.py diff --git a/backend/tests/users/test_views.py b/backend/tests/users/test_views.py new file mode 100644 index 0000000000..cf3849e78b --- /dev/null +++ b/backend/tests/users/test_views.py @@ -0,0 +1,26 @@ +import pytest +from django.urls import reverse +from users.models import User + + +def test_post_login_view(client): + url = reverse('post-login') + response = client.get(url) + + assert response.status_code == 200 + + assert b'Something went wrong.' in response.content + + +@pytest.mark.django_db +def test_post_login_view_as_logged(client): + user = User.objects.create_user('lennon@thebeatles.com', 'johnpassword') + + client.login(username='lennon@thebeatles.com', password='johnpassword') + + url = reverse('post-login') + response = client.get(url) + + assert response.status_code == 200 + + assert b'lennon@thebeatles.com' in response.content From 490088ed3425f251e4f6c6fbf5e7a815922f9c47 Mon Sep 17 00:00:00 2001 From: Simone Basso Date: Sat, 20 Jan 2018 15:00:02 +0100 Subject: [PATCH 5/5] circle-ci: add threshold of 100% --- .circleci/config.yml | 2 +- backend/README.md | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 550339ed5f..4a36665c91 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -42,7 +42,7 @@ jobs: command: | . venv/bin/activate cd backend - py.test --cov-report xml --cov=. + py.test --cov-report xml --cov=. --cov-fail-under 100 - run: name: upload codacy report diff --git a/backend/README.md b/backend/README.md index 891192bf45..ab4e730c51 100644 --- a/backend/README.md +++ b/backend/README.md @@ -1,3 +1,8 @@ # PYCON [![Updates](https://pyup.io/repos/github/patrick91/pycon/shield.svg?token=1fa644e7-367a-431d-b906-0cfa23ddda9c)](https://pyup.io/repos/github/patrick91/pycon/) [![Python 3](https://pyup.io/repos/github/patrick91/pycon/python-3-shield.svg?token=1fa644e7-367a-431d-b906-0cfa23ddda9c)](https://pyup.io/repos/github/patrick91/pycon/) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/7472f142f7624ba4b7b735f90ad518f6)](https://www.codacy.com/app/simobasso/pycon?utm_source=github.com&utm_medium=referral&utm_content=patrick91/pycon&utm_campaign=Badge_Grade) + + +# Test + +`py.test --cov=. --cov-fail-under 100`