diff --git a/edivorce/apps/core/tests.py b/edivorce/apps/core/tests.py index c6160214..1875b0f5 100644 --- a/edivorce/apps/core/tests.py +++ b/edivorce/apps/core/tests.py @@ -27,6 +27,12 @@ class UserResponseTestCase(TestCase): lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') self.assertEqual(is_complete(step, lst), True) + # Put empty response + UserResponse.objects.filter(question_id='want_which_orders').update(value="[]") + + lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') + self.assertEqual(is_complete(step, lst), False) + def test_your_info(self): step = 'your_information' questions = question_step_mapping[step] @@ -82,11 +88,17 @@ class UserResponseTestCase(TestCase): self.assertEqual(is_complete(step, lst), False) # All required questions with all checking question with all hidden questions - create_response(user, 'other_name_you', 'Smith') + create_response(user, 'other_name_you', '[["also known as","Smith"]]') lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') self.assertEqual(is_complete(step, lst), True) + # Put empty response + UserResponse.objects.filter(question_id='other_name_you').update(value='[["also known as",""]]') + + lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') + self.assertEqual(is_complete(step, lst), False) + def test_your_spouse(self): step = 'your_spouse' questions = question_step_mapping[step] @@ -147,6 +159,12 @@ class UserResponseTestCase(TestCase): lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') self.assertEqual(is_complete(step, lst), True) + # Put empty response + UserResponse.objects.filter(question_id='name_spouse').update(value="") + + lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') + self.assertEqual(is_complete(step, lst), False) + def test_your_marriage(self): pass @@ -165,6 +183,12 @@ class UserResponseTestCase(TestCase): lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') self.assertEqual(is_complete(step, lst), True) + # Put empty response + UserResponse.objects.filter(question_id='no_reconciliation_possible').update(value="") + + lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') + self.assertEqual(is_complete(step, lst), False) + def test_spousal_support(self): step = 'spousal_support' questions = question_step_mapping[step] @@ -192,6 +216,12 @@ class UserResponseTestCase(TestCase): lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') self.assertEqual(is_complete(step, lst), False) + # Put empty response + UserResponse.objects.filter(question_id='spouse_support_details').update(value="") + + lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') + self.assertEqual(is_complete(step, lst), False) + def test_property_and_debt(self): step = 'property_and_debt' questions = question_step_mapping[step] @@ -219,6 +249,12 @@ class UserResponseTestCase(TestCase): lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') self.assertEqual(is_complete(step, lst), True) + # Put empty response + UserResponse.objects.filter(question_id='how_to_divide_property_debt').update(value="") + + lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') + self.assertEqual(is_complete(step, lst), False) + def test_other_orders(self): step = 'other_orders' questions = question_step_mapping[step] @@ -234,6 +270,12 @@ class UserResponseTestCase(TestCase): lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') self.assertEqual(is_complete(step, lst), True) + # Put empty response + UserResponse.objects.filter(question_id='other_orders_detail').update(value="") + + lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') + self.assertEqual(is_complete(step, lst), False) + def test_other_questions(self): pass @@ -252,6 +294,12 @@ class UserResponseTestCase(TestCase): lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') self.assertEqual(is_complete(step, lst), True) + # Put empty response + UserResponse.objects.filter(question_id='court_registry_for_filing').update(value="") + + lst = UserResponse.objects.filter(question_id__in=questions).values('question_id', 'value') + self.assertEqual(is_complete(step, lst), False) + # Helper functions def create_response(user, question, value): diff --git a/edivorce/apps/core/utils/user_response.py b/edivorce/apps/core/utils/user_response.py index acca4872..db7646ef 100644 --- a/edivorce/apps/core/utils/user_response.py +++ b/edivorce/apps/core/utils/user_response.py @@ -1,7 +1,7 @@ from edivorce.apps.core.models import UserResponse, Question from edivorce.apps.core.utils.question_step_mapping import question_step_mapping, complete_state_for_step from copy import deepcopy - +import json def get_responses_from_db(bceid_user): responses = UserResponse.objects.filter(bceid_user=bceid_user) @@ -82,22 +82,30 @@ def is_complete(step, lst): for question in lst: q_id = question['question_id'] - - if q_id in required_list: - required_list.remove(q_id) - elif q_id in conditional_list: - value = question['value'] - if q_id in conditional_list and value == conditional_list[q_id][0]: - key_in_list = False - for key in lst: - if key['question_id'] == conditional_list[q_id][1]: - key_in_list = True - break - if key_in_list is False: - return False - conditional_list.pop(q_id, None) - else: - conditional_list.pop(q_id, None) + value = question['value'] + if value != '[]' and value != '': + if q_id in required_list: + required_list.remove(q_id) + elif q_id in conditional_list: + + if q_id in conditional_list and value == conditional_list[q_id][0]: + key_in_list = False + hidden_q_id = conditional_list[q_id][1] + for key in lst: + if key['question_id'] == hidden_q_id: + # print("H: %s, V: %s|" %(hidden_q_id, key['value'])) + if hidden_q_id == 'other_name_you' and not json.loads(key['value'])[0][1]: + break + elif not key['value']: + break + else: + key_in_list = True + break + if key_in_list is False: + return False + conditional_list.pop(q_id, None) + else: + conditional_list.pop(q_id, None) if not required_list and not conditional_list: return True return False