- t = models.Tag(name=u'Tadeusz Żeleński (Boy)', category=u'author', slug=u'a1')
- t.save()
- self.t = t
- self.user = AnonymousUser()
-
- def tearDown(self):
- self.t.delete()
-
- def test_too_short(self):
- self.assertRaises(ValueError, views.find_best_matches, u'', self.user)
- self.assertRaises(ValueError, views.find_best_matches, u't', self.user)
-
- def test_match_beginning(self):
- self.assertEqual(views.find_best_matches(u'Tad', self.user), (self.t,))
-
- def test_match_case(self):
- self.assertEqual(views.find_best_matches(u'TAD', self.user), (self.t,))
+ self.author_tag = models.Tag.objects.create(
+ name=u'Adam Mickiewicz [SubWord]',
+ category=u'author', slug="one")
+
+ self.unicode_tag = models.Tag.objects.create(
+ name=u'Tadeusz Żeleński (Boy)',
+ category=u'author', slug="two")
+
+ self.polish_tag = models.Tag.objects.create(
+ name=u'ĘÓĄŚŁŻŹĆŃęóąśłżźćń',
+ category=u'author', slug="three")
+
+ @raises(ValueError)
+ def test_empty_query(self):
+ """ Check that empty queries raise an error. """
+ views.find_best_matches(u'')
+
+ @raises(ValueError)
+ def test_one_letter_query(self):
+ """ Check that one letter queries aren't permitted. """
+ views.find_best_matches(u't')
+
+ def test_match_by_prefix(self):
+ """ Tags should be matched by prefix of words within it's name. """
+ self.assertEqual(views.find_best_matches(u'Ada'), (self.author_tag,))
+ self.assertEqual(views.find_best_matches(u'Mic'), (self.author_tag,))
+ self.assertEqual(views.find_best_matches(u'Mickiewicz'), (self.author_tag,))
+
+ def test_match_case_insensitive(self):
+ """ Tag names should match case insensitive. """
+ self.assertEqual(views.find_best_matches(u'adam mickiewicz'), (self.author_tag,))
+
+ def test_match_case_insensitive_unicode(self):
+ """ Tag names should match case insensitive (unicode). """
+ self.assertEqual(views.find_best_matches(u'tadeusz żeleński (boy)'), (self.unicode_tag,))