def test_replace_admin_on_unregistered_model(self):
        """Test that calling `replace_admin_for_models` with a model that
        isn't registered in admin is a no-op.
        """
        replace_admin_for_models([self.model], self.site)

        self.assertNotIn(self.model, self.site._registry)
    def test_replace_default_admin_on_registered_model(self):
        """Test that registering a model without specifying own
        ModelAdmin class still results in overridden admin class.
        """
        self.site.register(self.model)

        replace_admin_for_models([self.model], self.site)

        self.assertIn(self.model, self.site._registry)
        self.assertIn(VersionLockAdminMixin,
                      self.site._registry[self.model].__class__.mro())
    def test_replace_admin_again(self):
        """Test that, if a model's admin class already subclasses
        VersionLockAdminMixin, nothing happens.
        """
        version_admin = version_lock_admin_factory(self.admin_class)
        self.site.register(self.model, version_admin)

        replace_admin_for_models([self.model], self.site)

        self.assertIn(self.model, self.site._registry)
        self.assertEqual(self.site._registry[self.model].__class__,
                         version_admin)
    def test_replace_admin_on_registered_models(self):
        self.site.register(self.model, self.admin_class)
        self.site.register(Answer, self.admin_class)
        models = [self.model, Answer]

        replace_admin_for_models(models, self.site)

        for model in models:
            self.assertIn(model, self.site._registry)
            self.assertIn(self.admin_class,
                          self.site._registry[model].__class__.mro())
            self.assertIn(VersionLockAdminMixin,
                          self.site._registry[model].__class__.mro())
    def test_replace_admin_on_registered_models_default_site(self):
        with patch.object(djangocms_version_locking.helpers,
                          '_replace_admin_for_model') as mock:
            replace_admin_for_models([PollContent])

        mock.assert_called_with(admin.site._registry[PollContent], admin.site)