def test_get_queryset(self, rf, admin_class, model, apply_patch,
                          expected_selected_properties):
        admin = admin_class(model, site)
        qs_patch = nullcontext()
        if apply_patch:
            qs_patch = patch(
                'django.contrib.admin.options.ModelAdmin.{}'.format(
                    ADMIN_QUERYSET_METHOD_NAME),
                return_value=QuerySet(model))

        with qs_patch:
            queryset = admin.get_queryset(rf.get('/'))
        assert queryset.model is model
        assert isinstance(queryset, QueryablePropertiesQuerySetMixin)
        assert len(queryset.query._queryable_property_annotations) == len(
            expected_selected_properties)
        for prop in expected_selected_properties:
            assert any(
                ref.property is prop
                for ref in queryset.query._queryable_property_annotations)
 def test_annotation_default(self, versions, apply_dummy_translations):
     versions[0].release_type = 'x'
     versions[0].save()
     with self.apply_dummy_translations() if apply_dummy_translations else nullcontext():
         queryset = VersionWithClassBasedProperties.objects.select_properties('release_type_verbose_name')
         assert queryset.values_list('release_type_verbose_name', flat=True).get(pk=versions[0].pk) is None
 def test_annotation(self, applications, apply_dummy_translations, expected_verbose_names):
     with self.apply_dummy_translations() if apply_dummy_translations else nullcontext():
         queryset = VersionWithClassBasedProperties.objects.order_by('major', 'minor', 'patch')
         queryset = queryset.filter(application=applications[0]).select_properties('release_type_verbose_name')
         assert list(queryset.values_list('release_type_verbose_name', flat=True)) == expected_verbose_names
 def test_filter_default(self, versions, apply_dummy_translations):
     versions[0].release_type = 'x'
     versions[0].save()
     with self.apply_dummy_translations() if apply_dummy_translations else nullcontext():
         assert VersionWithClassBasedProperties.objects.get(release_type_verbose_name=None) == versions[0]
 def test_filter(self, apply_dummy_translations, filter_value, expected_count):
     with self.apply_dummy_translations() if apply_dummy_translations else nullcontext():
         queryset = VersionWithClassBasedProperties.objects.filter(release_type_verbose_name=filter_value)
         assert queryset.count() == expected_count
 def test_getter_default(self, versions, apply_dummy_translations):
     versions[0].release_type = 'x'
     with self.apply_dummy_translations() if apply_dummy_translations else nullcontext():
         assert versions[0].release_type_verbose_name is None
 def test_getter(self, versions, apply_dummy_translations, expected_verbose_names):
     with self.apply_dummy_translations() if apply_dummy_translations else nullcontext():
         for i, expected_verbose_name in enumerate(expected_verbose_names):
             assert str(versions[i].release_type_verbose_name) == expected_verbose_name