Ejemplo n.º 1
0
 def test_get_email_from_first_form(self):
     # no fit quiz but the user entered the email before messing up
     view = InquiryApplyWizard()
     email = '*****@*****.**'
     # yapf: disable
     self.assertEqual(
         view._get_email({'email': email, 'password1': 'testpassword1'}, 'first'),
         email
     )
Ejemplo n.º 2
0
 def test_send_wizard_step_segment_event(self):
     view = InquiryApplyWizard()
     step_data = {
         'first': (InquiryFirstForm, FIRST_FORM_EXAMPLE_DATA),
         'home': (InquiryHomeForm, HOME_FORM_EXAMPLE_DATA),
     }
     email = FIRST_FORM_EXAMPLE_DATA['email']
     for step, (form_class, form_data) in step_data.items():
         form = form_class(data=form_data)
         self.assertTrue(form.is_valid())
         view._send_wizard_step_segment_event(step, form, email,
                                              'submitted')
Ejemplo n.º 3
0
    def test_get_email_from_fit_quiz(self):
        # user filled a fit quiz
        view = InquiryApplyWizard()
        view.initial_dict = {}

        # add the fit quiz email cookie to the session
        email = '*****@*****.**'
        request = self._get_request()
        request.session['fit_email'] = email
        request.session.save()
        view.request = request
        self.assertEqual(view._get_email({}, 'first'), email)
Ejemplo n.º 4
0
 def test_vet_based_on_form(self):
     view = InquiryApplyWizard()
     view.request = self._get_request()
     mocked_form = mock.Mock()
     with mock.patch.object(mocked_form, 'cleaned_data', {
             'state': 'MA',
             'zip_code': '02138'
     }):
         (outcome_slug, url_name, vetted_message) = view._vet_based_on_form(
             'first', mocked_form
         )  # yapf: disable
     self.assertIsNone(outcome_slug)
     self.assertEqual(url_name, '')
     self.assertEqual(vetted_message, '')
Ejemplo n.º 5
0
 def test_get_email_from_first_form_not_fit_quiz(self):
     # user filled a fit quiz but changed the email in the first step
     view = InquiryApplyWizard()
     request = self._get_request()
     fit_quiz_email = '*****@*****.**'
     request.session['fit_email'] = fit_quiz_email
     request.session.save()
     view.request = request
     first_email = '*****@*****.**'
     # yapf: disable
     self.assertEqual(
         view._get_email({'email': first_email, 'password1': 'testpassword1'}, 'first'),
         first_email
     )
Ejemplo n.º 6
0
    def test_fill_form_initial(self):
        session = {
            'not_fit_test': 'not_fit_test',
            FIT_QUIZ_SESSION_DATA_PREFIX + 'test': 'fit_test',
        }
        initial = {}
        InquiryApplyWizard.fill_form_initial(session, initial)
        self.assertEqual(initial, {'test': 'fit_test'})

        initial = {'something': 'something'}
        InquiryApplyWizard.fill_form_initial(session, initial)
        self.assertEqual(initial, {
            'test': 'fit_test',
            'something': 'something',
        })
Ejemplo n.º 7
0
 def test_vet_based_on_form_not_first_step(self):
     """ tests that only the first step vets based on state """
     view = InquiryApplyWizard()
     view.request = self._get_request()
     mocked_form = mock.Mock()
     for form in ['home', 'homeowner', 'signup']:
         with mock.patch.object(mocked_form, 'cleaned_data', {
                 'state': 'MT',
                 'zip_code': '01234'
         }):
             (outcome_slug, url_name,
              vetted_message) = view._vet_based_on_form(form, mocked_form)
         self.assertIsNone(outcome_slug)
         self.assertEqual(url_name, '')
         self.assertEqual(vetted_message, '')
Ejemplo n.º 8
0
 def test_vet_based_on_form_expansion_state(self):
     view = InquiryApplyWizard()
     view.request = self._get_request()
     mocked_form = mock.Mock()
     for state in EXPANSION_STATES:
         with mock.patch.object(mocked_form, 'cleaned_data', {
                 'state': state,
                 'zip_code': '01234'
         }):
             (outcome_slug, url_name,
              vetted_message) = view._vet_based_on_form(
                  'first', mocked_form)
         self.assertEqual(outcome_slug,
                          INQUIRY_OUTCOME_SLUG_MAP['2_expansion_states'])
         self.assertEqual(url_name, 'inquiry:outcome')
         self.assertEqual(vetted_message, 'rejected expansion states')
Ejemplo n.º 9
0
 def test_get_wizard_step_event_data_first(self):
     exported_fields = [
         'street',
         'unit',
         'city',
         'state',
         'zip_code',
         'use_case_debts',
         'use_case_education',
         'use_case_diversify',
         'use_case_buy_home',
         'use_case_renovate',
         'use_case_other',
         'use_case_business',
         'use_case_emergency',
         'use_case_retirement',
         'email',
     ]
     data = InquiryApplyWizard._get_wizard_step_event_data(
         {'street': 'One First Street'}, exported_fields, 'first',
         'submitted')
     self.assertEqual(
         data, {
             'street': 'One First Street',
             'tracking_status': 'first screen submitted'
         })
Ejemplo n.º 10
0
 def test_vet_based_on_form_calls_get_state_zip_code_outcome_key(
         self, mocked_get_state_zip_code_outcome_key):
     view = InquiryApplyWizard()
     view.request = self._get_request()
     mocked_get_state_zip_code_outcome_key.return_value = (None, '')
     mocked_form = mock.Mock()
     with mock.patch.object(mocked_form, 'cleaned_data', {
             'state': 'MA',
             'zip_code': '02138'
     }):
         (outcome_slug, url_name, vetted_message) = view._vet_based_on_form(
             'first', mocked_form
         )  # yapf: disable
         cleaned_data = mocked_form.cleaned_data
         mocked_get_state_zip_code_outcome_key.assert_called_once_with(
             cleaned_data['state'], cleaned_data['zip_code'])
Ejemplo n.º 11
0
 def test_vet_based_on_form_undesirable_zip_code(self):
     view = InquiryApplyWizard()
     view.request = self._get_request()
     mocked_form = mock.Mock()
     for undesirable_zip_code in UNDESIRABLE_ZIP_CODES:
         with mock.patch.object(mocked_form, 'cleaned_data', {
                 'state': 'MA',
                 'zip_code': undesirable_zip_code
         }):
             (outcome_slug, url_name,
              vetted_message) = view._vet_based_on_form(
                  'first', mocked_form)
         self.assertEqual(
             outcome_slug,
             INQUIRY_OUTCOME_SLUG_MAP['3_undesirable_zip_code'])
         self.assertEqual(url_name, 'inquiry:outcome')
         self.assertEqual(vetted_message, 'rejected undesirable zip code')
Ejemplo n.º 12
0
 def test_get_wizard_step_event_data_home(self):
     exported_fields = [
         'property_type', 'primary_residence', 'rent_type',
         'ten_year_duration_prediction', 'home_value', 'household_debt'
     ]
     data = InquiryApplyWizard._get_wizard_step_event_data({'fake': 'fake'},
                                                           exported_fields,
                                                           'home',
                                                           'submitted')
     self.assertEqual(data, {'tracking_status': 'home screen submitted'})
Ejemplo n.º 13
0
    def test_send_wizard_step_segment_event_first(
            self, mocked_segment_event, mocked_get_wizard_step_event_data):
        view = InquiryApplyWizard()
        form = InquiryFirstForm(data=FIRST_FORM_EXAMPLE_DATA)
        self.assertTrue(form.is_valid())

        data = dict(FIRST_FORM_EXAMPLE_DATA,
                    **{'tracking_status': 'first screen submitted'})
        mocked_get_wizard_step_event_data.return_value = data
        view._send_wizard_step_segment_event(
            'first', form, form.cleaned_data['email'], 'submitted'
        )  # yapf: disable

        exported_fields = [
            'street',
            'unit',
            'city',
            'state',
            'zip_code',
            'use_case_debts',
            'use_case_education',
            'use_case_diversify',
            'use_case_buy_home',
            'use_case_renovate',
            'use_case_other',
            'use_case_business',
            'use_case_emergency',
            'use_case_retirement',
            'email',
        ]
        cleaned_data = form.cleaned_data
        mocked_get_wizard_step_event_data.assert_called_once_with(
            cleaned_data, exported_fields, 'first', 'submitted')
        mocked_segment_event.assert_called_once_with(
            cleaned_data['email'],
            'investment inquiry - first screen submitted', data)
Ejemplo n.º 14
0
 def test_get_wizard_step_event_data_signup(self):
     """ should not include the passwords """
     cleaned_data = {
         'phone_number': '617-399-0604',
         'password1': 'testpassword1',
         'password2': 'testpassword1',
         'sms_opt_in': 'on',
         'agree_to_terms': 'on',
     }
     exported_fields = ['phone_number', 'sms_opt_in', 'agree_to_terms']
     data = InquiryApplyWizard._get_wizard_step_event_data(
         cleaned_data, exported_fields, 'signup', 'submitted')
     cleaned_data.pop('password1')
     cleaned_data.pop('password2')
     cleaned_data.update({'tracking_status': 'signup screen submitted'})
     self.assertDictEqual(data, cleaned_data)
Ejemplo n.º 15
0
from django.urls import path
from django.views.generic import RedirectView

from inquiry.views import InquiryApplyWizard, InquirySubmitted, InquiryOutcomeView

app_name = 'inquiry'

inquiry_wizard = InquiryApplyWizard.as_view(InquiryApplyWizard.form_list,
                                            url_name='inquiry:inquiry_step')

urlpatterns = [
    path('data/<step>/', inquiry_wizard, name='inquiry_step'),
    path('data/', inquiry_wizard, name='apply'),
    path('apply/', RedirectView.as_view(url='/inquiry/', permanent=True)),
    path('results/<slug:slug>/', InquiryOutcomeView.as_view(), name='outcome'),
    path('submitted/', InquirySubmitted.as_view(), name='submitted'),
    path('', RedirectView.as_view(url='/inquiry/data/', permanent=True)),
]
Ejemplo n.º 16
0
 def test_fill_form_initial_empty(self):
     session = {}
     initial = {}
     InquiryApplyWizard.fill_form_initial(session, initial)
     self.assertEqual(initial, {})
Ejemplo n.º 17
0
 def test_get_wizard_step_event_data_empty(self):
     data = InquiryApplyWizard._get_wizard_step_event_data({}, [], 'first',
                                                           'submitted')
     self.assertEqual(data, {'tracking_status': 'first screen submitted'})
Ejemplo n.º 18
0
 def test_get_email_no_client_session_or_form(self):
     # no fit quiz and the user messed up on the first step
     view = InquiryApplyWizard()
     view.initial_dict = {}
     view.request = self._get_request()
     self.assertEqual(view._get_email({}, 'first'), '')