Browse Source

Merge pull request #136 from bcgov/DIV-1020

Add tests for forms to file
pull/172/head
Arianne 5 years ago
committed by GitHub
parent
commit
09844065b0
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 175 additions and 25 deletions
  1. +0
    -1
      edivorce/apps/core/tests/test_efiling_hub.py
  2. +151
    -0
      edivorce/apps/core/tests/test_filing.py
  3. +22
    -22
      edivorce/apps/core/utils/cso_filing.py
  4. +2
    -2
      edivorce/apps/core/views/main.py

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

@ -1,5 +1,4 @@
import json
import requests
from unittest import mock
from django.contrib.sessions.middleware import SessionMiddleware


+ 151
- 0
edivorce/apps/core/tests/test_filing.py View File

@ -0,0 +1,151 @@
from django.test import TestCase
from edivorce.apps.core.models import BceidUser, Document, UserResponse
from edivorce.apps.core.utils.cso_filing import forms_to_file
from edivorce.apps.core.utils.user_response import get_data_for_user
class FilingLogic(TestCase):
fixtures = ['Question.json']
def setUp(self):
self.user = BceidUser.objects.create(user_guid='1234')
self.create_response('how_to_file', 'Online')
def create_response(self, question, value):
response, _ = UserResponse.objects.get_or_create(bceid_user=self.user, question_id=question)
response.value = value
response.save()
@property
def questions_dict(self):
return get_data_for_user(self.user)
def test_forms_to_file_initial_together_in_person(self):
def assert_package_1_needed(uploaded, generated):
self.assertEqual(len(uploaded), 3)
self.assertIn({'doc_type': doc_type("proof of marriage"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("affidavit of translation"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("joint divorce proceedings"), 'party_code': 0}, uploaded)
self.assertEqual(len(generated), 1)
self.assertIn({'doc_type': doc_type("notice of joint family claim"), 'form_number': 1}, generated)
self.create_response('how_to_sign', 'Together')
self.create_response('signing_location', 'In-person')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
assert_package_1_needed(uploaded, generated)
self.create_response('how_to_sign', 'Separately')
self.create_response('signing_location_you', 'In-person')
self.create_response('signing_location_spouse', 'In-person')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
assert_package_1_needed(uploaded, generated)
self.create_response('how_to_sign', 'Separately')
self.create_response('signing_location_you', 'In-person')
self.create_response('signing_location_spouse', 'Virtual')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
assert_package_1_needed(uploaded, generated)
def test_forms_to_file_both_virtual(self):
def assert_package_1_2_3_needed(with_efss_spouse=False):
# No conditional forms
self.create_response('children_of_marriage', 'NO')
self.create_response('name_change_you', 'NO')
self.create_response('name_change_spouse', 'NO')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
doc_count = len(uploaded)
if with_efss_spouse:
self.assertEqual(doc_count, 6)
else:
self.assertEqual(doc_count, 5)
self.assertIn({'doc_type': doc_type("proof of marriage"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("affidavit of translation"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("draft final order"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("joint divorce proceedings"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing"), 'party_code': 1}, uploaded)
if with_efss_spouse:
self.assertIn({'doc_type': doc_type("electronic filing"), 'party_code': 2}, uploaded)
self.assertEqual(len(generated), 3)
self.assertIn({'doc_type': doc_type("notice of joint family claim"), 'form_number': 1}, generated)
self.assertIn({'doc_type': doc_type("requisition form"), 'form_number': 35}, generated)
self.assertIn({'doc_type': doc_type("certificate of pleadings"), 'form_number': 36}, generated)
# Conditional forms
self.create_response('children_of_marriage', 'YES')
self.create_response('has_children_under_19', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), doc_count+1)
self.assertIn({'doc_type': doc_type("agreement as to annual income"), 'party_code': 0}, uploaded)
self.create_response('want_which_orders', '["Other orders"]')
self.create_response('name_change_you', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), doc_count + 2)
self.assertIn({'doc_type': doc_type("identification of applicant"), 'party_code': 1}, uploaded)
self.create_response('name_change_spouse', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), doc_count + 3)
self.assertIn({'doc_type': doc_type("identification of applicant"), 'party_code': 2}, uploaded)
self.create_response('how_to_sign', 'Together')
self.create_response('signing_location', 'Virtual')
assert_package_1_2_3_needed()
self.create_response('how_to_sign', 'Separately')
self.create_response('signing_location_you', 'Virtual')
self.create_response('signing_location_spouse', 'Virtual')
assert_package_1_2_3_needed(with_efss_spouse=True)
def test_forms_to_file_you_virtual_spouse_in_person(self):
def assert_package_1_2_needed():
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), 5)
self.assertIn({'doc_type': doc_type("proof of marriage"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("affidavit of translation"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("draft final order"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("joint divorce proceedings"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing"), 'party_code': 1}, uploaded)
self.assertEqual(len(generated), 3)
self.assertIn({'doc_type': doc_type("notice of joint family claim"), 'form_number': 1}, generated)
self.assertIn({'doc_type': doc_type("requisition form"), 'form_number': 35}, generated)
self.assertIn({'doc_type': doc_type("certificate of pleadings"), 'form_number': 36}, generated)
# Conditional forms
self.create_response('children_of_marriage', 'YES')
self.create_response('has_children_under_19', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), 6)
self.assertIn({'doc_type': doc_type("agreement as to annual income"), 'party_code': 0}, uploaded)
self.create_response('want_which_orders', '["Other orders"]')
self.create_response('name_change_you', 'YES')
self.create_response('name_change_spouse', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), 7)
self.assertIn({'doc_type': doc_type("identification of applicant"), 'party_code': 1}, uploaded)
self.create_response('how_to_sign', 'Separately')
self.create_response('signing_location_you', 'Virtual')
self.create_response('signing_location_spouse', 'In-person')
assert_package_1_2_needed()
def doc_type(text):
for doc_type, name in Document.form_types.items():
if text.lower() in name.lower():
return doc_type
raise ValueError(f"Couldn't find doc with name that contains '{text}'")

+ 22
- 22
edivorce/apps/core/utils/cso_filing.py View File

@ -64,61 +64,62 @@ def forms_to_file(responses_dict, initial=False):
derived = responses_dict.get('derived', get_derived_data(responses_dict))
name_change_you = derived['wants_other_orders'] and responses_dict.get('name_change_you') == 'YES'
name_change_spouse = derived['wants_other_orders'] and responses_dict.get('name_change_spouse') == 'YES'
has_children = derived['has_children_of_marriage']
if initial:
generated.append({'doc_type': 'NJF', 'form_number': 1})
uploaded.append({'doc_type': 'MC', 'party_code': 0})
uploaded.append({'doc_type': 'AFTL', 'party_code': 0})
if signing_location_both == 'In-person' or signing_location_you == 'In-person':
# at least one claimant is signing with a commissioner
uploaded.append({'doc_type': 'AFTL', 'party_code': 0})
# claimant 1 is signing with a commissioner
uploaded.append({'doc_type': 'RDP', 'party_code': 0})
elif signing_location_you == 'Virtual' and signing_location_spouse == 'In-person':
# claimant 1 is signing virtually and claimant 2 is not
generated.append({'doc_type': 'RFO', 'form_number': 35})
generated.append({'doc_type': 'RCP', 'form_number': 36})
uploaded.append({'doc_type': 'AFTL', 'party_code': 0})
uploaded.append({'doc_type': 'OFI', 'party_code': 0})
uploaded.append({'doc_type': 'EFSS', 'party_code': 1})
uploaded.append({'doc_type': 'RDP', 'party_code': 0})
if derived['has_children_of_marriage']:
if has_children:
uploaded.append({'doc_type': 'AAI', 'party_code': 0})
if derived['wants_other_orders'] and responses_dict.get('name_change_you') == 'YES':
if name_change_you:
uploaded.append({'doc_type': 'NCV', 'party_code': 1})
elif signing_location_both == 'Virtual' or (signing_location_you == 'Virtual' and signing_location_spouse == 'Virtual'):
# both parties (either together or separately) are signing virtually
generated.append({'doc_type': 'RFO', 'form_number': 35})
generated.append({'doc_type': 'RCP', 'form_number': 36})
uploaded.append({'doc_type': 'AFTL', 'party_code': 0})
uploaded.append({'doc_type': 'OFI', 'party_code': 0})
uploaded.append({'doc_type': 'EFSS', 'party_code': 1})
uploaded.append({'doc_type': 'EFSS', 'party_code': 2})
if how_to_sign == 'Separately':
uploaded.append({'doc_type': 'EFSS', 'party_code': 2})
uploaded.append({'doc_type': 'RDP', 'party_code': 0})
if derived['has_children_of_marriage']:
if has_children:
uploaded.append({'doc_type': 'AAI', 'party_code': 0})
if derived['wants_other_orders'] and responses_dict.get('name_change_you') == 'YES':
if name_change_you:
uploaded.append({'doc_type': 'NCV', 'party_code': 1})
if derived['wants_other_orders'] and responses_dict.get('name_change_spouse') == 'YES':
if name_change_spouse:
uploaded.append({'doc_type': 'NCV', 'party_code': 2})
else:
return ([], [])
return [], []
else: # Final Filing
if signing_location_both == 'Virtual':
# if both parties have signed virtually and signing together
if derived['has_children_of_marriage']:
if has_children:
uploaded.append({'doc_type': 'CSA', 'party_code': 0})
uploaded.append({'doc_type': 'AFDO', 'party_code': 0})
elif signing_location_you == 'Virtual' and signing_location_spouse == 'Virtual':
# both parties have signed virtually and signing separately
if derived['has_children_of_marriage']:
if has_children:
uploaded.append({'doc_type': 'CSA', 'party_code': 1})
uploaded.append({'doc_type': 'AFDO', 'party_code': 1})
if derived['has_children_of_marriage']:
if has_children:
uploaded.append({'doc_type': 'CSA', 'party_code': 2})
uploaded.append({'doc_type': 'AFDO', 'party_code': 2})
@ -126,19 +127,18 @@ def forms_to_file(responses_dict, initial=False):
# at least one party has signed with a commissioner and Filing Online
generated.append({'doc_type': 'RFO', 'form_number': 35})
generated.append({'doc_type': 'RCP', 'form_number': 36})
if derived['has_children_of_marriage']:
if has_children:
uploaded.append({'doc_type': 'CSA', 'party_code': 0})
uploaded.append({'doc_type': 'AFDO', 'party_code': 0})
uploaded.append({'doc_type': 'OFI', 'party_code': 0})
uploaded.append({'doc_type': 'EFSS', 'party_code': 1})
uploaded.append({'doc_type': 'EFSS', 'party_code': 2})
uploaded.append({'doc_type': 'AII', 'party_code': 0})
if derived['wants_other_orders'] and responses_dict.get('name_change_you') == 'YES':
if name_change_you:
uploaded.append({'doc_type': 'NCV', 'party_code': 1})
if derived['wants_other_orders'] and responses_dict.get('name_change_spouse') == 'YES':
if name_change_spouse:
uploaded.append({'doc_type': 'NCV', 'party_code': 2})
else:
return ([], [])
return [], []
return (uploaded, generated)
return uploaded, generated

+ 2
- 2
edivorce/apps/core/views/main.py View File

@ -188,8 +188,8 @@ def dashboard_nav(request, nav_step):
responses_dict['derived'] = get_derived_data(responses_dict)
if nav_step == 'initial_filing':
forms = forms_to_file(responses_dict, initial=True)
responses_dict['form_types'] = forms
uploaded, generated = forms_to_file(responses_dict, initial=True)
responses_dict['form_types'] = uploaded
if request.GET.get('cancelled'):
messages.add_message(request, messages.ERROR,
'You have cancelled the filing of your documents. '


Loading…
Cancel
Save