Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions api/sample.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# limitations under the License.
# ===============================================================================

from fastapi import APIRouter, Depends, Query, HTTPException
from fastapi import APIRouter, Depends, Query, HTTPException, Response
from sqlalchemy.exc import IntegrityError, ProgrammingError
from sqlalchemy.orm import Session
from starlette.status import HTTP_201_CREATED, HTTP_409_CONFLICT
Expand All @@ -27,7 +27,7 @@
from schemas import ResourceNotFoundResponse
from schemas.sample import SampleResponse, CreateSample, UpdateSample
from services.query_helper import paginated_all_getter, simple_get_by_id
from services.crud_helper import model_patcher
from services.crud_helper import model_patcher, model_deleter

router = APIRouter(
prefix="/sample",
Expand Down Expand Up @@ -118,7 +118,6 @@ def get_samples(
)


# ============= Get by ID =============================================
@router.get("/{sample_id}", summary="Get Sample by ID")
def get_sample_by_id(
sample_id: int, session: session_dependency
Expand All @@ -129,4 +128,12 @@ def get_sample_by_id(
return simple_get_by_id(session, Sample, sample_id)


# ======= DELETE ===============================================================


@router.delete("/{sample_id}", summary="Delete Sample by ID")
def delete_sample_by_id(sample_id: int, session: session_dependency) -> Response:
return model_deleter(session, Sample, sample_id)


# # ============= EOF =============================================
22 changes: 22 additions & 0 deletions tests/test_sample.py
Original file line number Diff line number Diff line change
Expand Up @@ -313,4 +313,26 @@ def test_get_sample_by_id_404_not_found(sample):
assert data["detail"] == "Sample with ID 999 not found."


# DELETE tests =================================================================


def test_delete_sample(second_sample):
response = client.delete(f"/sample/{second_sample.id}")
assert response.status_code == 204

# verify the sample is deleted
response = client.get(f"/sample/{second_sample.id}")
assert response.status_code == 404
data = response.json()
assert data["detail"] == f"Sample with ID {second_sample.id} not found."


def test_delete_sample_404_not_found(second_sample):
bad_sample_id = 999999
response = client.delete(f"/sample/{bad_sample_id}")
assert response.status_code == 404
data = response.json()
assert data["detail"] == f"Sample with ID {bad_sample_id} not found."


# ============= EOF =============================================
Loading