def test_should_get_NotAuthorizedError_if_the_current_user_doesnt_have_an_admin_role(database): user_repository = UserRepository( None, database, get_current_user_id=lambda: "user-1", ) user_interactor = UserInteractor(None, user_repository) with pytest.raises(NotAuthorizedError) as exception: user_interactor.get_progress_by_user_id("user-2") assert exception.value.data == { "msg": "This operation is not authorized." }
def test_should_get_NotAuthorizedError_if_the_admin_is_not_logged_in(database): user_repository = UserRepository( None, database, get_current_user_id=lambda: None, ) user_interactor = UserInteractor(None, user_repository) with pytest.raises(NotAuthorizedError) as exception: user_interactor.get_progress_by_user_id("user-1") assert exception.value.data == { "msg": "This operation is not authorized. Please, log in." }
def test_should_get_NotFoundError_if_the_user_doesnt_exist(database): user_repository = UserRepository( None, database, get_current_user_id=lambda: "admin-1", ) user_interactor = UserInteractor(None, user_repository) with pytest.raises(NotFoundError) as exception: user_interactor.get_progress_by_user_id("user-not-exists") assert exception.value.data == { "msg": "User with id 'user-not-exists' not found." }
def test_should_get_the_progress_of_the_user_in_each_goal_category_if_there_is_data_and_the_admin_is_logged_in(database): database.executescript( """ INSERT INTO admin_users VALUES ("admin-1", "user-1"), ("admin-1", "user-2"), ("admin-1", "user-3"), ("admin-1", "user-4"); INSERT INTO goals VALUES ("test-goal-id-1", "2020-03-21", "test-title", "test-category-1", 1, "user-1"), ("test-goal-id-2", "2020-03-21", "test-title", "test-category-2", 0, "user-1"), ("test-goal-id-3", "2020-03-22", "test-title", "test-category-2", 1, "user-1"), ("test-goal-id-4", "2020-03-22", "test-title", "test-category-1", 1, "user-2"); """ ) goal_repository = GoalRepository(None, database) user_repository = UserRepository( None, database, get_current_user_id=lambda: "admin-1", ) user_interactor = UserInteractor(None, user_repository, goal_repository) progress = user_interactor.get_progress_by_user_id("user-1") assert progress["test-category-1"]["completed"] == 1 assert progress["test-category-1"]["total"] == 1 assert progress["test-category-2"]["completed"] == 1 assert progress["test-category-2"]["total"] == 2
def test_should_get_an_empty_dict_if_there_is_no_data_and_the_admin_is_logged_in(database): database.executescript( """ INSERT INTO admin_users VALUES ("admin-1", "user-1"), ("admin-1", "user-2"), ("admin-1", "user-3"), ("admin-1", "user-4"); """ ) goal_repository = GoalRepository(None, database) user_repository = UserRepository( None, database, get_current_user_id=lambda: "admin-1", ) user_interactor = UserInteractor(None, user_repository, goal_repository) progress = user_interactor.get_progress_by_user_id("user-1") assert progress == {}