Browse Source

Fixed complete status issue with empty values

pull/160/head
Charles Shin 8 years ago
parent
commit
7e5c22ec77
2 changed files with 74 additions and 18 deletions
  1. +49
    -1
      edivorce/apps/core/tests.py
  2. +25
    -17
      edivorce/apps/core/utils/user_response.py

+ 49
- 1
edivorce/apps/core/tests.py View File

@ -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):

+ 25
- 17
edivorce/apps/core/utils/user_response.py View File

@ -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

Loading…
Cancel
Save