Guest User

Untitled

a guest
Jan 5th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. import pytest
  2.  
  3. from account.models import UserAccount
  4. from account.usecases import (
  5. RegisterUserAccount,
  6. UsernameAlreadyExistError
  7. )
  8.  
  9.  
  10. def create_user(username, email, password, **extra_fields):
  11. # mock for "create_user" method on the UserAccount model
  12. # to avoind touching the database. Unit tests should not
  13. # touch databases :)
  14.  
  15. return UserAccount(
  16. username=username,
  17. email=email,
  18. password=password,
  19. **extra_fields
  20. )
  21.  
  22.  
  23. @pytest.fixture
  24. def mock_execute_dependencies(mocker):
  25. mocker.patch.object(UserAccount.objects, 'create_user', side_effect=create_user)
  26. mocker.patch.object(RegisterUserAccount, 'valid_data', return_value=None)
  27. mocker.patch.object(WelcomeEmail, 'send_to', return_value=None)
  28.  
  29.  
  30. class TestExecute:
  31. # Test the execute method on RegisterUserAccount use case
  32.  
  33. def setup_method(self):
  34. # setup method will be executed on each test
  35. self._use_case = RegisterUserAccount(
  36. username='john.smith',
  37. email='john.smith@example.com',
  38. password='P@ssword',
  39. first_name='John',
  40. last_name='Smith',
  41. )
  42.  
  43. def test_return_user_account_type(self, mock_execute_dependencies):
  44. result = self._use_case.execute()
  45. assert isinstance(result, UserAccount)
  46.  
  47. def test_create_user_account_with_first_name(self, mock_execute_dependencies):
  48. expected_result = 'John'
  49. user_account = self._use_case.execute()
  50. assert user_account.first_name == expected_result
  51.  
  52. def test_create_user_account_with_last_name(self, mock_execute_dependencies):
  53. expected_result = 'Smith'
  54. user_account = self._use_case.execute()
  55. assert user_account.last_name == expected_result
  56.  
  57.  
  58. class TestValidData:
  59. # Test the valid_data method on RegisterUserAccount use case
  60.  
  61. def test_when_username_already_exists_raise_username_already_exist_error(self, mocker):
  62. qs_mock = MockSet(
  63. UserAccount(
  64. username='john.smith',
  65. email='john.smith@example.com'
  66. )
  67. )
  68.  
  69. mocker.patch.object(
  70. UserAccount.objects,
  71. 'find_by_username',
  72. return_value=qs_mock
  73. )
  74.  
  75. with pytest.raises(UsernameAlreadyExistError):
  76. use_case = RegisterUserAccount(
  77. 'john.smith',
  78. 'john.smith@example.com',
  79. 'P@ssword9'
  80. )
  81.  
  82. use_case.valid_data()
  83.  
  84. def test_when_username_does_not_exists_returns_true(self, mocker):
  85. expected_result = True
  86. qs_mock = MockSet()
  87.  
  88. mocker.patch.object(
  89. UserAccount.objects,
  90. 'find_by_username',
  91. return_value=qs_mock
  92. )
  93.  
  94. use_case = RegisterUserAccount(
  95. 'john.smith',
  96. 'john.smith@example.com',
  97. 'P@ssword9'
  98. )
  99.  
  100. result = use_case.valid_data()
  101. assert result == expected_result
Add Comment
Please, Sign In to add comment