Beispiel #1
0
 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)
Beispiel #2
0
 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),
     })
Beispiel #3
0
    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))
Beispiel #4
0
 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)
Beispiel #5
0
    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)
Beispiel #6
0
 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)
Beispiel #7
0
    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),
        )
Beispiel #8
0
 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'},
     ])
Beispiel #9
0
    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))
Beispiel #10
0
 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,
         })
Beispiel #11
0
 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())
Beispiel #12
0
 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)
Beispiel #13
0
 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."],
     })
Beispiel #14
0
 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.'],
     })
Beispiel #15
0
 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)
Beispiel #16
0
 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)
Beispiel #17
0
 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),
         },
     )
Beispiel #18
0
 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."],
         },
     )
Beispiel #19
0
 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"
             },
         ],
     )
Beispiel #20
0
 def test_it_works(self):
     serializer = api.QuestionSerializer(context=self.context,
                                         data=self.data)
     eq_(serializer.errors, {})
     ok_(serializer.is_valid())
Beispiel #21
0
 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)
Beispiel #22
0
 def test_it_works(self):
     serializer = api.QuestionSerializer(
         context=self.context, data=self.data)
     serializer.is_valid(raise_exception=True)
Beispiel #23
0
 def test_just_asker(self):
     serializer = api.QuestionSerializer(instance=self.question)
     eq_(serializer.data['involved'], self._names(self.asker))
Beispiel #24
0
 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)
Beispiel #25
0
 def test_no_votes(self):
     serializer = api.QuestionSerializer(instance=self.question)
     eq_(serializer.data['num_votes'], 0)