test_rules.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from unittest import mock
  2. from iepy.extraction import rules
  3. from iepy.data.models import RichToken
  4. from .manager_case import ManagerTestCase
  5. from .factories import EvidenceFactory
  6. class TestCachedSegmentEnrichedTokens(ManagerTestCase):
  7. def setUp(self):
  8. rules.cached_segment_enriched_tokens.cache_clear()
  9. self.s1 = EvidenceFactory(markup="The physicist "
  10. "{Albert Einstein|Person*} was born in "
  11. "{Germany|location} and died in the "
  12. "{United States|location**}"
  13. " .").segment.hydrate()
  14. self.s2 = EvidenceFactory(markup="The little dog {Terry|Dog} happily "
  15. "eats his food in {Babaria|location} while "
  16. "the blond, pale kids sing creepy "
  17. "stuff .").segment.hydrate()
  18. def test_simple(self):
  19. xs = rules.cached_segment_enriched_tokens(self.s1)
  20. self.assertTrue(isinstance(xs, list))
  21. self.assertTrue(all(isinstance(x, RichToken) for x in xs))
  22. def test_cache_works_1(self):
  23. xs = rules.cached_segment_enriched_tokens(self.s1)
  24. rules.cached_segment_enriched_tokens(self.s2)
  25. ys = rules.cached_segment_enriched_tokens(self.s1)
  26. self.assertTrue(xs is ys)
  27. def test_cache_works_2(self):
  28. mockedGET = mock.MagicMock(return_value=self.s1.get_enriched_tokens())
  29. self.s1.get_enriched_tokens = mockedGET
  30. rules.cached_segment_enriched_tokens(self.s1)
  31. rules.cached_segment_enriched_tokens(self.s1)
  32. mockedGET.assert_called_once_with()