def test_returns_short_answer_text(self):
     question = {
         'itemId': '1' * 24,
         'responses': [{
             'text': {
                 'text': 'a short answer'
             }
         }]
     }
     attempts = get_attempts(question, self.MC)
     assert attempts == 'a short answer'
 def test_returns_filename_for_single_file_upload(self):
     question = {
         'itemId':
         '1' * 24,
         'responses': [{
             'fileId': {
                 'assetId': '0' * 24,
                 'assetContentTypeId': 'foo'
             }
         }]
     }
     attempts = get_attempts(question, self.MC)
     assert attempts == '1234.foo'
 def test_returns_filename_for_multi_file_upload(self):
     question = {
         'itemId':
         '1' * 24,
         'responses': [{
             'fileIds': {
                 'my_file_wav': {
                     'assetContentId': 'fake%3Afoo%40MIT'
                 }
             }
         }]
     }
     attempts = get_attempts(question, self.MC)
     assert attempts == 'foo.wav'
 def test_returns_none_for_missing_response(self):
     question = {'itemId': '1' * 24, 'responses': [{'missingResponse': 0}]}
     attempts = get_attempts(question, self.MC)
     assert attempts == 'None'
 def test_returns_no_file_text(self):
     question = {'itemId': '1' * 24, 'responses': [{'fileIds': {}}]}
     attempts = get_attempts(question, self.MC)
     assert attempts == 'empty file response'
 def test_returns_choice_text_for_multichoice(self):
     question = {'itemId': '1' * 24, 'responses': [{'choiceIds': ['123']}]}
     attempts = get_attempts(question, self.MC)
     assert attempts == 'a bear'
 def test_throws_exception_for_unknown_response_format(self):
     question = {'itemId': '1' * 24, 'responses': [{'bim': 'bap'}]}
     with pytest.raises(TypeError):
         get_attempts(question, self.MC)