diff --git a/blackmesa/records/tests/test_record_queries.py b/blackmesa/records/tests/test_record_queries.py index a5fd94a..903c31f 100644 --- a/blackmesa/records/tests/test_record_queries.py +++ b/blackmesa/records/tests/test_record_queries.py @@ -89,46 +89,3 @@ class TestQueryBuilder(TestCase): self.assertEqual(len(entities), len(self.celestials)) self.assertEqual(callback_one.call_count, len(self.celestials)) self.assertEqual(callback_two.call_count, len(self.celestials)) - - def test_double_value_technique(self): - """ - Records open a new sort of technique for late calling details from dataclasses. - imagine you have a dataclass called EntityIndex, which has only one field from the database: id. - - however it has custom fields, where you store a lambda expression. - - you could e.g. use it in a subquery, while still access the data. - however this will hit the database twice if you evaluate the iterator yourself, as the lambda is not lazy. - - note this is mainly a thought experiment. - """ - - planet_queryset = Celestial.objects.filter(orbits__name='Sol', celestial_type__lte=4) - - @dataclass - class DetailedEntity: - id: int - name: str - - @dataclass - class IndexEntity: - id: int - detail: DetailedEntity - - def get_details_exec(data): - return Celestial.objects.filter(pk=data.get('id')).records(DetailedEntity).first() - - get_details = mock.Mock(side_effect=get_details_exec) - - # retrieves data per key only. - my_planets = planet_queryset.records(IndexEntity, detail=Lambda(get_details)) - my_moons = Celestial.objects.filter(orbits__in=my_planets).records(IndexEntity, detail=Lambda(get_details)) # legal - # django does not consume the iterator internally for subqueries: - self.assertEqual(get_details.call_count, 0) - # consume it ourselves... - for planet in my_planets: - self.assertIsNotNone(planet.detail.name) - self.assertEqual(get_details.call_count, len(self.planets)) - # but... - self.assertEqual(len(my_moons), len(self.moons)) - self.assertEqual(get_details.call_count, len(self.planets) + len(self.moons))