Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pytest
- from account.models import UserAccount
- from account.usecases import (
- RegisterUserAccount,
- UsernameAlreadyExistError
- )
- def create_user(username, email, password, **extra_fields):
- # mock for "create_user" method on the UserAccount model
- # to avoind touching the database. Unit tests should not
- # touch databases :)
- return UserAccount(
- username=username,
- email=email,
- password=password,
- **extra_fields
- )
- @pytest.fixture
- def mock_execute_dependencies(mocker):
- mocker.patch.object(UserAccount.objects, 'create_user', side_effect=create_user)
- mocker.patch.object(RegisterUserAccount, 'valid_data', return_value=None)
- mocker.patch.object(WelcomeEmail, 'send_to', return_value=None)
- class TestExecute:
- # Test the execute method on RegisterUserAccount use case
- def setup_method(self):
- # setup method will be executed on each test
- self._use_case = RegisterUserAccount(
- username='john.smith',
- email='john.smith@example.com',
- password='P@ssword',
- first_name='John',
- last_name='Smith',
- )
- def test_return_user_account_type(self, mock_execute_dependencies):
- result = self._use_case.execute()
- assert isinstance(result, UserAccount)
- def test_create_user_account_with_first_name(self, mock_execute_dependencies):
- expected_result = 'John'
- user_account = self._use_case.execute()
- assert user_account.first_name == expected_result
- def test_create_user_account_with_last_name(self, mock_execute_dependencies):
- expected_result = 'Smith'
- user_account = self._use_case.execute()
- assert user_account.last_name == expected_result
- class TestValidData:
- # Test the valid_data method on RegisterUserAccount use case
- def test_when_username_already_exists_raise_username_already_exist_error(self, mocker):
- qs_mock = MockSet(
- UserAccount(
- username='john.smith',
- email='john.smith@example.com'
- )
- )
- mocker.patch.object(
- UserAccount.objects,
- 'find_by_username',
- return_value=qs_mock
- )
- with pytest.raises(UsernameAlreadyExistError):
- use_case = RegisterUserAccount(
- 'john.smith',
- 'john.smith@example.com',
- 'P@ssword9'
- )
- use_case.valid_data()
- def test_when_username_does_not_exists_returns_true(self, mocker):
- expected_result = True
- qs_mock = MockSet()
- mocker.patch.object(
- UserAccount.objects,
- 'find_by_username',
- return_value=qs_mock
- )
- use_case = RegisterUserAccount(
- 'john.smith',
- 'john.smith@example.com',
- 'P@ssword9'
- )
- result = use_case.valid_data()
- assert result == expected_result
Add Comment
Please, Sign In to add comment