def test_completion_logic(app, db_session, client):
    registrant = create_registrant(db_session)
    step = Step_0()
    session_manager = SessionManager(registrant, step)
    assert session_manager.vr_completed() == False
    assert session_manager.ab_completed() == False

    registrant.vr_completed_at = datetime.utcnow()
    registrant.update({'vr_form': 'foobar'})
    registrant.save(db_session)
    session_manager = SessionManager(registrant, step)
    assert session_manager.vr_completed() == True
    assert session_manager.ab_completed() == False

    registrant.update({'ab_forms': 'foobar'})
    registrant.save(db_session)
    session_manager = SessionManager(registrant, step)
    assert session_manager.vr_completed() == True
    assert session_manager.ab_completed() == False

    registrant.ab_completed_at = datetime.utcnow()
    registrant.save(db_session)
    session_manager = SessionManager(registrant, step)
    assert session_manager.vr_completed() == True
    assert session_manager.ab_completed() == True
def test_non_previous_step_non_complete_step(app, db_session, client):
    """
    A non complete step should return the current steps endpoint
    """
    registrant = create_registrant(db_session)
    step = Step_0()
    session_manager = SessionManager(registrant, step)
    assert session_manager.get_redirect_url() == step.endpoint
Ejemplo n.º 3
0
def test_step_0_is_complete_false(app, db_session, client):
    """
        Verify that this registrant is not ready to move on to the next step.

    """
    form_payload = {"name_first": "foo"}
    step = Step_0(form_payload)
    assert step.run() == False
    assert step.is_complete == False
    assert step.next_step == None
def test_no_previous_step_is_complete(app, db_session, client):
    """
    A complete step should return the next steps endpoint
    """
    registrant = create_registrant(db_session)
    step = Step_0()
    #mock step actions
    step.is_complete = True
    step.next_step = 'Step_VR_1'

    session_manager = SessionManager(registrant, step)
    assert session_manager.get_redirect_url() == '/vr/citizenship'
Ejemplo n.º 5
0
def test_step_0_is_complete_true_and_none_registered(app, db_session, client):
    form_payload = {
        "name_first": "foo",
        "name_last": "bar",
        "dob": "01/01/2000",
        "email": "*****@*****.**",
        "zip": "12345",
    }
    step = Step_0(form_payload)
    assert step.run() == True
    assert step.is_complete == True
    assert step.next_step == 'Step_1'
Ejemplo n.º 6
0
def test_step_0_is_complete_true_and_already_registered(
        app, db_session, client):
    """
        Verify that next step is AB 1
    """
    form_payload = {
        "name_first": "Kris",
        "name_last": "Kobach",
        "dob": "03/26/1966",
        "email": " [email protected]",
        "zip": "66044",
    }
    step = Step_0(form_payload)
    assert step.run() == True
    assert step.is_complete == True
    assert step.next_step == 'Step_1'
Ejemplo n.º 7
0
def index():
    registrant = g.registrant
    form = FormStep0()
    if http_session.get('ref'):
        form = FormStep0(ref=http_session.get('ref'))
    elif request.cookies.get('ref'):
        form = FormStep0(ref=request.cookies.get('ref'))
    if registrant:
        form = FormStep0(
            ref=http_session.get('ref'),
            name_first=registrant.try_value('name_first'),
            name_last=registrant.try_value('name_last'),
            dob=registrant.try_value('dob'),
            zip=registrant.try_value('zip'),
            email=registrant.try_value('email'),
            phone=registrant.try_value('phone')
        )

    if request.method == "POST" and form.validate_on_submit():
        step = Step_0(form.data)
        if registrant:
            registrant.update(form.data)
        else:
            sid = UUID(http_session.get('session_id'), version=4)
            zipcode = form.data.get('zip')
            registrant = Registrant(
                county=ZIPCode.guess_county(zipcode),
                ref=form.data.get('ref'),
                registration_value=form.data,
                session_id=sid,
                lang=g.lang_code,
            )
            registrant.set_value('zip', zipcode)
            db.session.add(registrant)

        skip_sos = request.values.get('skip-sos')
        step.run(skip_sos)
        registrant.reg_lookup_complete = step.reg_lookup_complete
        registrant.dob_year = registrant.get_dob_year()
        sos_reg = None
        sos_failure = None
        if step.reg_found:
            sos_reg = []
            for rec in step.reg_found:
                rec2save = {'tree': rec['tree']}
                if 'sample_ballots' in rec:
                    rec2save['sample_ballot'] = rec['sample_ballots']
                if 'districts' in rec:
                    rec2save['districts'] = rec['districts']
                if 'elections' in rec:
                    rec2save['elections'] = rec['elections']

                # prepopulate address and party, if possible
                try:
                    registrant.populate_address(rec2save['tree'])
                except:
                    # just swallow errors for now
                    err = sys.exc_info()[0]
                    current_app.logger.error(str(err))

                sos_reg.append(rec2save)
        else:
            sos_failure = step.voter_view_fail

        registrant.update({'sos_reg': sos_reg, 'skip_sos': skip_sos, 'sos_failure': sos_failure})
        registrant.save(db.session)

        # small optimization for common case.
        if skip_sos and not current_app.config['ENABLE_AB']:
            return redirect(url_for('main.vr1_citizenship'))

        session_manager = SessionManager(registrant, step)
        return redirect(session_manager.get_redirect_url())

    else:
        has_announcements = False
        if lazy_gettext('announce') != "announce":
            has_announcements = True
        return render_template('index.html', form=form, has_announcements=has_announcements)