def test_detach_alias(self): alias = self._create_alias() alias_placeholder = alias.get_placeholder(self.language) add_plugin( alias_placeholder, 'TextPlugin', language=self.language, body='test 1', ) add_plugin( alias_placeholder, 'TextPlugin', language=self.language, body='test 2', ) plugins = self.placeholder.get_plugins() self.assertEqual(plugins.count(), 1) alias_plugin = add_plugin( self.placeholder, Alias, language=self.language, alias=alias, ) add_plugin( alias_placeholder, 'TextPlugin', language=self.language, body='test 3', ) self.assertEqual(plugins.count(), 2) Alias.detach_alias_plugin(alias_plugin, self.language) self.assertEqual(plugins.count(), 4)
def test_extra_plugin_items_for_alias_plugins(self): alias = self._create_alias() placeholder = self.placeholder page_content = None if is_versioning_enabled(): # Can only edit page/content that is in DRAFT page_content = create_title(self.language, 'Draft Page', self.page, created_by=self.superuser) placeholder = page_content.get_placeholders().get(slot='content') alias_plugin = alias.get_content(self.language).populate( replaced_placeholder=placeholder, ) extra_items = Alias.get_extra_plugin_menu_items( self.get_page_request(page=self.page, obj=page_content, user=self.superuser), alias_plugin, ) self.assertEqual(len(extra_items), 2) first, second = extra_items self.assertEqual(first.name, 'Edit Alias') self.assertEqual(first.url, alias.get_absolute_url()) self.assertEqual(second.name, 'Detach Alias') self.assertEqual(second.action, 'modal') self.assertEqual( second.url, self.get_detach_alias_plugin_endpoint(alias_plugin.pk), )
def test_can_detach_no_permission(self): user = self.get_staff_user_with_no_permissions() alias = self._create_alias(self.placeholder.get_plugins()) self.assertFalse( Alias.can_detach( user, self.placeholder, alias.get_placeholder(self.language).get_plugins(), ), )
def test_detach_alias_correct_position(self): alias = self._create_alias([]) alias_placeholder = alias.get_placeholder(self.language) add_plugin( alias_placeholder, 'TextPlugin', language=self.language, body='test 1', ) add_plugin( alias_placeholder, 'TextPlugin', language=self.language, body='test 2', ) plugins = self.placeholder.get_plugins() self.assertEqual(plugins.count(), 1) alias_plugin = add_plugin( self.placeholder, Alias, language=self.language, alias=alias, ) add_plugin( self.placeholder, 'TextPlugin', language=self.language, body='test 3', ) self.assertEqual(plugins.count(), 3) Alias.detach_alias_plugin(alias_plugin, self.language) self.assertEqual(plugins.count(), 4) ordered_plugins = sorted( downcast_plugins(plugins), key=attrgetter('position'), ) self.assertEqual( [str(plugin) for plugin in ordered_plugins], ['test', 'test 1', 'test 2', 'test 3'], )
def test_can_detach_has_permission(self): user = self.get_staff_user_with_std_permissions() alias = self._create_alias(self.placeholder.get_plugins()) placeholder = self.placeholder if is_versioning_enabled(): placeholder = self._get_draft_page_placeholder() self.assertTrue( Alias.can_detach( user, placeholder, alias.get_placeholder(self.language).get_plugins(), ), )
def test_can_create_alias_staff_enough_permissions(self): user = self.get_staff_user_with_std_permissions() user.user_permissions.add( Permission.objects.get( content_type=ContentType.objects.get_for_model(AliasModel, ), codename='add_alias', )) self.assertTrue( Alias.can_create_alias( user, self.placeholder.get_plugins(), ), )
def test_extra_plugin_items_for_regular_plugins(self): extra_items = Alias.get_extra_plugin_menu_items( self.get_request(self.page.get_absolute_url()), self.plugin, ) self.assertEqual(len(extra_items), 1) extra_item = extra_items[0] self.assertEqual(extra_item.name, 'Create Alias') self.assertEqual(extra_item.action, 'modal') parsed_url = urlparse(extra_item.url) self.assertEqual(parsed_url.path, self.get_create_alias_endpoint()) self.assertIn('plugin={}'.format(self.plugin.pk), parsed_url.query)
def test_extra_plugin_items_for_placeholder(self): extra_items = Alias.get_extra_placeholder_menu_items( self.get_page_request(page=self.page, user=self.superuser), self.placeholder, ) self.assertEqual(len(extra_items), 1) extra_item = extra_items[0] self.assertEqual(extra_item.name, 'Create Alias') self.assertEqual(extra_item.action, 'modal') parsed_url = urlparse(extra_item.url) self.assertEqual(parsed_url.path, self.get_create_alias_endpoint()) self.assertIn( 'placeholder={}'.format(self.placeholder.pk), parsed_url.query, )
def test_extra_plugin_items_with_versioning_checks(self): alias = self._create_alias() alias_plugin = alias.get_content(self.language).populate( replaced_placeholder=self.placeholder, ) extra_items = Alias.get_extra_plugin_menu_items( self.get_page_request(page=self.page, obj=self.page.get_title_obj(), user=self.superuser), alias_plugin, ) self.assertEqual(len(extra_items), 1) first = extra_items[0] # We cannot detach alias on undraft page self.assertEqual(first.name, 'Edit Alias') self.assertEqual(first.url, alias.get_absolute_url())
def test_can_create_alias_staff_partial_permissions(self): user = self.get_staff_user_with_no_permissions() user.user_permissions.add( Permission.objects.get( content_type=ContentType.objects.get_for_model(AliasModel, ), codename='add_alias', )) user.user_permissions.add( Permission.objects.get( content_type=ContentType.objects.get_for_model(Alias.model, ), codename='add_aliasplugin', )) alias = self._create_alias(self.placeholder.get_plugins()) add_plugin( self.placeholder, Alias, language=self.language, alias=alias, ) self.assertFalse( Alias.can_create_alias( user, self.placeholder.get_plugins(), ), )
def test_can_create_alias_staff_no_permissions(self): self.assertFalse( Alias.can_create_alias( self.get_staff_user_with_no_permissions(), [self.plugin], ), )
def test_can_create_alias_standard_user(self): self.assertFalse( Alias.can_create_alias( self.get_standard_user(), [self.plugin], ), )
def test_can_create_alias_superuser(self): self.assertTrue( Alias.can_create_alias( self.get_superuser(), [self.plugin], ), )