def test_automatic_creator(self): del self.data['creator'] serializer = api.QuestionSerializer( context=self.context, data=self.data) serializer.is_valid(raise_exception=True) obj = serializer.save() eq_(obj.creator, self.user)
def test_creator_is_object(self): serializer = api.QuestionSerializer(instance=self.question) eq_(serializer.data['creator'], { 'username': self.question.creator.username, 'display_name': Profile.objects.get(user=self.question.creator).display_name, 'avatar': profile_avatar(self.question.creator), })
def test_asker_and_response(self): self._answer(self.helper1) self._answer(self.asker) serializer = api.QuestionSerializer(instance=self.question) eq_(sorted(serializer.data['involved']), self._names(self.asker, self.helper1))
def test_solution_is_readonly(self): q = question(save=True) a = answer(question=q, save=True) self.data['solution'] = a.id serializer = api.QuestionSerializer(context=self.context, data=self.data, instance=q) serializer.save() eq_(q.solution, None)
def test_solution_is_id(self): a = self._answer(self.helper1) self.question.solution = a self.question.save() serializer = api.QuestionSerializer(instance=self.question) eq_(serializer.data['solution'], a.id)
def test_automatic_creator(self): del self.data['creator'] serializer = api.QuestionSerializer(context=self.context, data=self.data) eq_(serializer.errors, {}) ok_(serializer.is_valid()) eq_(serializer.object.creator, self.profile.user)
def test_one_answer(self): self._answer(self.helper1) serializer = api.QuestionSerializer(instance=self.question) eq_( sorted(serializer.data["involved"], key=lambda d: d["username"]), self._names(self.asker, self.helper1), )
def test_with_tags(self): self.question.tags.add('tag1') self.question.tags.add('tag2') serializer = api.QuestionSerializer(instance=self.question) eq_(serializer.data['tags'], [ {'name': 'tag1', 'slug': 'tag1'}, {'name': 'tag2', 'slug': 'tag2'}, ])
def test_asker_and_two_answers(self): self._answer(self.helper1) self._answer(self.asker) self._answer(self.helper2) serializer = api.QuestionSerializer(instance=self.question) eq_(sorted(serializer.data['involved'], key=lambda d: d['username']), self._names(self.asker, self.helper1, self.helper2))
def test_creator_is_object(self): serializer = api.QuestionSerializer(instance=self.question) eq_( serializer.data['creator'], { "username": self.question.creator.username, "display_name": self.question.creator.get_profile().display_name, })
def test_topic_required(self): del self.data['topic'] serializer = api.QuestionSerializer(context=self.context, data=self.data) eq_(serializer.errors, { 'topic': [u'This field is required.'], }) ok_(not serializer.is_valid())
def test_solution_is_readonly(self): q = QuestionFactory() a = AnswerFactory(question=q) self.data['solution'] = a.id serializer = api.QuestionSerializer(context=self.context, data=self.data, instance=q) serializer.is_valid(raise_exception=True) serializer.save() eq_(q.solution, None)
def test_topic_required(self): del self.data["topic"] serializer = api.QuestionSerializer(context=self.context, data=self.data) ok_(not serializer.is_valid()) eq_(serializer.errors, { "topic": ["This field is required."], })
def test_product_required(self): del self.data['product'] serializer = api.QuestionSerializer( context=self.context, data=self.data) ok_(not serializer.is_valid()) eq_(serializer.errors, { 'product': [u'This field is required.'], 'topic': [u'A product must be specified to select a topic.'], })
def test_topic_disambiguation(self): # First make another product, and a colliding topic. # It has the same slug, but a different product. new_product = ProductFactory() TopicFactory(product=new_product, slug=self.topic.slug) serializer = api.QuestionSerializer( context=self.context, data=self.data) serializer.is_valid(raise_exception=True) obj = serializer.save() eq_(obj.topic, self.topic)
def test_topic_disambiguation(self): # First make another product, and a colliding topic. # It has the same slug, but a different product. new_product = product(save=True) topic(product=new_product, slug=self.topic.slug, save=True) serializer = api.QuestionSerializer(context=self.context, data=self.data) eq_(serializer.errors, {}) ok_(serializer.is_valid()) eq_(serializer.object.topic, self.topic)
def test_creator_is_object(self): serializer = api.QuestionSerializer(instance=self.question) eq_( serializer.data["creator"], { "username": self.question.creator.username, "display_name": Profile.objects.get(user=self.question.creator).display_name, "avatar": profile_avatar(self.question.creator), }, )
def test_product_required(self): del self.data["product"] serializer = api.QuestionSerializer(context=self.context, data=self.data) ok_(not serializer.is_valid()) eq_( serializer.errors, { "product": ["This field is required."], "topic": ["A product must be specified to select a topic."], }, )
def test_with_tags(self): self.question.tags.add("tag1") self.question.tags.add("tag2") serializer = api.QuestionSerializer(instance=self.question) eq_( serializer.data["tags"], [ { "name": "tag1", "slug": "tag1" }, { "name": "tag2", "slug": "tag2" }, ], )
def test_it_works(self): serializer = api.QuestionSerializer(context=self.context, data=self.data) eq_(serializer.errors, {}) ok_(serializer.is_valid())
def test_with_votes(self): QuestionVoteFactory(question=self.question) QuestionVoteFactory(question=self.question) QuestionVoteFactory() serializer = api.QuestionSerializer(instance=self.question) eq_(serializer.data['num_votes'], 2)
def test_it_works(self): serializer = api.QuestionSerializer( context=self.context, data=self.data) serializer.is_valid(raise_exception=True)
def test_just_asker(self): serializer = api.QuestionSerializer(instance=self.question) eq_(serializer.data['involved'], self._names(self.asker))
def test_with_votes(self): questionvote(question=self.question, save=True) questionvote(question=self.question, save=True) questionvote(save=True) serializer = api.QuestionSerializer(instance=self.question) eq_(serializer.data['num_votes'], 2)
def test_no_votes(self): serializer = api.QuestionSerializer(instance=self.question) eq_(serializer.data['num_votes'], 0)