Image_Classifier_with_CNN / api /tests /test_router_feedback.py
iBrokeTheCode's picture
chore: Add API service files
6ab520d
from unittest import mock
import pytest
from app import db
from app.auth.jwt import get_current_user
from app.feedback.schema import DisplayFeedback, Feedback
from app.user.schema import User
from fastapi.testclient import TestClient
from main import app
from sqlalchemy.orm import Session
client = TestClient(app)
sample_user = User(
id=1,
username="testuser",
email="testuser@example.com",
name="Test User",
password="password",
)
sample_feedback = Feedback(
feedback="Great service!",
image_file_name="testimage.jpg",
predicted_class="dog",
score=0.95,
)
@pytest.fixture
def mock_db_session():
return mock.create_autospec(Session, instance=True)
@pytest.fixture
def mock_get_current_user():
return sample_user
@mock.patch("app.feedback.router.services.new_feedback")
def test_create_feedback(mock_new_feedback, mock_db_session, mock_get_current_user):
mock_new_feedback.return_value = sample_feedback
payload = {
"feedback": "Great service!",
"image_file_name": "testimage.jpg",
"predicted_class": "dog",
"score": 0.95,
}
app.dependency_overrides[db.get_db] = lambda: mock_db_session
app.dependency_overrides[get_current_user] = lambda: mock_get_current_user
response = client.post(
"/feedback/",
json=payload,
)
assert response.status_code == 201
mock_new_feedback.assert_called_once_with(payload, sample_user, mock_db_session)
@mock.patch("app.feedback.router.services.all_feedback")
def test_get_all_feedback(mock_all_feedback, mock_db_session, mock_get_current_user):
# Setup the mock service to return a list of feedback
mock_all_feedback.return_value = [
DisplayFeedback(
id=1,
feedback="Great service!",
score=0.95,
predicted_class="dog",
image_file_name="testimage.jpg",
)
]
app.dependency_overrides[db.get_db] = lambda: mock_db_session
app.dependency_overrides[get_current_user] = lambda: mock_get_current_user
response = client.get(
"/feedback/",
)
assert response.status_code == 200
mock_all_feedback.assert_called_once_with(mock_db_session, sample_user)