Пример #1
0
def test_should_delete_the_goal_if_all_data_is_OK_and_the_admin_is_logged_in(
        database):
    database.executescript(
        "INSERT INTO admin_users VALUES('admin-1', 'user-1');")
    user_repository = UserRepository(
        None,
        database,
        get_current_user_id=lambda: "admin-1",
    )
    goal_repository = GoalRepository(None, database)
    goal_interactor = GoalInteractor(None, goal_repository, user_repository)
    data = {
        "id": "test-id",
        "date": "2020-03-15",
        "title": "test-title",
        "category": "test-category",
        "status": 0,
        "user_id": "user-1"
    }
    goal_interactor.save_goal(data)
    goals = goal_interactor.get_goals_by_date_and_assigned_user_id(
        "2020-03-15", "user-1")
    assert len(goals) == 1
    assert goals[0].id == "test-id"
    goal_interactor.delete_goal_by_id("test-id")
    goals = goal_interactor.get_goals_by_date_and_assigned_user_id(
        "2020-03-15", "user-1")
    assert goals == []
Пример #2
0
def test_should_get_NotAuthorizedError_if_the_user_doesnt_have_an_admin_role(database):
    user_repository = UserRepository(
        None,
        database,
        get_current_user_id=lambda: "user-1",
    )
    goal_repository = GoalRepository(None, database)
    goal_interactor = GoalInteractor(
        None, goal_repository, user_repository)
    data = {
        "id": "test-id",
        "date": "2020-03-21",
        "title": "test-title",
        "category": "test-category",
        "status": 1,
        "user_id": "user-1"
    }
    with pytest.raises(NotAuthorizedError) as exception:
        goal_interactor.save_goal(data)
    assert exception.value.data == {
        "msg": "This operation is not authorized."
    }
Пример #3
0
def test_should_get_NotFoundError_if_the_user_doesnt_exist(database):
    user_repository = UserRepository(
        None,
        database,
        get_current_user_id=lambda: "admin-1",
    )
    goal_repository = GoalRepository(None, database)
    goal_interactor = GoalInteractor(
        None, goal_repository, user_repository)
    data = {
        "id": "test-id",
        "date": "2020-03-21",
        "title": "test-title",
        "category": "test-category",
        "status": 1,
        "user_id": "user-doesnt-exist"
    }
    with pytest.raises(NotFoundError) as exception:
        goal_interactor.save_goal(data)
    assert exception.value.data == {
        "msg": "User with id 'user-doesnt-exist' not found."
    }
Пример #4
0
def test_should_get_BadRequestError_if_the_goal_status_isnt_zero_or_one(database):
    user_repository = UserRepository(
        None,
        database,
        get_current_user_id=lambda: "admin-1",
    )
    goal_repository = GoalRepository(None, database)
    goal_interactor = GoalInteractor(
        None, goal_repository, user_repository)
    data = {
        "id": "test-id",
        "date": "2020-03-15",
        "title": "test-title",
        "category": "test-category",
        "status": "status-with-wrong-format",
        "user_id": "user-1"
    }
    with pytest.raises(BadRequestError) as exception:
        goal_interactor.save_goal(data)
    assert exception.value.data == {
        "status": "BAD VALUE"
    }
Пример #5
0
def test_should_update_the_goal_if_the_goal_exists_and_all_data_is_OK_and_the_admin_is_logged_in(database):
    database.executescript(
        """
        INSERT INTO admin_users VALUES
        ('admin-1', 'user-1');
        
        INSERT INTO goals VALUES
        ("test-id-1", "2020-03-15", "test-title", "test-category", 1, "user-1"),
        ("test-id-2", "2020-03-15", "test-title", "test-category", 1, "user-1"),
        ("test-id-3", "2020-03-15", "test-title", "test-category", 1, "user-1"),
        ("test-id-4", "2020-03-16", "test-title", "test-category", 0, "user-1"),
        ("test-id-5", "2020-03-17", "test-title", "test-category", 1, "user-2");
        """)
    user_repository = UserRepository(
        None,
        database,
        get_current_user_id=lambda: "admin-1",
    )
    goal_repository = GoalRepository(None, database)
    goal_interactor = GoalInteractor(None, goal_repository, user_repository)
    data = {
        "id": "test-id-1",
        "date": "2020-03-18",
        "title": "test-title",
        "category": "test-category",
        "status": 0,
        "user_id": "user-1"
    }
    goal_interactor.save_goal(data)
    goals = goal_interactor.get_goals_by_date_and_assigned_user_id(
        "2020-03-18", "user-1")
    assert len(goals) == 1
    assert goals[0].id == "test-id-1"
    assert goals[0].date == "2020-03-18"
    assert goals[0].title == "test-title"
    assert goals[0].category == "test-category"
    assert goals[0].status == False
    assert goals[0].user_id == "user-1"
Пример #6
0
def test_should_raise_BadRequestError_if_there_are_not_the_required_fields_in_the_request(database):
    user_repository = UserRepository(
        None,
        database,
        get_current_user_id=lambda: "admin-1",
    )
    goal_repository = GoalRepository(None, database)
    goal_interactor = GoalInteractor(None, goal_repository, user_repository)

    all_fields_missing = {}
    with pytest.raises(BadRequestError) as exception:
        goal_interactor.save_goal(all_fields_missing)
    assert exception.value.data == {
        "id": "REQUIRED",
        "date": "REQUIRED",
        "title": "REQUIRED",
        "category": "REQUIRED",
        "status": "REQUIRED",
        "user_id": "REQUIRED",
    }

    id_missing = {
        "date": "2020-02-05",
        "title": "test-title",
        "category": "test-category",
        "status": 1,
        "user_id": "user-1"
    }
    with pytest.raises(BadRequestError) as exception:
        goal_interactor.save_goal(id_missing)
    assert exception.value.data == {
        "id": "REQUIRED",
    }

    date_missing = {
        "id": "test-id",
        "title": "test-title",
        "category": "test-category",
        "status": 1,
        "user_id": "user-1"
    }
    with pytest.raises(BadRequestError) as exception:
        goal_interactor.save_goal(date_missing)
    assert exception.value.data == {
        "date": "REQUIRED",
    }

    title_missing = {
        "id": "test-id",
        "date": "2020-02-05",
        "category": "test-category",
        "status": 1,
        "user_id": "user-1"
    }
    with pytest.raises(BadRequestError) as exception:
        goal_interactor.save_goal(title_missing)
    assert exception.value.data == {
        "title": "REQUIRED",
    }

    category_missing = {
        "id": "test-id",
        "date": "2020-02-05",
        "title": "test-title",
        "status": 1,
        "user_id": "user-1"
    }
    with pytest.raises(BadRequestError) as exception:
        goal_interactor.save_goal(category_missing)
    assert exception.value.data == {
        "category": "REQUIRED",
    }

    status_missing = {
        "id": "test-id",
        "date": "2020-02-05",
        "title": "test-title",
        "category": "test-category",
        "user_id": "user-1"
    }
    with pytest.raises(BadRequestError) as exception:
        goal_interactor.save_goal(status_missing)
    assert exception.value.data == {
        "status": "REQUIRED",
    }

    user_id_missing = {
        "id": "test-id",
        "date": "2020-02-05",
        "title": "test-title",
        "category": "test-category",
        "status": 1
    }
    with pytest.raises(BadRequestError) as exception:
        goal_interactor.save_goal(user_id_missing)
    assert exception.value.data == {
        "user_id": "REQUIRED",
    }