コード例 #1
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_handles_blank_answer_text(self):
     poll = Poll.objects.create(question_text='listening to your heart', title=random_title())
     Answer.objects.create(poll=poll, answer_text='')
     response = requests.get(
         'https://onion.sodahead.com/api/polls/{}'.format(poll.sodahead_id)
     ).json()
     self.assertEqual(response['poll']['answers'][0]['title'], 'Intentionally blank')
コード例 #2
0
    def test_set_end_date_to_null(self):
        poll = Poll.objects.create(question_text='dont end this poll',
                                   title=random_title())
        poll.published = timezone.now()
        poll.end_date = timezone.now() + timedelta(1)
        poll.save()

        data = {
            'published': poll.published.isoformat(),
            'title': poll.title,
            'question_text': poll.question_text,
            'end_date': None,
        }

        self.give_permissions()
        detail_url = reverse('poll-detail', kwargs={'pk': poll.id})
        response = self.api_client.put(
            detail_url,
            data=json.dumps(data),
            content_type='application/json',
        )

        response = requests.get(
            'https://onion.sodahead.com/api/polls/{}'.format(
                poll.sodahead_id)).json()
        self.assertIsNone(response['poll']['endDate'])
コード例 #3
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_handles_sodahead_answer_creation_errors(self):
     sodahead_endpoint = re.compile('https://onion.sodahead.com/api/polls/[\d]+/')
     poll = Poll.objects.create(question_text='listening to your heart', title=random_title())
     with requests_mock.Mocker() as mocker:
         mocker.post(sodahead_endpoint, status_code=500, json={})
         with self.assertRaises(SodaheadResponseError):
             Answer.objects.create(poll=poll, answer_text='something')
コード例 #4
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_sodahead_id_increments_properly_after_answer_delete(self):
     poll = Poll.objects.create(question_text='good text', title=random_title())
     answer = Answer.objects.create(poll=poll, answer_text='hello')
     answer.delete()
     self.assertFalse(Answer.objects.filter(id=poll.id).exists())
     next_answer = Answer.objects.create(poll=poll, answer_text='yawp!')
     self.assertEqual(next_answer.sodahead_answer_id, 'answer_02')
コード例 #5
0
    def test_get_poll_data(self):
        poll = Poll.objects.create(question_text=u'are we on vox!?',
                                   title=random_title())
        Answer.objects.create(poll=poll, answer_text=u'affirmative')
        Answer.objects.create(poll=poll, answer_text=u'that is a negatory')

        poll_data_url = reverse('get-merged-poll-data', kwargs={'pk': poll.id})
        response = self.api_client.get(poll_data_url,
                                       **{'HTTP_ORIGIN': 'this.cool.origin'})

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response['Access-Control-Allow-Origin'],
                         'this.cool.origin')
        self.assertEqual(response['Access-Control-Allow-Credentials'], 'true')

        if PY2:
            data = json.loads(response.content)
        else:
            data = json.loads(response.content.decode('utf-8'))

        self.assertEqual(data['id'], poll.id)
        self.assertEqual(data['total_votes'], 0)

        self.assertEqual(data['answers'][0]['total_votes'], 0)
        self.assertIsNotNone(data['answers'][0]['sodahead_id'], 0)

        self.assertEqual(data['answers'][1]['total_votes'], 0)
        self.assertIsNotNone(data['answers'][1]['sodahead_id'], 0)
コード例 #6
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_setting_published_sets_sodahead_activation_date(self):
     poll = Poll.objects.create(question_text='lettuce is good in a salad', title=random_title())
     collins_birthtime = datetime(1987, 4, 11, 8, 45, 0, tzinfo=pytz.utc)
     poll.published = collins_birthtime
     poll.save()
     response = requests.get('http://onion.sodahead.com/api/polls/{}'.format(poll.sodahead_id))
     self.assertEqual(response.json()['poll']['activationDate'], u'1987-04-11 08:45:00')
コード例 #7
0
 def test_poll_image_serialization(self):
     poll = Poll.objects.create(
         question_text='Where are we?',
         title=random_title(),
         end_date=timezone.now() + timedelta(hours=9),
     )
     serializer = PollSerializer(poll)
     self.assertTrue(serializer['poll_image'])
コード例 #8
0
 def test_answer_serialization(self):
     poll = Poll.objects.create(
         question_text='good text',
         title=random_title(),
     )
     answer = Answer.objects.create(poll=poll, answer_text='this is some text')
     serializer = AnswerSerializer(answer)
     self.assertEqual(serializer.data['answer_text'], answer.answer_text)
コード例 #9
0
 def test_get_poll(self):
     poll = Poll.objects.create(question_text='good text',
                                title=random_title())
     detail_url = reverse('poll-detail', kwargs={'pk': poll.id})
     self.give_permissions()
     response = self.api_client.get(detail_url)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response.data['id'], poll.id)
コード例 #10
0
 def test_answer_image_serialization(self):
     poll = Poll.objects.create(
         question_text='Where are we?',
         title=random_title(),
         end_date=timezone.now() + timedelta(hours=9),
     )
     answer = Answer.objects.create(poll=poll, answer_text='woop')
     serializer = AnswerSerializer(answer)
     self.assertTrue(serializer['answer_image'])
コード例 #11
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_setting_end_date_sets_sodahead_end_date(self):
     poll = Poll.objects.create(question_text='this poll ends', title=random_title())
     collins_birthtime = datetime(1987, 4, 11, 8, 45, 0, tzinfo=pytz.utc)
     poll.published = collins_birthtime
     end_of_the_poll = datetime(2050, 4, 11, 8, 45, 0, tzinfo=pytz.utc)
     poll.end_date = end_of_the_poll
     poll.save()
     response = requests.get('http://onion.sodahead.com/api/polls/{}'.format(poll.sodahead_id))
     self.assertEqual(response.json()['poll']['endDate'], u'2050-04-11 08:45:00')
コード例 #12
0
 def test_delete_answer(self):
     poll = Poll.objects.create(question_text='dreams',
                                title=random_title())
     answer = Answer.objects.create(answer_text='are fun', poll=poll)
     answer_url = reverse('answer-detail', kwargs={'pk': answer.id})
     self.give_permissions()
     response = self.api_client.delete(answer_url)
     self.assertEqual(response.status_code, 204)
     response2 = self.api_client.get(answer_url)
     self.assertEqual(response2.data['detail'], u'Not found.')
コード例 #13
0
 def test_put_proctected(self):
     poll = Poll.objects.create(
         question_text='decent text',
         title=random_title(),
     )
     detail_url = reverse('poll-detail', kwargs={'pk': poll.id})
     response = self.api_client.put(detail_url,
                                    data=json.dumps({}),
                                    content_type='application/json')
     self.assertEqual(response.status_code, 403)
コード例 #14
0
 def test_multiple_answer_serialization(self):
     poll = Poll.objects.create(
         question_text='good text',
         title=random_title(),
     )
     answer1 = Answer.objects.create(poll=poll, answer_text='this is some text')
     answer2 = Answer.objects.create(poll=poll, answer_text='forest path')
     serializer = AnswerSerializer(Answer.objects.all(), many=True)
     self.assertEqual(serializer.data[0]['answer_text'], answer1.answer_text)
     self.assertEqual(serializer.data[1]['answer_text'], answer2.answer_text)
コード例 #15
0
 def test_post_to_answers(self):
     poll = Poll.objects.create(question_text='Russell\'s time was over',
                                title=random_title())
     answers_url = reverse('answer-list')
     data = {'poll': poll.id, 'answer_text': 'he\'s getting stale'}
     self.give_permissions()
     response = self.api_client.post(answers_url,
                                     json.dumps(data),
                                     content_type='application/json')
     self.assertEqual(response.status_code, 201)
コード例 #16
0
    def test_serializing_unpublished_poll_does_serialize(self):
        poll = Poll.objects.create(
            question_text='it is not published yet',
            title=random_title(),
        )

        serializer = PollPublicSerializer(Poll.objects.get(id=poll.id))
        data = serializer.data

        self.assertEqual(data['answers'], [])
        self.assertIsNone(data.get('published'))
コード例 #17
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_changing_question_text_updates_sodahoad(self):
     poll = Poll.objects.create(
         question_text='do you want to wear a hat?',
         title=random_title()
     )
     poll.question_text = 'let us have it'
     poll.save()
     response = requests.get(
         'https://onion.sodahead.com/api/polls/{}'.format(poll.sodahead_id)
     ).json()
     self.assertEqual(response['poll']['title'], 'let us have it')
コード例 #18
0
    def test_search_polls(self):
        with vcr.use_cassette('test_search_polls'):
            poll1 = Poll.objects.create(
                question_text='find me',
                title=random_title(),
            )
            Poll.objects.create(
                question_text='dont find me',
                title=random_title(),
            )
        Poll.search_objects.refresh()

        self.give_permissions()
        list_url = reverse('poll-list') + '?search=' + poll1.title

        response = self.api_client.get(list_url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.data['results']), 1)
        self.assertEqual(response.data['results'][0]['question_text'],
                         'find me')
コード例 #19
0
 def test_put_to_update_poll(self):
     poll = Poll.objects.create(
         question_text='decent text',
         title=random_title(),
     )
     detail_url = reverse('poll-detail', kwargs={'pk': poll.id})
     data = {
         'question_text': 'better text',
         'title': random_title(),
         'published': timezone.now().isoformat(),
         'end_date': (timezone.now() + timedelta(10)).isoformat(),
     }
     self.give_permissions()
     response = self.api_client.put(
         detail_url,
         data=json.dumps(data),
         content_type='application/json',
     )
     self.assertEqual(response.status_code, 200)
     self.assertEqual(
         Poll.objects.get(id=poll.id).question_text, 'better text')
コード例 #20
0
 def test_poll_serialization(self):
     poll = Poll.objects.create(
         question_text='good text',
         title=random_title(),
         published=timezone.now(),
         end_date=timezone.now() + timedelta(1),
     )
     serializer = PollSerializer(poll)
     self.assertEqual(serializer.data['id'], poll.id)
     self.assertEqual(serializer.data['question_text'], poll.question_text)
     self.assertEqual(serializer.data['title'], poll.title)
     self.assertIsNotNone(serializer.data['end_date'])
コード例 #21
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_multiple_answer_creation(self):
     poll = Poll.objects.create(question_text='melissas adventure', title=random_title())
     Answer.objects.create(poll=poll, answer_text='something')
     Answer.objects.create(poll=poll, answer_text='bridge')
     Answer.objects.create(poll=poll, answer_text='alibaster')
     response = requests.get(
         'https://onion.sodahead.com/api/polls/{}'.format(poll.sodahead_id)
     ).json()
     self.assertEqual(len(response['poll']['answers']), 3)
     self.assertEqual(response['poll']['answers'][0]['title'], 'something')
     self.assertEqual(response['poll']['answers'][1]['title'], 'bridge')
     self.assertEqual(response['poll']['answers'][2]['title'], 'alibaster')
コード例 #22
0
    def test_filter_to_active_polls(self):
        with vcr.use_cassette('test_filter_to_active_polls'):
            Poll.objects.create(
                question_text='find me',
                title=random_title(),
                published=(timezone.now() - timedelta(1)),
            )
            poll2 = Poll.objects.create(
                question_text='dont find me',
                title=random_title(),
            )
            poll2.published = timezone.now() + timedelta(2)
            poll2.save()
        Poll.search_objects.refresh()

        self.give_permissions()
        list_url = reverse('poll-list') + '?active=true'
        response = self.api_client.get(list_url)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.data['results']), 1)
        self.assertEqual(response.data['results'][0]['question_text'],
                         'find me')
コード例 #23
0
    def test_serializing_poll_published_in_the_future_does_serialize(self):
        poll = Poll.objects.create(
            question_text='it is not published yet',
            title=random_title(),
        )

        poll.published = timezone.now() + timedelta(1)
        poll.save()

        serializer = PollPublicSerializer(Poll.objects.get(id=poll.id))
        data = serializer.data

        self.assertEqual(data['answers'], [])
        self.assertIsNotNone(data.get('published'))
コード例 #24
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_answer_names_survive_multiple_saves(self):
     poll = Poll.objects.create(
         question_text='dangerous waters ahead',
         title=random_title()
     )
     Answer.objects.create(answer_text='watch out', poll=poll)
     Answer.objects.create(answer_text='it\'s bad', poll=poll)
     poll.question_text = 'use a quarter pound of reasons'
     poll.save()
     response = requests.get(
         'https://onion.sodahead.com/api/polls/{}'.format(poll.sodahead_id)
     ).json()
     self.assertEqual(response['poll']['answers'][0]['title'], 'watch out')
     self.assertEqual(response['poll']['answers'][1]['title'], 'it\'s bad')
コード例 #25
0
    def test_serialization_includes_sodahead_data(self):
        poll = Poll.objects.create(
            question_text='is it powerful?',
            title=random_title(),
        )
        answer1 = Answer.objects.create(poll=poll, answer_text=u'yes')
        answer2 = Answer.objects.create(poll=poll, answer_text=u'no')
        answer3 = Answer.objects.create(poll=poll, answer_text=u'maybe')

        serializer = PollPublicSerializer(Poll.objects.get(id=poll.id))
        answers_data = serializer.data['answers']
        first_sodahead_id = answers_data[0]['sodahead_id']
        second_sodahead_id = answers_data[1]['sodahead_id']
        third_sodahead_id = answers_data[2]['sodahead_id']

        self.assertEqual(answers_data[0]['id'], answer1.id)
        self.assertEqual(answers_data[0]['sodahead_id'], first_sodahead_id)
        self.assertEqual(answers_data[0]['answer_text'], u'yes')
        self.assertEqual(answers_data[0]['poll'], poll.id)
        self.assertEqual(answers_data[0]['total_votes'], 0)

        self.assertEqual(answers_data[1]['id'], answer2.id)
        self.assertEqual(answers_data[1]['sodahead_id'], second_sodahead_id)
        self.assertEqual(answers_data[1]['answer_text'], u'no')
        self.assertEqual(answers_data[1]['poll'], poll.id)
        self.assertEqual(answers_data[1]['total_votes'], 0)

        self.assertEqual(answers_data[2]['id'], answer3.id)
        self.assertEqual(answers_data[2]['sodahead_id'], third_sodahead_id)
        self.assertEqual(answers_data[2]['answer_text'], u'maybe')
        self.assertEqual(answers_data[2]['poll'], poll.id)
        self.assertEqual(answers_data[2]['total_votes'], 0)

        answer2.delete()

        serializer = PollPublicSerializer(Poll.objects.get(id=poll.id))
        answers_data = serializer.data['answers']

        self.assertEqual(answers_data[0]['id'], answer1.id)
        self.assertEqual(answers_data[0]['sodahead_id'], first_sodahead_id)
        self.assertEqual(answers_data[0]['answer_text'], u'yes')
        self.assertEqual(answers_data[0]['poll'], poll.id)
        self.assertEqual(answers_data[0]['total_votes'], 0)

        self.assertEqual(answers_data[1]['id'], answer3.id)
        self.assertEqual(answers_data[1]['sodahead_id'], third_sodahead_id)
        self.assertEqual(answers_data[1]['answer_text'], u'maybe')
        self.assertEqual(answers_data[1]['poll'], poll.id)
        self.assertEqual(answers_data[1]['total_votes'], 0)
コード例 #26
0
 def test_post_to_create_poll(self):
     list_url = reverse('poll-list')
     data = {
         'question_text': 'go underneath the bridge!',
         'title': random_title()
     }
     self.give_permissions()
     response = self.api_client.post(list_url,
                                     json.dumps(data),
                                     content_type='application/json')
     self.assertEqual(response.status_code, 201)
     id = response.data.get('id')
     self.assertIsNotNone(id)
     poll = Poll.objects.get(id=int(id))
     self.assertIsNotNone(poll)
コード例 #27
0
 def test_put_to_update_answer(self):
     poll = Poll.objects.create(question_text='Russell actually never was',
                                title=random_title())
     answer = Answer.objects.create(answer_text='isn\'t that disturbing?',
                                    poll=poll)
     answer_url = reverse('answer-detail', kwargs={'pk': answer.id})
     data = {'answer_text': 'he\'s getting stale'}
     self.give_permissions()
     response = self.api_client.put(answer_url,
                                    json.dumps(data),
                                    content_type='application/json')
     self.assertEqual(response.status_code, 200)
     self.assertEqual(
         Answer.objects.get(id=answer.id).answer_text,
         'he\'s getting stale')
コード例 #28
0
 def test_sodahead_service_failure(self):
     with requests_mock.Mocker() as mocker:
         sodahead_endpoint = re.compile(
             'https://onion.sodahead.com/api/polls/')
         mocker.post(sodahead_endpoint, status_code=500)
         list_url = reverse('poll-list')
         data = {
             'questions_text': 'go underneath the bridge!',
             'title': random_title()
         }
         self.give_permissions()
         response = self.api_client.post(list_url,
                                         json.dumps(data),
                                         content_type='application/json')
         self.assertEqual(response.status_code, 503)
コード例 #29
0
    def test_poll_answer_serialization(self):
        poll = Poll.objects.create(
            question_text=u'good text',
            title=random_title(),
        )
        answer1 = Answer.objects.create(poll=poll, answer_text=u'this is some text')
        answer2 = Answer.objects.create(poll=poll, answer_text=u'forest path')
        serializer = PollSerializer(poll)
        answers_data = serializer.data['answers']

        self.assertEqual(answers_data[0]['id'], answer1.id)
        self.assertEqual(answers_data[0]['answer_text'], u'this is some text')
        self.assertEqual(answers_data[0]['poll'], poll.id)

        self.assertEqual(answers_data[1]['id'], answer2.id)
        self.assertEqual(answers_data[1]['answer_text'], u'forest path')
        self.assertEqual(answers_data[1]['poll'], poll.id)
コード例 #30
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_poll_delete_on_sodahead(self):
     poll = Poll.objects.create(question_text='good text', title=random_title())
     poll.delete()
     response = requests.get('https://onion.sodahead.com/api/polls/{}'.format(poll.sodahead_id))
     self.assertEqual(response.status_code, 400)
コード例 #31
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_poll_delete(self):
     poll = Poll.objects.create(question_text='good text', title=random_title())
     poll.delete()
     self.assertFalse(Poll.objects.filter(id=poll.id))
コード例 #32
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_poll_creation_fails_when_sodahead_request_fails(self):
     with requests_mock.Mocker() as mocker:
         mocker.post('https://onion.sodahead.com/api/polls/', status_code=500)
         with self.assertRaises(SodaheadResponseError):
             Poll.objects.create(question_text='other text', title=random_title())
コード例 #33
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_poll_creation_gets_sodahead_id(self):
     poll = Poll.objects.create(question_text='other text', title=random_title())
     self.assertNotEqual(poll.sodahead_id, '')
コード例 #34
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_create(self):
     poll = Poll.objects.create(question_text='good text', title=random_title())
     self.assertTrue(Poll.objects.filter(id=poll.id).exists())
コード例 #35
0
ファイル: test_models.py プロジェクト: diegosada/django-bulbs
 def test_create_answer(self):
     poll = Poll.objects.create(question_text='collins adventure', title=random_title())
     answer = Answer.objects.create(poll=poll)
     self.assertEqual(answer.sodahead_answer_id, 'answer_01')