Aucune description

tests.py 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from django.test import TestCase
  2. from django.core.files.uploadedfile import SimpleUploadedFile
  3. from orgs.models import Organization
  4. from public_frontend.models import Lead
  5. from .models import Document
  6. from .controllers.pickup_request import PickupRequestController, PickupRequestData
  7. class PickupRequestControllerTests(TestCase):
  8. def setUp(self) -> None:
  9. self.org = Organization.objects.create(name="Test Org", code="TEST")
  10. self.ctrl = PickupRequestController()
  11. def test_submit_without_files_creates_lead_only(self):
  12. data = PickupRequestData(
  13. organization=self.org,
  14. name="Alice",
  15. email="alice@example.com",
  16. phone="+1 555 0000",
  17. address="123 Road",
  18. materials="PET bottles",
  19. preferred_at=None,
  20. files=[],
  21. )
  22. result = self.ctrl.submit(data)
  23. self.assertTrue(result.ok)
  24. self.assertIsNotNone(result.lead_id)
  25. self.assertEqual(result.document_ids, [])
  26. lead = Lead.objects.get(pk=result.lead_id)
  27. self.assertEqual(lead.organization, self.org)
  28. self.assertEqual(lead.name, "Alice")
  29. self.assertEqual(lead.subject, "Pickup Request")
  30. self.assertEqual(lead.source, "pickup_request")
  31. self.assertEqual(Document.objects.filter(object_id=lead.id).count(), 0)
  32. def test_submit_with_files_creates_documents(self):
  33. file1 = SimpleUploadedFile("photo1.jpg", b"fakejpegdata1", content_type="image/jpeg")
  34. file2 = SimpleUploadedFile("photo2.jpg", b"fakejpegdata2", content_type="image/jpeg")
  35. data = PickupRequestData(
  36. organization=self.org,
  37. name="Bob",
  38. email="bob@example.com",
  39. phone="+1 555 1111",
  40. address="456 Avenue",
  41. materials="Aluminum cans",
  42. preferred_at=None,
  43. files=[file1, file2],
  44. )
  45. result = self.ctrl.submit(data)
  46. self.assertTrue(result.ok)
  47. self.assertIsNotNone(result.lead_id)
  48. self.assertEqual(len(result.document_ids), 2)
  49. lead = Lead.objects.get(pk=result.lead_id)
  50. docs = Document.objects.filter(object_id=lead.id).order_by("id")
  51. self.assertEqual(docs.count(), 2)
  52. for d in docs:
  53. self.assertEqual(d.organization, self.org)
  54. self.assertEqual(d.kind, "pickup_request")
  55. self.assertEqual(d.content_object, lead)