def test_rejected_method(self): """ object.rejected should return a list of objects with status 'r' """ self.assertEqual(len(self.obj.rejected()), 0) r = TempLanguage(code="qaa-x-ghijkl", status="r") r.save() returned = self.obj.rejected() self.assertEqual(len(returned), 1) self.assertIn(r, returned)
def test_approved_method(self): """ object.approved should return a list of objects with status 'a' """ self.assertEqual(len(self.obj.approved()), 0) a = TempLanguage(code="qaa-x-ghijkl", status="a") a.save() returned = self.obj.approved() self.assertEqual(len(returned), 1) self.assertIn(a, returned)
def setUp(self): self.obj = TempLanguage(code="qaa-x-abcdef", name="Temporary Language") self.obj.save() self.obj.questionnaire = Questionnaire.objects.create(questions=[ { "id": 0, "text": "What do you call your language?", "help": "Test help text", "required": True, "input_type": "string", "sort": 1, "depends_on": None }, { "id": 1, "text": "Second Question", "help": "Test help text", "required": True, "input_type": "string", "sort": 2, "depends_on": None } ]) self.obj.answers = [ { 'question_id': 0, 'text': 'wonderful' } ] self.obj.save()
def test_lang_assigned_map_method(self): """ lang_assigned_map should return a list of dictionary of object.code: object.lang_assigned.code """ self.assertListEqual(self.obj.lang_assigned_map(), [{ "qaa-x-abcdef": "qaa-x-abcdef" }]) TempLanguage(code="qaa-x-123456").save() returned = self.obj.lang_assigned_map() self.assertEquals(len(returned), 2) self.assertIn({"qaa-x-abcdef": "qaa-x-abcdef"}, returned) self.assertIn({"qaa-x-123456": "qaa-x-123456"}, returned)
def setUp(self): self.obj = TempLanguage(code="qaa-x-abcdef", name="Temporary Language") self.obj.save() self.obj.questionnaire = Questionnaire.objects.create( questions=[{ "id": 0, "text": "What do you call your language?", "help": "Test help text", "required": True, "input_type": "string", "sort": 1, "depends_on": None }, { "id": 1, "text": "Second Question", "help": "Test help text", "required": True, "input_type": "string", "sort": 2, "depends_on": None }]) self.obj.answers = [{'question_id': 0, 'text': 'wonderful'}] self.obj.save()
def post(self, request, *args, **kwargs): # First pass only. Will need more validation and refactoring data = list() answers = list() answer_list = list() answer_text_list = list() obj_list = list() try: message = "" data = request.POST if len(request.POST) else json.loads(request.body) questionnaire = Questionnaire.objects.get(pk=data.get("questionnaire_id")) field_mapping = questionnaire.field_mapping answers = json.loads(data.get("answers")) if len(request.POST) else data.get("answers") obj = TempLanguage(code=data.get("temp_code"), questionnaire=questionnaire, app=data.get("app"), request_id=data.get("request_id"), requester=data.get("requester"), answers=answers) for answer in answers: answer_list.append(answer) qid = str(answer.get("question_id")) if qid is not None and qid in field_mapping: answer_text = answer.get("text") answer_text_list.append(answer_text) if field_mapping[qid] == "country": obj.country = Country.objects.get(name__iexact=answer_text) obj_list.append(obj.country and obj.country.name) elif field_mapping[qid] == "direction": obj.direction = "l" if answer_text.lower() == "yes" else "r" obj_list.append(obj.direction) else: obj.__dict__[field_mapping[qid]] = answer_text obj_list.append(obj.__dict__[field_mapping[qid]]) obj.save() except Questionnaire.DoesNotExist: message = "questionnaire_id given does not return a matching Questionnaire object" except Country.DoesNotExist: message = "The answer for country results in an invalid lookup" except Exception as e: message = e.message return JsonResponse( { "status": "error" if message else "success", "message": message or "Request submitted", "debug": { "data": data or "no data", "answers": answers or "no answers", "answer_list": answer_list or "no answer_list", "answer_text_list": answer_text_list or "no answer_text_list", "obj_list": obj_list or "no obj_list" } } )
class TempLanguageTestCase(TestCase): def setUp(self): self.obj = TempLanguage(code="qaa-x-abcdef", name="Temporary Language") self.obj.save() self.obj.questionnaire = Questionnaire.objects.create(questions=[ { "id": 0, "text": "What do you call your language?", "help": "Test help text", "required": True, "input_type": "string", "sort": 1, "depends_on": None }, { "id": 1, "text": "Second Question", "help": "Test help text", "required": True, "input_type": "string", "sort": 2, "depends_on": None } ]) self.obj.answers = [ { 'question_id': 0, 'text': 'wonderful' } ] self.obj.save() def test_string_representation(self): """ __str__() should returned the model's code """ self.assertEquals(str(self.obj), "qaa-x-abcdef") def test_get_absolute_url(self): """ get_absolute_url should return the URL to the detail page """ self.assertEquals(self.obj.get_absolute_url(), reverse("templanguage_detail", args=[str(self.obj.id)])) def test_lang_assigned_url_property(self): """ lang_assigned_url should return the URL to the detail page of model's lang_assigned related object """ self.assertEquals(self.obj.lang_assigned_url, reverse("language_detail", args=[str(self.obj.lang_assigned_id)])) def test_name_property(self): """ object.name should return its name """ self.assertEquals(self.obj.name, "Temporary Language") def test_pending_method(self): """ object.pending should return a list of objects with status 'p' """ returned = self.obj.pending() self.assertEqual(len(returned), 1) self.assertIn(self.obj, returned) def test_approved_method(self): """ object.approved should return a list of objects with status 'a' """ self.assertEqual(len(self.obj.approved()), 0) a = TempLanguage(code="qaa-x-ghijkl", status="a") a.save() returned = self.obj.approved() self.assertEqual(len(returned), 1) self.assertIn(a, returned) def test_rejected_method(self): """ object.rejected should return a list of objects with status 'r' """ self.assertEqual(len(self.obj.rejected()), 0) r = TempLanguage(code="qaa-x-ghijkl", status="r") r.save() returned = self.obj.rejected() self.assertEqual(len(returned), 1) self.assertIn(r, returned) def test_lang_assigned_map_method(self): """ lang_assigned_map should return a list of dictionary of object.code: object.lang_assigned.code """ self.assertListEqual(self.obj.lang_assigned_map(), [{"qaa-x-abcdef": "qaa-x-abcdef"}]) TempLanguage(code="qaa-x-123456").save() returned = self.obj.lang_assigned_map() self.assertEquals(len(returned), 2) self.assertIn({"qaa-x-abcdef": "qaa-x-abcdef"}, returned) self.assertIn({"qaa-x-123456": "qaa-x-123456"}, returned) def test_lang_assigned_changed_map(self): """ lang_assigned_map should return a list of dictionary of object.code: object.lang_assigned.code """ l = self.obj.lang_assigned l.code = "abc" l.save() self.assertListEqual(self.obj.lang_assigned_changed_map(), [{"qaa-x-abcdef": "abc"}]) def test_questions_answers(self): tmp = self.obj.questions_and_answers self.assertEqual(tmp[0]["id"], 0) self.assertEqual(tmp[0]["question"], "What do you call your language?") self.assertEqual(tmp[0]["answer"], "wonderful") self.assertEqual(tmp[1]["answer"], "") self.obj.answers = None tmp = self.obj.questions_and_answers self.assertEqual(len(tmp), len(self.obj.questionnaire.questions)) self.assertEqual(tmp[0]["answer"], "") self.assertEqual(tmp[1]["answer"], "")
def lang_assignment_changed_json(request): return JsonResponse(TempLanguage.lang_assigned_changed_map(), safe=False)
def templanguages_json(request): return JsonResponse(TempLanguage.lang_assigned_data(), safe=False)
def setUp(self): obj = TempLanguage(pk=999, code="tst") obj.save() self.request = RequestFactory().get("/uw/templanguages/") self.request.user = create_user() self.view = setup_view(TempLanguageDetailView(), self.request)
class TempLanguageTestCase(TestCase): def setUp(self): self.obj = TempLanguage(code="qaa-x-abcdef", name="Temporary Language") self.obj.save() self.obj.questionnaire = Questionnaire.objects.create( questions=[{ "id": 0, "text": "What do you call your language?", "help": "Test help text", "required": True, "input_type": "string", "sort": 1, "depends_on": None }, { "id": 1, "text": "Second Question", "help": "Test help text", "required": True, "input_type": "string", "sort": 2, "depends_on": None }]) self.obj.answers = [{'question_id': 0, 'text': 'wonderful'}] self.obj.save() def test_string_representation(self): """ __str__() should returned the model's code """ self.assertEquals(str(self.obj), "qaa-x-abcdef") def test_get_absolute_url(self): """ get_absolute_url should return the URL to the detail page """ self.assertEquals( self.obj.get_absolute_url(), reverse("templanguage_detail", args=[str(self.obj.id)])) def test_lang_assigned_url_property(self): """ lang_assigned_url should return the URL to the detail page of model's lang_assigned related object """ self.assertEquals( self.obj.lang_assigned_url, reverse("language_detail", args=[str(self.obj.lang_assigned_id)])) def test_name_property(self): """ object.name should return its name """ self.assertEquals(self.obj.name, "Temporary Language") def test_pending_method(self): """ object.pending should return a list of objects with status 'p' """ returned = self.obj.pending() self.assertEqual(len(returned), 1) self.assertIn(self.obj, returned) def test_approved_method(self): """ object.approved should return a list of objects with status 'a' """ self.assertEqual(len(self.obj.approved()), 0) a = TempLanguage(code="qaa-x-ghijkl", status="a") a.save() returned = self.obj.approved() self.assertEqual(len(returned), 1) self.assertIn(a, returned) def test_rejected_method(self): """ object.rejected should return a list of objects with status 'r' """ self.assertEqual(len(self.obj.rejected()), 0) r = TempLanguage(code="qaa-x-ghijkl", status="r") r.save() returned = self.obj.rejected() self.assertEqual(len(returned), 1) self.assertIn(r, returned) def test_lang_assigned_map_method(self): """ lang_assigned_map should return a list of dictionary of object.code: object.lang_assigned.code """ self.assertListEqual(self.obj.lang_assigned_map(), [{ "qaa-x-abcdef": "qaa-x-abcdef" }]) TempLanguage(code="qaa-x-123456").save() returned = self.obj.lang_assigned_map() self.assertEquals(len(returned), 2) self.assertIn({"qaa-x-abcdef": "qaa-x-abcdef"}, returned) self.assertIn({"qaa-x-123456": "qaa-x-123456"}, returned) def test_lang_assigned_changed_map(self): """ lang_assigned_map should return a list of dictionary of object.code: object.lang_assigned.code """ l = self.obj.lang_assigned l.code = "abc" l.save() self.assertListEqual(self.obj.lang_assigned_changed_map(), [{ "qaa-x-abcdef": "abc" }]) def test_questions_answers(self): tmp = self.obj.questions_and_answers self.assertEqual(tmp[0]["id"], 0) self.assertEqual(tmp[0]["question"], "What do you call your language?") self.assertEqual(tmp[0]["answer"], "wonderful") self.assertEqual(tmp[1]["answer"], "") self.obj.answers = None tmp = self.obj.questions_and_answers self.assertEqual(len(tmp), len(self.obj.questionnaire.questions)) self.assertEqual(tmp[0]["answer"], "") self.assertEqual(tmp[1]["answer"], "")
def post(self, request, *args, **kwargs): # First pass only. Will need more validation and refactoring data = list() answers = list() answer_list = list() answer_text_list = list() obj_list = list() try: message = "" data = request.POST if len(request.POST) else json.loads( request.body) questionnaire = Questionnaire.objects.get( pk=data.get("questionnaire_id")) field_mapping = questionnaire.field_mapping answers = json.loads(data.get("answers")) if len( request.POST) else data.get("answers") obj = TempLanguage(code=data.get("temp_code"), questionnaire=questionnaire, app=data.get("app"), request_id=data.get("request_id"), requester=data.get("requester"), answers=answers) for answer in answers: answer_list.append(answer) qid = str(answer.get("question_id")) if qid is not None and qid in field_mapping: answer_text = answer.get("text") answer_text_list.append(answer_text) if field_mapping[qid] == "country": obj.country = Country.objects.get( name__iexact=answer_text) obj_list.append(obj.country and obj.country.name) elif field_mapping[qid] == "direction": obj.direction = "l" if answer_text.lower( ) == "yes" else "r" obj_list.append(obj.direction) else: obj.__dict__[field_mapping[qid]] = answer_text obj_list.append(obj.__dict__[field_mapping[qid]]) obj.save() except Questionnaire.DoesNotExist: message = "questionnaire_id given does not return a matching Questionnaire object" except Country.DoesNotExist: message = "The answer for country results in an invalid lookup" except Exception as e: message = e.message return JsonResponse({ "status": "error" if message else "success", "message": message or "Request submitted", "debug": { "data": data or "no data", "answers": answers or "no answers", "answer_list": answer_list or "no answer_list", "answer_text_list": answer_text_list or "no answer_text_list", "obj_list": obj_list or "no obj_list" } })