diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/users/admin.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/users/admin.py index f038b2e28..ac3712015 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/users/admin.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/users/admin.py @@ -15,6 +15,11 @@ class MyUserChangeForm(UserChangeForm): class MyUserCreationForm(UserCreationForm): + + error_message = UserCreationForm.error_messages.update({ + 'duplicate_username': 'This username has already been taken.' + }) + class Meta(UserCreationForm.Meta): model = User diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/users/tests/__init__.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/users/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/users/tests/test_admin.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/users/tests/test_admin.py new file mode 100644 index 000000000..d2127d971 --- /dev/null +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/users/tests/test_admin.py @@ -0,0 +1,42 @@ +from django import forms + +from test_plus.test import TestCase + +from ..admin import MyUserCreationForm + + +class TestMyUserCreationForm(TestCase): + + def setUp(self): + self.user = self.make_user() + + def test_clean_username_success(self): + # Instantiate the form with a new username + form = MyUserCreationForm({ + 'username': 'alamode', + 'password1': '123456', + 'password2': '123456', + }) + # Run is_valid() to trigger the validation + valid = form.is_valid() + self.assertTrue(valid) + + # Run the actual clean_username method + username = form.clean_username() + self.assertEqual('alamode', username) + + def test_clean_username_false(self): + # Instantiate the form with the same username as self.user + form = MyUserCreationForm({ + 'username': self.user.username, + 'password1': '123456', + 'password2': '123456', + }) + # Run is_valid() to trigger the validation, which is going to fail + # because the username is already taken + valid = form.is_valid() + self.assertFalse(valid) + + # The form.errors dict should contain a single error called 'username' + self.assertTrue(len(form.errors) == 1) + self.assertTrue('username' in form.errors)