def test_entry_request_requires_authentication(self): request = utils.get_request( 'get', '/challenges/foo/enter/abc/', user=utils.get_anon_mock()) response = views.challenge_entry(request, 'foo', 'abc') eq_(response.status_code, 302) eq_(response['Location'], utils.get_login_url('/challenges/foo/enter/abc/'))
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_closed_challenge_redirects_to_detail_page(self, mock_get): app_mock = Mock(spec=Application) challenge_mock = Mock(spec=Challenge) challenge_mock.is_open.return_value = False mock_get.side_effect = [app_mock, challenge_mock] request = utils.get_request( 'get', '/challenges/foo/enter/abc/', user=utils.get_user_mock()) response = views.challenge_entry(request, 'foo', 'abc') eq_(response.status_code, 302) eq_(response['Location'], '/challenges/foo/abc/')
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()