def test_valid_payload_succeeds(self): user = get_user('us-ignite') challenge = fixtures.get_challenge( user=user, status=Challenge.PUBLISHED) app = get_application(owner=user, status=Application.PUBLISHED) question = fixtures.get_question(challenge) entry = fixtures.get_entry(app) EntryAnswer.get_or_create_answer( entry, question, 'Uses Gigabit features.') question_id = 'question_%s' % question.id data = { 'status': Entry.SUBMITTED, question_id: 'Answer for the question!' } url = '/challenges/%s/enter/%s/' % (challenge.slug, app.slug) request = utils.get_request('post', url, data=data, user=user) request._messages = utils.TestMessagesBackend(request) response = views.challenge_entry( request, challenge.slug, app.slug) eq_(response.status_code, 302) eq_(response['location'], url) entry = Entry.objects.get_entry_or_none(challenge, app) values = entry.entryanswer_set.values('answer', 'question_id').all() expected = [{ 'answer': 'Answer for the question!', 'question_id': question.id }] eq_(list(values), expected)
def test_get_or_create_answer(self): user = get_user('us-ignite') challenge = fixtures.get_challenge(user=user) application = get_application(owner=user) question = fixtures.get_question(challenge) entry = fixtures.get_entry(application) instance = EntryAnswer.get_or_create_answer( entry, question, 'Uses Gigabit features.') ok_(instance.id) eq_(instance.question, question) eq_(instance.answer, 'Uses Gigabit features.') ok_(instance.created) ok_(instance.modified)
def test_challenge_form_is_returned_successful(self): user = get_user('us-ignite') challenge = fixtures.get_challenge( user=user, status=Challenge.PUBLISHED) app = get_application(owner=user, status=Application.PUBLISHED) question = fixtures.get_question(challenge) entry = fixtures.get_entry(app) EntryAnswer.get_or_create_answer( entry, question, 'Uses Gigabit features.') request = utils.get_request( 'get', '/challenges/foo/enter/abc/', user=user) response = views.challenge_entry( request, challenge.slug, app.slug) eq_(response.status_code, 200) eq_(sorted(response.context_data.keys()), sorted(['form', 'challenge', 'application', 'entry'])) context = response.context_data eq_(context['challenge'], challenge) eq_(context['application'], app) eq_(context['entry'], None) eq_(sorted(context['form'].fields.keys()), sorted(['question_%s' % question.id, 'status'])) self._tear_down()