Simplify method signatures in Users

This commit is contained in:
richard-dds 2018-08-03 13:26:09 -04:00
parent 38a4b1bc86
commit 57cfcd9702
3 changed files with 31 additions and 39 deletions

View File

@ -20,11 +20,11 @@ class Users(object):
return user return user
@classmethod @classmethod
def create(self, user_id, atat_role_name): def create(cls, atat_role_name, **kwargs):
atat_role = Roles.get(atat_role_name) atat_role = Roles.get(atat_role_name)
try: try:
user = User(id=user_id, atat_role=atat_role) user = User(atat_role=atat_role, **kwargs)
db.session.add(user) db.session.add(user)
db.session.commit() db.session.commit()
except IntegrityError: except IntegrityError:
@ -33,18 +33,18 @@ class Users(object):
return user return user
@classmethod @classmethod
def get_or_create(cls, user_id, *args, **kwargs): def get_or_create(cls, user_id, **kwargs):
try: try:
user = Users.get(user_id) user = Users.get(user_id)
except NotFoundError: except NotFoundError:
user = Users.create(user_id, *args, **kwargs) user = Users.create(id=user_id, **kwargs)
db.session.add(user) db.session.add(user)
db.session.commit() db.session.commit()
return user return user
@classmethod @classmethod
def update(self, user_id, atat_role_name): def update(cls, user_id, atat_role_name):
user = Users.get(user_id) user = Users.get(user_id)
atat_role = Roles.get(atat_role_name) atat_role = Roles.get(atat_role_name)

View File

@ -5,64 +5,56 @@ from atst.domain.users import Users
from atst.domain.exceptions import NotFoundError, AlreadyExistsError from atst.domain.exceptions import NotFoundError, AlreadyExistsError
@pytest.fixture(scope="function")
def user_id(): def test_create_user():
return uuid4() user = Users.create("developer")
assert user.atat_role.name == "developer"
def test_create_user(user_id): def test_create_user_with_nonexistent_role():
user = Users.create(user_id, "developer")
assert user.id == user_id
def test_create_user_with_nonexistent_role(user_id):
with pytest.raises(NotFoundError): with pytest.raises(NotFoundError):
Users.create(user_id, "nonexistent") Users.create("nonexistent")
def test_create_already_existing_user(user_id): def test_get_or_create_nonexistent_user():
Users.create(user_id, "developer") user_id = uuid4()
with pytest.raises(AlreadyExistsError):
Users.create(user_id, "developer")
def test_get_or_create_nonexistent_user(user_id):
user = Users.get_or_create(user_id, atat_role_name="developer") user = Users.get_or_create(user_id, atat_role_name="developer")
assert user.id == user_id assert user.id == user_id
def test_get_or_create_existing_user(user_id): def test_get_or_create_existing_user():
user_id = uuid4()
Users.get_or_create(user_id, atat_role_name="developer") Users.get_or_create(user_id, atat_role_name="developer")
user = Users.get_or_create(user_id, atat_role_name="developer") user = Users.get_or_create(user_id, atat_role_name="developer")
assert user assert user
def test_get_user(user_id): def test_get_user():
Users.create(user_id, "developer") new_user = Users.create("developer")
user = Users.get(user_id) user = Users.get(new_user.id)
assert user.id == user_id assert user.id == new_user.id
def test_get_nonexistent_user(user_id): def test_get_nonexistent_user():
Users.create(user_id, "developer") Users.create("developer")
with pytest.raises(NotFoundError): with pytest.raises(NotFoundError):
Users.get(uuid4()) Users.get(uuid4())
def test_update_user(user_id): def test_update_user():
Users.create(user_id, "developer") new_user = Users.create("developer")
updated_user = Users.update(user_id, "ccpo") updated_user = Users.update(new_user.id, "ccpo")
assert updated_user.atat_role.name == "ccpo" assert updated_user.atat_role.name == "ccpo"
def test_update_nonexistent_user(user_id): def test_update_nonexistent_user():
Users.create(user_id, "developer") Users.create("developer")
with pytest.raises(NotFoundError): with pytest.raises(NotFoundError):
Users.update(uuid4(), "ccpo") Users.update(uuid4(), "ccpo")
def test_update_existing_user_with_nonexistent_role(user_id): def test_update_existing_user_with_nonexistent_role():
Users.create(user_id, "developer") new_user = Users.create("developer")
with pytest.raises(NotFoundError): with pytest.raises(NotFoundError):
Users.update(user_id, "nonexistent") Users.update(new_user.id, "nonexistent")

View File

@ -7,7 +7,7 @@ from atst.domain.users import Users
def test_can_create_new_workspace_user(): def test_can_create_new_workspace_user():
workspace_id = uuid4() workspace_id = uuid4()
user = Users.create(uuid4(), "developer") user = Users.create("developer")
workspace_user_dicts = [{"id": user.id, "workspace_role": "owner"}] workspace_user_dicts = [{"id": user.id, "workspace_role": "owner"}]
@ -20,7 +20,7 @@ def test_can_create_new_workspace_user():
def test_can_update_existing_workspace_user(): def test_can_update_existing_workspace_user():
workspace_id = uuid4() workspace_id = uuid4()
user = Users.create(uuid4(), "developer") user = Users.create("developer")
WorkspaceUsers.add_many( WorkspaceUsers.add_many(
workspace_id, [{"id": user.id, "workspace_role": "owner"}] workspace_id, [{"id": user.id, "workspace_role": "owner"}]