def test_create_working_day_by_user(client: TestClient,
                                    normal_user_token_headers: dict,
                                    db: Session) -> None:
    r = client.get(f"{settings.API_V1_STR}/users/me",
                   headers=normal_user_token_headers)
    user_id = r.json()["id"]
    contract = create_random_contract(db, user_id=user_id)
    day_type = create_random_day_type(db)
    data = {
        "day": str(random_date_range(contract.start, contract.end)),
        "start": str(random_time_range(8, 12)),
        "end": str(random_time_range(14, 19))
    }
    response = client.post(
        f"{settings.API_V1_STR}/working_days/" +
        f"?day_type_id={day_type.id}&contract_id={contract.id}",
        headers=normal_user_token_headers,
        json=data,
    )
    assert response.status_code == 200
    content = response.json()
    assert "id" in content
    assert content["day_type_id"] == day_type.id
    assert content["contract_id"] == contract.id
    assert content["day"] == data["day"]
    assert content["start"] == data["start"]
    assert content["end"] == data["end"]
Exemple #2
0
def test_update_day_type_by_user(client: TestClient,
                                 normal_user_token_headers: dict,
                                 db: Session) -> None:
    day_type = create_random_day_type(db)
    data = {"name": "Foo4"}
    response = client.put(f"{settings.API_V1_STR}/day_types/{day_type.id}",
                          headers=normal_user_token_headers,
                          json=data)
    assert response.status_code == 400
Exemple #3
0
def test_delete_day_type_by_user(client: TestClient,
                                 normal_user_token_headers: dict,
                                 db: Session) -> None:
    day_type = create_random_day_type(db)
    response = client.delete(
        f"{settings.API_V1_STR}/day_types/{day_type.id}",
        headers=normal_user_token_headers,
    )
    assert response.status_code == 400
Exemple #4
0
def test_delete_day_type_by_admin(client: TestClient,
                                  superuser_token_headers: dict,
                                  db: Session) -> None:
    day_type = create_random_day_type(db)
    response = client.delete(
        f"{settings.API_V1_STR}/day_types/{day_type.id}",
        headers=superuser_token_headers,
    )
    assert response.status_code == 200
    content = response.json()
    assert content["id"] == day_type.id
    assert content["name"] == day_type.name
def test_create_working_day_by_another_user(client: TestClient,
                                            normal_user_token_headers: dict,
                                            db: Session) -> None:
    user = create_random_user(db)
    contract = create_random_contract(db, user_id=user.id)
    day_type = create_random_day_type(db)
    data = {
        "day": str(random_date_range(contract.start, contract.end)),
        "start": str(random_time_range(8, 12)),
        "end": str(random_time_range(14, 19))
    }
    response = client.post(
        f"{settings.API_V1_STR}/working_days/" +
        f"?day_type_id={day_type.id}&contract_id={contract.id}",
        headers=normal_user_token_headers,
        json=data,
    )
    assert response.status_code == 400
def create_random_working_day(
    db: Session,
    user_id: int = None,
    nanny_id: int = None,
    day_type_id: int = None,
    contract_id: int = None,
    day: str = None,
) -> models.WorkingDay:
    if not user_id:
        user = create_random_user(db)
        user_id = user.id
    if not nanny_id:
        nanny = create_random_user(db)
        nanny_id = nanny.id
    if day_type_id:
        day_type = crud.day_type.get(db, id=day_type_id)
    else:
        day_type = create_random_day_type(db)
    if contract_id:
        contract = crud.contract.get(db, id=contract_id)
    else:
        contract = create_random_contract(db,
                                          user_id=user.id,
                                          nanny_id=nanny.id)
    if not day:
        day = random_date_range(contract.start, contract.end)

    start_time = random_time_range(8, 12)
    start = str(start_time)
    end_time = random_time_range(14, 19)
    end = str(end_time)

    working_day_in = WorkingDayCreate(
        day=day,
        start=start,
        end=end,
    )
    return crud.working_day.create_with_owner(
        db=db,
        obj_in=working_day_in,
        day_type_id=day_type.id,
        contract_id=contract.id,
    )
def test_delete_working_day_by_user(client: TestClient,
                                    normal_user_token_headers: dict,
                                    db: Session) -> None:
    r = client.get(f"{settings.API_V1_STR}/users/me",
                   headers=normal_user_token_headers)
    user_id = r.json()["id"]
    contract = create_random_contract(db, user_id=user_id)
    day_type = create_random_day_type(db)
    working_day = create_random_working_day(db,
                                            day_type_id=day_type.id,
                                            contract_id=contract.id)
    response = client.delete(
        f"{settings.API_V1_STR}/working_days/{working_day.id}",
        headers=normal_user_token_headers,
    )
    assert response.status_code == 200
    content = response.json()
    assert "id" in content
    assert "day_type_id" in content
    assert "contract_id" in content
    assert content["day"] == str(working_day.day)
    assert content["start"] == str(working_day.start)
    assert content["end"] == str(working_day.end)