def testTagGetSet(self): """ Test that the get and set methods for tags, work. Note that at this time, I assume that GenericForeignKeys and the caching API work as specified, and are invoked correctly on this class. """ # Dump any existing Tag cache Tag.getTag.delete_all() self.failIf(bool(Tag.getTag("test")), "Retrieved a tag for key 'test' but we haven't set one yet!") self.failIf(Tag.getTag("test"), "getTag() created a retrievable value for key 'test'!") Tag.setTag("test", value="frobbed") self.assertEqual(Tag.getTag("test"), "frobbed", "Failed to set tag 'test' to value 'frobbed'!") self.assertEqual(Tag.getTag("test"), "frobbed", "Tag was created, but didn't stick!") Tag.unSetTag("test") self.failIf(Tag.getTag("test"), "Retrieved a tag for key 'test' but we just deleted it!") self.failIf(Tag.getTag("test"), "unSetTag() deletes don't appear to be persistent!") Tag.setTag("test") self.failUnless(Tag.getTag("test"), "Error: Setting a tag with an unspecified value must yield a tag whose value evaluates to True!") user, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="") self.failIf(Tag.getTag("test", user), "Retrieved a tag for key 'test' target '%s', but we haven't set one yet!" % (user)) Tag.setTag("test", user, "frobbed again") self.assertEqual(Tag.getTag("test", user), "frobbed again") Tag.setTag("test", user) self.assertEqual(Tag.getTag("test", user), Tag.EMPTY_TAG) Tag.unSetTag("test", user) self.failIf(Tag.getTag("test", user), "unSetTag() didn't work for per-row tags!")
def testTagGetSet(self): """ Test that the get and set methods for tags, work. Note that at this time, I assume that GenericForeignKeys work and are invoked correctly on this class. """ # Dump any existing Tag cache Tag._getTag.delete_all() self.assertFalse(bool(Tag.getTag("test")), "Retrieved a tag for key 'test' but we haven't set one yet!") self.assertFalse(Tag.getTag("test"), "getTag() created a retrievable value for key 'test'!") self.assertEqual(Tag.getTag("test",default="the default"),"the default") self.assertEqual(Tag.getTag("test",default="the default"),"the default") Tag.setTag("test", value="frobbed") self.assertEqual(Tag.getTag("test"), "frobbed", "Failed to set tag 'test' to value 'frobbed'!") self.assertEqual(Tag.getTag("test"), "frobbed", "Tag was created, but didn't stick!") self.assertEqual(Tag.getTag("test",default="the default"), "frobbed", "Defaulting is borked!") self.assertEqual(Tag.getTag("test",default="the default"), "frobbed", "Defaulting is borked!") Tag.unSetTag("test") self.assertFalse(Tag.getTag("test"), "Retrieved a tag for key 'test' but we just deleted it!") self.assertFalse(Tag.getTag("test"), "unSetTag() deletes don't appear to be persistent!") self.assertEqual(Tag.getTag("test",default="the default"),"the default") self.assertEqual(Tag.getTag("test",default="the default"),"the default") Tag.setTag("test") self.assertTrue(Tag.getTag("test"), "Error: Setting a tag with an unspecified value must yield a tag whose value evaluates to True!") self.assertNotEqual(Tag.getTag("test",default="the default"),"the default","If the tag is set, even to EMPTY_TAG, we shouldn't return the default.")
def testTagGetSet(self): """ Test that the get and set methods for tags, work. Note that at this time, I assume that GenericForeignKeys work and are invoked correctly on this class. """ # Dump any existing Tag cache Tag._getTag.delete_all() self.assertFalse( bool(Tag.getTag("test")), "Retrieved a tag for key 'test' but we haven't set one yet!") self.assertFalse( Tag.getTag("test"), "getTag() created a retrievable value for key 'test'!") self.assertEqual(Tag.getTag("test", default="the default"), "the default") self.assertEqual(Tag.getTag("test", default="the default"), "the default") Tag.setTag("test", value="frobbed") self.assertEqual(Tag.getTag("test"), "frobbed", "Failed to set tag 'test' to value 'frobbed'!") self.assertEqual(Tag.getTag("test"), "frobbed", "Tag was created, but didn't stick!") self.assertEqual(Tag.getTag("test", default="the default"), "frobbed", "Defaulting is borked!") self.assertEqual(Tag.getTag("test", default="the default"), "frobbed", "Defaulting is borked!") Tag.unSetTag("test") self.assertFalse( Tag.getTag("test"), "Retrieved a tag for key 'test' but we just deleted it!") self.assertFalse(Tag.getTag("test"), "unSetTag() deletes don't appear to be persistent!") self.assertEqual(Tag.getTag("test", default="the default"), "the default") self.assertEqual(Tag.getTag("test", default="the default"), "the default") Tag.setTag("test") self.assertTrue( Tag.getTag("test"), "Error: Setting a tag with an unspecified value must yield a tag whose value evaluates to True!" ) self.assertNotEqual( Tag.getTag("test", default="the default"), "the default", "If the tag is set, even to EMPTY_TAG, we shouldn't return the default." )
def clear_theme(self, theme_name=None): if theme_name is None: theme_name = self.get_current_theme() # Remove template overrides matching the theme name if themes_settings.THEME_DEBUG: print 'Clearing theme: %s' % theme_name for template_name in self.get_template_names(theme_name): TemplateOverride.objects.filter(name=template_name).delete() if themes_settings.THEME_DEBUG: print '-- Removed template override: %s' % template_name # Clear template override cache TemplateOverrideLoader.get_template_hash.delete_all() # Remove images and script files from the active theme directory if os.path.exists(settings.MEDIA_ROOT + 'images/theme'): distutils.dir_util.remove_tree(settings.MEDIA_ROOT + 'images/theme') if os.path.exists(settings.MEDIA_ROOT + 'scripts/theme'): distutils.dir_util.remove_tree(settings.MEDIA_ROOT + 'scripts/theme') # Remove compiled CSS file if os.path.exists(self.css_filename): os.remove(self.css_filename) Tag.unSetTag('current_theme_name') Tag.unSetTag('current_theme_params') Tag.unSetTag('current_theme_palette') Tag.unSetTag('prev_theme_customization')
def load_theme(self, theme_name, **kwargs): # Create template overrides using data provided (our models handle versioning) logger.debug('Loading theme: %s', theme_name) for template_name in self.get_template_names(theme_name): # Read default template override contents provided by theme to = TemplateOverride(name=template_name) template_filename = os.path.join(self.base_dir(theme_name), 'templates', template_name) template_file = open(template_filename, 'r') to.content = template_file.read() # Add a Django template comment tag indicating theme type to the main.html override (for tests) if to.name == 'main.html': to.content += ( '\n{%% comment %%} Theme: %s {%% endcomment %%}\n' % theme_name) to.save() logger.debug('-- Created template override: %s', template_name) # Clear template override cache TemplateOverrideLoader.get_template_hash.delete_all() # Collect LESS files from appropriate sources and compile CSS self.compile_css(theme_name, {}, self.css_filename) # Copy images and script files to the active theme directory img_src_dir = os.path.join(self.base_dir(theme_name), 'images') if os.path.exists(img_src_dir): img_dest_dir = os.path.join(settings.MEDIA_ROOT, 'images', 'theme') distutils.dir_util.copy_tree(img_src_dir, img_dest_dir) script_src_dir = os.path.join(self.base_dir(theme_name), 'scripts') if os.path.exists(script_src_dir): script_dest_dir = os.path.join(settings.MEDIA_ROOT, 'scripts', 'theme') distutils.dir_util.copy_tree(script_src_dir, script_dest_dir) # If files need to be restored, copy them back to the desired locations. if kwargs.get('backup_info', None) is not None: self.restore_files(settings.MEDIA_ROOT, kwargs['backup_info']) Tag.setTag('current_theme_name', value=theme_name) Tag.setTag('current_theme_params', value='{}') Tag.unSetTag('current_theme_palette') self.unset_current_customization() # Clear the Varnish cache varnish.purge_all()
def testTagWithTarget(self): '''Test getting and setting of tags with targets.''' # Delete any existing tags that might interfere Tag.objects.filter(key="test").delete() # Dump any existing Tag cache Tag._getTag.delete_all() user, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="") self.assertFalse(Tag.getTag("test", user), "Retrieved a tag for key 'test' target '%s', but we haven't set one yet!" % (user)) Tag.setTag("test", user, "frobbed again") self.assertEqual(Tag.getTag("test", user), "frobbed again") Tag.setTag("test", user) self.assertEqual(Tag.getTag("test", user), Tag.EMPTY_TAG) Tag.unSetTag("test", user) self.assertFalse(Tag.getTag("test", user), "unSetTag() didn't work for per-row tags!")
def load_theme(self, theme_name, **kwargs): # Create template overrides using data provided (our models handle versioning) if themes_settings.THEME_DEBUG: print 'Loading theme: %s' % theme_name for template_name in self.get_template_names(theme_name): # Read default template override contents provided by theme to = TemplateOverride(name=template_name) template_filename = os.path.join(self.base_dir(theme_name), 'templates', template_name) template_file = open(template_filename, 'r') to.content = template_file.read() # Add a Django template comment tag indicating theme type to the main.html override (for tests) if to.name == 'main.html': to.content += ( '\n{%% comment %%} Theme: %s {%% endcomment %%}\n' % theme_name) # print 'Template override %s contents: \n%s' % (to.name, to.content) to.save() if themes_settings.THEME_DEBUG: print '-- Created template override: %s' % template_name # Clear template override cache TemplateOverrideLoader.get_template_hash.delete_all() # Collect LESS files from appropriate sources and compile CSS self.compile_css(theme_name, {}, self.css_filename) # Copy images and script files to the active theme directory img_src_dir = os.path.join(self.base_dir(theme_name), 'images') if os.path.exists(img_src_dir): img_dest_dir = os.path.join(settings.MEDIA_ROOT, 'images', 'theme') distutils.dir_util.copy_tree(img_src_dir, img_dest_dir) script_src_dir = os.path.join(self.base_dir(theme_name), 'scripts') if os.path.exists(script_src_dir): script_dest_dir = os.path.join(settings.MEDIA_ROOT, 'scripts', 'theme') distutils.dir_util.copy_tree(script_src_dir, script_dest_dir) Tag.setTag('current_theme_name', value=theme_name) Tag.setTag('current_theme_params', value='{}') Tag.unSetTag('current_theme_palette') self.unset_current_customization()
def testTagWithTarget(self): '''Test getting and setting of tags with targets.''' # Delete any existing tags that might interfere Tag.objects.filter(key="test").delete() # Dump any existing Tag cache Tag._getTag.delete_all() user, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="") self.assertFalse( Tag.getTag("test", user), "Retrieved a tag for key 'test' target '%s', but we haven't set one yet!" % (user)) Tag.setTag("test", user, "frobbed again") self.assertEqual(Tag.getTag("test", user), "frobbed again") Tag.setTag("test", user) self.assertEqual(Tag.getTag("test", user), Tag.EMPTY_TAG) Tag.unSetTag("test", user) self.assertFalse(Tag.getTag("test", user), "unSetTag() didn't work for per-row tags!")
def clear_theme(self, theme_name=None, keep_files=None): if theme_name is None: theme_name = self.get_current_theme() # Remove template overrides matching the theme name logger.debug('Clearing theme: %s', theme_name) for template_name in self.get_template_names(theme_name): TemplateOverride.objects.filter(name=template_name).delete() logger.debug('-- Removed template override: %s', template_name) # Clear template override cache TemplateOverrideLoader.get_template_hash.delete_all() # If files are to be preserved, copy them to temporary locations # and return a record of those locations (backup_info). # This is much easier than writing new functions for removing and # copying directory trees. backup_info = self.backup_files(settings.MEDIA_ROOT, keep_files) if os.path.exists(settings.MEDIA_ROOT + 'images/theme'): distutils.dir_util.remove_tree(settings.MEDIA_ROOT + 'images/theme') if os.path.exists(settings.MEDIA_ROOT + 'scripts/theme'): distutils.dir_util.remove_tree(settings.MEDIA_ROOT + 'scripts/theme') # Remove compiled CSS file if os.path.exists(self.css_filename): os.remove(self.css_filename) Tag.unSetTag('current_theme_name') Tag.unSetTag('current_theme_params') Tag.unSetTag('current_theme_palette') self.unset_current_customization() # Clear the Varnish cache varnish.purge_all() return backup_info
def unset_current_customization(self): Tag.unSetTag('prev_theme_customization')
def testTagCaching(self): '''Test that tag values are being cached.''' # Delete any existing tags that might interfere Tag.objects.filter(key="test").delete() # Dump any existing Tag cache Tag._getTag.delete_all() user1, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="") user2, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="") for target in [None, user1, user2]: self.assertFalse(Tag.getTag("test", target=target)) with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test", target=target)) self.assertFalse(Tag.getTag("test", target=target)) Tag.setTag("test", value="tag value") for target in [user1, user2]: self.assertFalse(Tag.getTag( "test", target=target)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test", target=target)) self.assertFalse(Tag.getTag("test", target=target)) self.assertEqual(Tag.getTag("test"), "tag value") with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test"), "tag value") self.assertEqual(Tag.getTag("test"), "tag value") for target in [user1, user2]: self.assertFalse(Tag.getTag( "test", target=target)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test", target=target)) self.assertFalse(Tag.getTag("test", target=target)) Tag.setTag("test", value="tag value 2") for target in [user1, user2]: self.assertFalse(Tag.getTag( "test", target=target)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test", target=target)) self.assertFalse(Tag.getTag("test", target=target)) self.assertEqual(Tag.getTag("test"), "tag value 2") with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test"), "tag value 2") self.assertEqual(Tag.getTag("test"), "tag value 2") for target in [user1, user2]: self.assertFalse(Tag.getTag( "test", target=target)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test", target=target)) self.assertFalse(Tag.getTag("test", target=target)) Tag.setTag("test", target=user1, value="tag value user1") self.assertFalse(Tag.getTag( "test", target=user2)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test", target=user2)) self.assertFalse(Tag.getTag("test", target=user2)) self.assertEqual(Tag.getTag("test"), "tag value 2") #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test"), "tag value 2") self.assertEqual(Tag.getTag("test"), "tag value 2") self.assertEqual(Tag.getTag("test", target=user1), "tag value user1") with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test", target=user1), "tag value user1") self.assertEqual(Tag.getTag("test", target=user1), "tag value user1") self.assertEqual(Tag.getTag("test"), "tag value 2") #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test"), "tag value 2") self.assertEqual(Tag.getTag("test"), "tag value 2") self.assertFalse(Tag.getTag( "test", target=user2)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test", target=user2)) self.assertFalse(Tag.getTag("test", target=user2)) Tag.unSetTag("test") self.assertEqual(Tag.getTag("test", target=user1), "tag value user1") #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test", target=user1), "tag value user1") self.assertEqual(Tag.getTag("test", target=user1), "tag value user1") self.assertFalse(Tag.getTag( "test", target=user2)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test", target=user2)) self.assertFalse(Tag.getTag("test", target=user2)) self.assertFalse(Tag.getTag("test")) with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test")) self.assertFalse(Tag.getTag("test")) self.assertEqual(Tag.getTag("test", target=user1), "tag value user1") #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test", target=user1), "tag value user1") self.assertEqual(Tag.getTag("test", target=user1), "tag value user1") self.assertFalse(Tag.getTag( "test", target=user2)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test", target=user2)) self.assertFalse(Tag.getTag("test", target=user2))
def testProgramTag(self): '''Test the logic of getProgramTag in a bunch of different conditions.''' # Delete any existing tags that might interfere Tag.objects.filter(key="test").delete() # Dump any existing Tag cache Tag._getTag.delete_all() #Caching is hard, so what the hell, let's run every assertion twice. self.assertFalse(Tag.getProgramTag("test", program=self.program)) self.assertFalse(Tag.getProgramTag("test", program=self.program)) self.assertFalse(Tag.getProgramTag("test", program=None)) self.assertFalse(Tag.getProgramTag("test", program=None)) self.assertEqual( Tag.getProgramTag("test", program=self.program, default="the default"), "the default") self.assertEqual( Tag.getProgramTag("test", program=self.program, default="the default"), "the default") self.assertEqual( Tag.getProgramTag("test", program=None, default="the default"), "the default") self.assertEqual( Tag.getProgramTag("test", program=None, default="the default"), "the default") # Set the program-specific tag Tag.setTag("test", target=self.program, value="program tag value") self.assertFalse(Tag.getProgramTag("test", program=None)) self.assertFalse(Tag.getProgramTag("test", program=None)) self.assertEqual( Tag.getProgramTag("test", program=None, default="the default"), "the default") self.assertEqual( Tag.getProgramTag("test", program=None, default="the default"), "the default") self.assertEqual(Tag.getProgramTag("test", program=self.program), "program tag value") self.assertEqual(Tag.getProgramTag("test", program=self.program), "program tag value") self.assertEqual( Tag.getProgramTag("test", program=self.program, default="the default"), "program tag value") self.assertEqual( Tag.getProgramTag("test", program=self.program, default="the default"), "program tag value") # Now set the general tag Tag.setTag("test", target=None, value="general tag value") self.assertEqual(Tag.getProgramTag("test", program=None), "general tag value") self.assertEqual(Tag.getProgramTag("test", program=None), "general tag value") self.assertEqual( Tag.getProgramTag("test", program=None, default="the default"), "general tag value") self.assertEqual( Tag.getProgramTag("test", program=None, default="the default"), "general tag value") self.assertEqual(Tag.getProgramTag("test", program=self.program), "program tag value") self.assertEqual(Tag.getProgramTag("test", program=self.program), "program tag value") self.assertEqual( Tag.getProgramTag("test", program=self.program, default="the default"), "program tag value") self.assertEqual( Tag.getProgramTag("test", program=self.program, default="the default"), "program tag value") # Now unset the program-specific tag Tag.unSetTag("test", target=self.program) self.assertEqual(Tag.getProgramTag("test", program=None), "general tag value") self.assertEqual(Tag.getProgramTag("test", program=None), "general tag value") self.assertEqual( Tag.getProgramTag("test", program=None, default="the default"), "general tag value") self.assertEqual( Tag.getProgramTag("test", program=None, default="the default"), "general tag value") self.assertEqual(Tag.getProgramTag("test", program=self.program), "general tag value") self.assertEqual(Tag.getProgramTag("test", program=self.program), "general tag value") self.assertEqual( Tag.getProgramTag("test", program=self.program, default="the default"), "general tag value") self.assertEqual( Tag.getProgramTag("test", program=self.program, default="the default"), "general tag value") #just to clean up Tag.unSetTag("test", target=None) self.assertFalse(Tag.getProgramTag("test", program=self.program)) self.assertFalse(Tag.getProgramTag("test", program=self.program)) self.assertFalse(Tag.getProgramTag("test", program=None)) self.assertFalse(Tag.getProgramTag("test", program=None)) self.assertEqual( Tag.getProgramTag("test", program=self.program, default="the default"), "the default") self.assertEqual( Tag.getProgramTag("test", program=self.program, default="the default"), "the default") self.assertEqual( Tag.getProgramTag("test", program=None, default="the default"), "the default") self.assertEqual( Tag.getProgramTag("test", program=None, default="the default"), "the default")
def testTagCaching(self): '''Test that tag values are being cached.''' # Delete any existing tags that might interfere Tag.objects.filter(key="test").delete() # Dump any existing Tag cache Tag._getTag.delete_all() user1, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="") user2, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="") for target in [None,user1,user2]: self.assertFalse(Tag.getTag("test",target=target)) with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test",target=target)) self.assertFalse(Tag.getTag("test",target=target)) Tag.setTag("test",value="tag value") for target in [user1,user2]: self.assertFalse(Tag.getTag("test",target=target)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test",target=target)) self.assertFalse(Tag.getTag("test",target=target)) self.assertEqual(Tag.getTag("test"),"tag value") with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test"),"tag value") self.assertEqual(Tag.getTag("test"),"tag value") for target in [user1,user2]: self.assertFalse(Tag.getTag("test",target=target)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test",target=target)) self.assertFalse(Tag.getTag("test",target=target)) Tag.setTag("test",value="tag value 2") for target in [user1,user2]: self.assertFalse(Tag.getTag("test",target=target)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test",target=target)) self.assertFalse(Tag.getTag("test",target=target)) self.assertEqual(Tag.getTag("test"),"tag value 2") with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test"),"tag value 2") self.assertEqual(Tag.getTag("test"),"tag value 2") for target in [user1,user2]: self.assertFalse(Tag.getTag("test",target=target)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test",target=target)) self.assertFalse(Tag.getTag("test",target=target)) Tag.setTag("test",target=user1,value="tag value user1") self.assertFalse(Tag.getTag("test",target=user2)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test",target=user2)) self.assertFalse(Tag.getTag("test",target=user2)) self.assertEqual(Tag.getTag("test"),"tag value 2") #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test"),"tag value 2") self.assertEqual(Tag.getTag("test"),"tag value 2") self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") self.assertEqual(Tag.getTag("test"),"tag value 2") #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test"),"tag value 2") self.assertEqual(Tag.getTag("test"),"tag value 2") self.assertFalse(Tag.getTag("test",target=user2)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test",target=user2)) self.assertFalse(Tag.getTag("test",target=user2)) Tag.unSetTag("test") self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") self.assertFalse(Tag.getTag("test",target=user2)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test",target=user2)) self.assertFalse(Tag.getTag("test",target=user2)) self.assertFalse(Tag.getTag("test")) with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test")) self.assertFalse(Tag.getTag("test")) self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") self.assertFalse(Tag.getTag("test",target=user2)) #remove after Issue #866 is fixed with self.assertNumQueries(0): self.assertFalse(Tag.getTag("test",target=user2)) self.assertFalse(Tag.getTag("test",target=user2))
def testProgramTag(self): '''Test the logic of getProgramTag in a bunch of different conditions.''' # Delete any existing tags that might interfere Tag.objects.filter(key="test").delete() # Dump any existing Tag cache Tag._getTag.delete_all() #Caching is hard, so what the hell, let's run every assertion twice. self.assertFalse(Tag.getProgramTag("test",program=self.program)) self.assertFalse(Tag.getProgramTag("test",program=self.program)) self.assertFalse(Tag.getProgramTag("test",program=None)) self.assertFalse(Tag.getProgramTag("test",program=None)) self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"the default") self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"the default") self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default") self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default") # Set the program-specific tag Tag.setTag("test",target=self.program,value="program tag value") self.assertFalse(Tag.getProgramTag("test",program=None)) self.assertFalse(Tag.getProgramTag("test",program=None)) self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default") self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default") self.assertEqual(Tag.getProgramTag("test",program=self.program),"program tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program),"program tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"program tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"program tag value") # Now set the general tag Tag.setTag("test",target=None,value="general tag value") self.assertEqual(Tag.getProgramTag("test",program=None),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=None),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program),"program tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program),"program tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"program tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"program tag value") # Now unset the program-specific tag Tag.unSetTag("test",target=self.program) self.assertEqual(Tag.getProgramTag("test",program=None),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=None),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"general tag value") self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"general tag value") #just to clean up Tag.unSetTag("test",target=None) self.assertFalse(Tag.getProgramTag("test",program=self.program)) self.assertFalse(Tag.getProgramTag("test",program=self.program)) self.assertFalse(Tag.getProgramTag("test",program=None)) self.assertFalse(Tag.getProgramTag("test",program=None)) self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"the default") self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"the default") self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default") self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default")