diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2012-06-03 14:11:45 -0400 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2012-06-03 14:11:45 -0400 |
commit | be9ce4b61578e7d99e4a458c495de6ce50574634 (patch) | |
tree | d1c45cae2ebc7d27dd58e94ce206b2cc084a4b4e | |
parent | bd28283ee522ee5d1714960dab862011aea3d523 (diff) | |
download | askbot-be9ce4b61578e7d99e4a458c495de6ce50574634.tar.gz askbot-be9ce4b61578e7d99e4a458c495de6ce50574634.tar.bz2 askbot-be9ce4b61578e7d99e4a458c495de6ce50574634.zip |
fixed bug where creating a group could introduce a duplicate tag
-rw-r--r-- | askbot/models/question.py | 2 | ||||
-rw-r--r-- | askbot/models/tag.py | 4 | ||||
-rw-r--r-- | askbot/tests/db_api_tests.py | 17 |
3 files changed, 21 insertions, 2 deletions
diff --git a/askbot/models/question.py b/askbot/models/question.py index dafe7ab0..affac74c 100644 --- a/askbot/models/question.py +++ b/askbot/models/question.py @@ -74,6 +74,7 @@ class ThreadManager(models.Manager): by_email = False, email_address = None ): + """creates new thread""" # TODO: Some of this code will go to Post.objects.create_new thread = super( @@ -794,6 +795,7 @@ class Thread(models.Model): return False def retag(self, retagged_by=None, retagged_at=None, tagnames=None, silent=False): + """changes thread tags""" if None in (retagged_by, retagged_at, tagnames): raise Exception('arguments retagged_at, retagged_by and tagnames are required') diff --git a/askbot/models/tag.py b/askbot/models/tag.py index 779c0b68..03c91162 100644 --- a/askbot/models/tag.py +++ b/askbot/models/tag.py @@ -105,7 +105,9 @@ class GroupTagManager(TagManager): #replace spaces with dashes group_name = clean_group_name(group_name) try: - tag = self.get(name = group_name) + #iexact is important!!! b/c we don't want case variants + #of tags + tag = self.get(name__iexact = group_name) except self.model.DoesNotExist: tag = self.model(name = group_name, created_by = user) tag.save() diff --git a/askbot/tests/db_api_tests.py b/askbot/tests/db_api_tests.py index 1f3d3b9b..3a0c9582 100644 --- a/askbot/tests/db_api_tests.py +++ b/askbot/tests/db_api_tests.py @@ -15,6 +15,9 @@ from askbot.conf import settings as askbot_settings import datetime class DBApiTests(AskbotTestCase): + """tests methods on User object, + that were added for askbot + """ def setUp(self): self.create_user() @@ -161,7 +164,8 @@ class DBApiTests(AskbotTestCase): matches = models.Post.objects.get_questions().get_by_text_query("database'") self.assertTrue(len(matches) == 1) -class UserLikeTests(AskbotTestCase): +class UserLikeTagTests(AskbotTestCase): + """tests for user liking and disliking tags""" def setUp(self): self.create_user() self.question = self.post_question(tags = 'one two three') @@ -387,3 +391,14 @@ class CommentTests(AskbotTestCase): self.other_user.upvote(comment, cancel = True) comment = models.Post.objects.get_comments().get(id = self.comment.id) self.assertEquals(comment.score, 0) + +class TagAndGroupTests(AskbotTestCase): + def setUp(self): + self.u1 = self.create_user('u1') + + def test_group_cannot_create_case_variant_tag(self): + self.post_question(user = self.u1, tags = 'one two three') + models.Tag.group_tags.get_or_create(user = self.u1, group_name = 'One') + tag_one = models.Tag.objects.filter(name__iexact = 'one') + self.assertEqual(tag_one.count(), 1) + self.assertEqual(tag_one[0].name, 'one') |