def test_add_tag(self): # start off in a known, mildly interesting state Tag.objects.update_tags(self.dead_parrot, 'foo bar baz') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 3) self.failUnless(get_tag('bar') in tags) self.failUnless(get_tag('baz') in tags) self.failUnless(get_tag('foo') in tags) # try to add a tag that already exists Tag.objects.add_tag(self.dead_parrot, 'foo') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 3) self.failUnless(get_tag('bar') in tags) self.failUnless(get_tag('baz') in tags) self.failUnless(get_tag('foo') in tags) # now add a tag that doesn't already exist Tag.objects.add_tag(self.dead_parrot, 'zip') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 4) self.failUnless(get_tag('zip') in tags) self.failUnless(get_tag('bar') in tags) self.failUnless(get_tag('baz') in tags) self.failUnless(get_tag('foo') in tags)
def test_create_with_tags_specified(self): f1 = FormTest.objects.create(tags=u'test3 test2 test1') tags = Tag.objects.get_for_object(f1) test1_tag = get_tag('test1') test2_tag = get_tag('test2') test3_tag = get_tag('test3') self.failUnless(None not in (test1_tag, test2_tag, test3_tag)) self.assertEquals(len(tags), 3) self.failUnless(test1_tag in tags) self.failUnless(test2_tag in tags) self.failUnless(test3_tag in tags)
def test_update_tags_with_none(self): # start off in a known, mildly interesting state Tag.objects.update_tags(self.dead_parrot, 'foo bar baz') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 3) self.failUnless(get_tag('bar') in tags) self.failUnless(get_tag('baz') in tags) self.failUnless(get_tag('foo') in tags) Tag.objects.update_tags(self.dead_parrot, None) tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 0)
def test_add_tag_invalid_input_multiple_tags_specified(self): # start off in a known, mildly interesting state Tag.objects.update_tags(self.dead_parrot, 'foo bar baz') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 3) self.failUnless(get_tag('bar') in tags) self.failUnless(get_tag('baz') in tags) self.failUnless(get_tag('foo') in tags) try: Tag.objects.add_tag(self.dead_parrot, 'one two') except AttributeError, ae: self.assertEquals(str(ae), 'Multiple tags were given: "one two".')
def test_update_tags_exotic_characters(self): # start off in a known, mildly interesting state Tag.objects.update_tags(self.dead_parrot, 'foo bar baz') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 3) self.failUnless(get_tag('bar') in tags) self.failUnless(get_tag('baz') in tags) self.failUnless(get_tag('foo') in tags) Tag.objects.update_tags(self.dead_parrot, u'ŠĐĆŽćžšđ') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 1) # NOTE: It looks the lower-case version is kept self.assertEquals(tags[0].name, u'šđćžćžšđ') Tag.objects.update_tags(self.dead_parrot, u'你好') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 1) self.assertEquals(tags[0].name, u'你好')
def test_update_via_tags_field(self): f1 = FormTest.objects.create(tags=u'test3 test2 test1') tags = Tag.objects.get_for_object(f1) test1_tag = get_tag('test1') test2_tag = get_tag('test2') test3_tag = get_tag('test3') self.failUnless(None not in (test1_tag, test2_tag, test3_tag)) self.assertEquals(len(tags), 3) self.failUnless(test1_tag in tags) self.failUnless(test2_tag in tags) self.failUnless(test3_tag in tags) f1.tags = u'test4' f1.save() tags = Tag.objects.get_for_object(f1) test4_tag = get_tag('test4') self.assertEquals(len(tags), 1) self.assertEquals(tags[0], test4_tag) f1.tags = '' f1.save() tags = Tag.objects.get_for_object(f1) self.assertEquals(len(tags), 0)
def test_update_tags(self): Tag.objects.update_tags(self.dead_parrot, 'foo,bar,"ter"') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 3) self.failUnless(get_tag('foo') in tags) self.failUnless(get_tag('bar') in tags) self.failUnless(get_tag('ter') in tags) Tag.objects.update_tags(self.dead_parrot, '"foo" bar "baz"') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 3) self.failUnless(get_tag('bar') in tags) self.failUnless(get_tag('baz') in tags) self.failUnless(get_tag('foo') in tags)
def test_force_lowercase_tags(self): """ Test forcing tags to lowercase. """ settings.FORCE_LOWERCASE_TAGS = True Tag.objects.update_tags(self.dead_parrot, 'foO bAr Ter') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 3) foo_tag = get_tag('foo') bar_tag = get_tag('bar') ter_tag = get_tag('ter') self.failUnless(foo_tag in tags) self.failUnless(bar_tag in tags) self.failUnless(ter_tag in tags) Tag.objects.update_tags(self.dead_parrot, 'foO bAr baZ') tags = Tag.objects.get_for_object(self.dead_parrot) baz_tag = get_tag('baz') self.assertEquals(len(tags), 3) self.failUnless(bar_tag in tags) self.failUnless(baz_tag in tags) self.failUnless(foo_tag in tags) Tag.objects.add_tag(self.dead_parrot, 'FOO') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 3) self.failUnless(bar_tag in tags) self.failUnless(baz_tag in tags) self.failUnless(foo_tag in tags) Tag.objects.add_tag(self.dead_parrot, 'Zip') tags = Tag.objects.get_for_object(self.dead_parrot) self.assertEquals(len(tags), 4) zip_tag = get_tag('zip') self.failUnless(bar_tag in tags) self.failUnless(baz_tag in tags) self.failUnless(foo_tag in tags) self.failUnless(zip_tag in tags) f1 = FormTest.objects.create() f1.tags = u'TEST5' f1.save() tags = Tag.objects.get_for_object(f1) test5_tag = get_tag('test5') self.assertEquals(len(tags), 1) self.failUnless(test5_tag in tags) self.assertEquals(f1.tags, u'test5')
def test_nonexistent_tag(self): self.assertEquals(get_tag('mouse'), None)
def test_with_primary_key(self): self.assertEquals(get_tag(self.cheese.id), self.cheese)
def test_with_string(self): self.assertEquals(get_tag('cheese'), self.cheese)
def test_with_tag_instance(self): self.assertEquals(get_tag(self.cheese), self.cheese)