test_orders.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import pytest
  2. from unittest.mock import MagicMock
  3. def test_create_order_authorized(client, db_mock, mocker):
  4. # Mock background tasks to avoid side effects
  5. mocker.patch("fastapi.BackgroundTasks.add_task")
  6. db_mock.execute_query.side_effect = None
  7. db_mock.execute_query.return_value = [{"id": 1, "name_en": "PLA", "price_per_cm3": 0.05}]
  8. db_mock.execute_commit.return_value = 123
  9. import auth_utils
  10. token = auth_utils.create_access_token({"sub": "test@example.com", "id": 1, "role": "user"})
  11. response = client.post(
  12. "/orders",
  13. headers={"Authorization": f"Bearer {token}"},
  14. data={
  15. "first_name": "Test",
  16. "last_name": "User",
  17. "phone": "12345678",
  18. "email": "test@example.com",
  19. "shipping_address": "123 Test St",
  20. "material_id": 1,
  21. "quantity": 2
  22. }
  23. )
  24. assert response.status_code == 200
  25. assert response.json()["order_id"] == 123
  26. def test_create_order_no_material_defaults(client, db_mock, mocker):
  27. mocker.patch("fastapi.BackgroundTasks.add_task")
  28. db_mock.execute_query.side_effect = None
  29. db_mock.execute_query.return_value = [] # Material not found
  30. response = client.post(
  31. "/orders",
  32. data={
  33. "first_name": "Test",
  34. "last_name": "User",
  35. "phone": "12345678",
  36. "email": "test@example.com",
  37. "shipping_address": "123 Test St",
  38. "material_id": 999,
  39. "quantity": 1
  40. }
  41. )
  42. # The current implementation defaults to "Unknown" material instead of 404
  43. assert response.status_code == 200
  44. assert response.json()["status"] == "success"