test_entity.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. from unittest import mock
  2. from django.core.exceptions import ObjectDoesNotExist
  3. from .manager_case import ManagerTestCase
  4. from .factories import (
  5. IEDocFactory, GazetteItemFactory,
  6. EntityFactory, EntityKindFactory,
  7. )
  8. from iepy.data.models import GazetteItem, Entity
  9. from iepy.data.db import EntityOccurrenceManager
  10. class TestEntityGazetteRelation(ManagerTestCase):
  11. def test_delete_entity_removes_gazette_item(self):
  12. entity = EntityFactory()
  13. entity.gazette = GazetteItemFactory()
  14. entity.save()
  15. gazette_id = entity.gazette.id
  16. self.assertIsNotNone(GazetteItem.objects.get(pk=gazette_id))
  17. entity.delete()
  18. with self.assertRaises(ObjectDoesNotExist):
  19. GazetteItem.objects.get(pk=gazette_id)
  20. def test_entity_delete_withou_gazette_works(self):
  21. entity = EntityFactory()
  22. self.assertIsNone(entity.gazette)
  23. entity.delete()
  24. def test_delete_gazette_removes_entity(self):
  25. gazette = GazetteItemFactory()
  26. entity = EntityFactory()
  27. entity.gazette = gazette
  28. entity.save()
  29. gazette.save()
  30. entity_id = entity.id
  31. gazette.delete()
  32. with self.assertRaises(ObjectDoesNotExist):
  33. Entity.objects.get(pk=entity_id)
  34. def test_other_entities_are_not_deleted(self):
  35. gazette = GazetteItemFactory()
  36. entity1 = EntityFactory()
  37. entity2 = EntityFactory()
  38. gazette.save()
  39. entity1.gazette = gazette
  40. entity1.save()
  41. entity2.save()
  42. entity1_id = entity1.id
  43. entity2_id = entity2.id
  44. gazette.delete()
  45. with self.assertRaises(ObjectDoesNotExist):
  46. Entity.objects.get(pk=entity1_id)
  47. try:
  48. Entity.objects.get(pk=entity2_id)
  49. except ObjectDoesNotExist:
  50. self.fail("Entity does not exists and it should")
  51. class TestEntityOccurrenceCreation(ManagerTestCase):
  52. def test_entity_created(self):
  53. kind = EntityKindFactory()
  54. doc = IEDocFactory()
  55. offset = 0
  56. offset_end = 1
  57. entity_count = Entity.objects.all().count()
  58. EntityOccurrenceManager.create_with_entity(
  59. kind, doc, offset, offset_end
  60. )
  61. new_entity_count = Entity.objects.all().count()
  62. self.assertEqual(new_entity_count, entity_count + 1)
  63. def test_segmenter_is_run(self):
  64. with mock.patch("iepy.preprocess.segmenter.SyntacticSegmenterRunner") as mock_segmenter:
  65. kind = EntityKindFactory()
  66. doc = IEDocFactory()
  67. offset = 0
  68. offset_end = 1
  69. EntityOccurrenceManager.create_with_entity(
  70. kind, doc, offset, offset_end
  71. )
  72. self.assertTrue(mock_segmenter.called)