def test_get_attribute_catch_object_does_not_exist(self, applications,
                                                    versions):
     obj = versions[0].__class__.objects.get(
         pk=versions[0].pk)  # Refresh from DB
     applications[0].delete()
     getter = ModelAttributeGetter(())
     assert getter._get_attribute(obj, 'application') is MISSING_OBJECT
 def test_build_filter(self, path, lookup, value, expected_query_name):
     getter = ModelAttributeGetter(path)
     condition = getter.build_filter(lookup, value)
     assert isinstance(condition, Q)
     assert len(condition.children) == 1
     assert condition.children[0] == (expected_query_name, value)
 def test_get_values_missing_object(self, categories):
     getter = ModelAttributeGetter('applications.versions.major')
     VersionWithClassBasedProperties.objects.all().delete()
     assert getter.get_values(categories[0]) == []
     ApplicationWithClassBasedProperties.objects.all().delete()
     assert getter.get_values(categories[0]) == []
 def test_get_values(self, categories):
     getter = ModelAttributeGetter('applications.versions.major')
     assert Counter(getter.get_values(categories[0])) == Counter({
         2: 2,
         1: 6
     })
 def test_get_value_missing_object(self, applications, versions):
     obj = versions[0].__class__.objects.get(
         pk=versions[0].pk)  # Refresh from DB
     applications[0].delete()
     getter = ModelAttributeGetter('application.name')
     assert getter.get_value(obj) is MISSING_OBJECT
 def test_get_value(self, versions, path, expected_value):
     obj = versions[0]
     getter = ModelAttributeGetter(path)
     assert getter.get_value(obj) == expected_value
 def test_get_attribute_bubble_attribute_error(self, versions):
     getter = ModelAttributeGetter(())
     with pytest.raises(AttributeError):
         getter._get_attribute(versions[0], 'non_existent')
 def test_get_attribute_catch_attribute_error_on_none(self):
     getter = ModelAttributeGetter(())
     assert getter._get_attribute(None, 'non_existent') is MISSING_OBJECT
 def test_get_attribute(self, versions, attribute_name, expected_value):
     getter = ModelAttributeGetter(())
     assert getter._get_attribute(versions[0],
                                  attribute_name) == expected_value
 def test_initializer(self, path, expected_query_path):
     getter = ModelAttributeGetter(path)
     assert getter.query_path == expected_query_path