Created
November 9, 2017 08:47
-
-
Save dastanko/7cec95547a2ff5c6b9682eddaf7d9c3d to your computer and use it in GitHub Desktop.
tdd of bussiness logic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import unittest | |
class AlreadyRegisteredUserWithSuchEmailException(Exception): | |
pass | |
class RegisterUser(object): | |
def __init__(self, user_storage): | |
self.user_storage = user_storage | |
def register(self, data): | |
email = data['email'] | |
self.user_storage.find_by_email(email) | |
class UserStorage(object): | |
def __init__(self): | |
self.user_list = [] | |
def find_by_email(self, email): | |
iterator = filter(lambda x: x['email'] == email, self.user_list) | |
return list(iterator) | |
def save(self, user): | |
self.user_list.append(user) | |
class User(object): | |
def __init__(self): | |
self._password = None | |
self._email = None | |
self._name = None | |
self._username = None | |
@property | |
def username(self): | |
return self._username | |
@username.setter | |
def username(self, value): | |
self._username = value | |
@property | |
def name(self): | |
return self._name | |
@name.setter | |
def name(self, value): | |
self._name = value | |
@property | |
def email(self): | |
return self._email | |
@email.setter | |
def email(self, value): | |
self._email = value | |
@property | |
def password(self): | |
return self._password | |
@password.setter | |
def password(self, value): | |
self._password = value | |
class UserStorageTestCase(unittest.TestCase): | |
def setUp(self): | |
self.storage = UserStorage() | |
self.user = User() | |
self.user.username = 'dastanko' | |
self.user.name = 'Dastan Kozhomuratov' | |
self.user.email = '[email protected]' | |
self.user.password = 'password' | |
def test_save(self): | |
self.assertIsNone(self.storage.save(self.user)) | |
class RegisterUserTestCase(unittest.TestCase): | |
def setUp(self): | |
self.data = { | |
'username': 'dastanko', | |
'name': 'Dastan Kozhomuratov', | |
'email': '[email protected]', | |
'password': 'password', | |
'password_confirmation': 'password' | |
} | |
self.storage = UserStorage() | |
self.usecase = RegisterUser(self.storage) | |
def test_register_user(self): | |
self.usecase.register(self.data) | |
def test_register_user_with_dublicate_email(self): | |
self.usecase.register(self.data) | |
with self.assertRaises(AlreadyRegisteredUserWithSuchEmailException) as ex: | |
self.usecase.register(self.data) | |
self.assertEqual(AlreadyRegisteredUserWithSuchEmailException, ex) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment