Example #1
0
def test_get_travel_from_id(app_w_db, form_data):
    from travel_plan.travel.travel_routes import entry_post

    target = 'travel_plan.infrastructure.file_util.save_files_with_name'
    saver = unittest.mock.patch(target, return_value=[])
    target = 'travel_plan.infrastructure.pdf_util.make_and_save_pdf'
    pdf_stuff = unittest.mock.patch(target, return_value=[])
    target = 'travel_plan.infrastructure.email_util.email_travel'
    emailer = unittest.mock.patch(target, return_value=[])
    target = 'travel_plan.services.color_services.get_id_from_name'
    test_color = unittest.mock.patch(target, return_value=3)
    with app_w_db.test_request_context(path='/travel/entry', data=form_data):
        with saver, pdf_stuff, emailer:
            resp: Response = entry_post()

    travel = travel_services.get_travel_from_id(1)

    assert travel.start_date == datetime.datetime.strptime(
        form_data['startdate'], '%Y-%m-%d').date()
    assert travel.entry_point.name == form_data['entrypoint']
    assert travel.end_date == datetime.datetime.strptime(
        form_data['enddate'], '%Y-%m-%d').date()
    assert travel.entry_point.name == form_data['exitpoint']
    assert travel.tracked
    assert travel.plb == form_data['plb']

    for i, t in enumerate(travel.travelers):
        assert t.traveler.name == form_data['travelername' + str(i)]
        assert t.call_sign == form_data['callsign' + str(i)]
        assert t.pack_color.name == form_data['packcolor' + str(i)]
        assert t.tent_color.name == form_data['tentcolor' +
                                              str(i)].lower().title()
        assert t.fly_color.name == form_data['flycolor' + str(i)]

    for i, d in enumerate(travel.travel_days):
        assert d.date == datetime.datetime.strptime(form_data['date' + str(i)],
                                                    '%Y-%m-%d').date()
        assert d.starting_point.name == form_data['startingpoint' + str(i)]
        assert d.ending_point.name == form_data['endingpoint' + str(i)]
        assert d.route == form_data['route' + str(i)]
        assert d.mode == form_data['mode' + str(i)]

    for i, c in enumerate(travel.contacts):
        assert c.name == form_data['contactname' + str(i)]
        assert c.email == form_data['contactemail' + str(i)]
        assert c.home_number == form_data['contacthome' + str(i)]
def test_travel_view_entry_post_fails_validation(app_w_db, form_data):
    from datetime import datetime, timedelta
    from unittest.mock import Mock

    from travel_plan.travel.travel_routes import entry_post

    start_date = datetime.strptime(form_data['startdate'], '%Y-%m-%d')
    start_date = start_date - timedelta(days=5)
    start_date = datetime.strftime(start_date, '%Y-%m-%d')
    form_data['enddate'] = start_date
    form_data['date2'] = start_date

    request = app_w_db.test_request_context(path='/travel/entry',
                                            data=form_data)
    target = 'travel_plan.travel.travel_services.create_plan'
    with unittest.mock.patch(target, retun_value=None) as plan:
        with request:
            resp: Response = entry_post()

    assert isinstance(resp, Response)
    plan.assert_not_called()
def test_travel_view_entry_post_success(app_w_db, form_data):
    from travel_plan.travel.travel_routes import entry_post
    from unittest.mock import Mock

    request = app_w_db.test_request_context(path='/travel/entry',
                                            data=form_data)
    target = 'travel_plan.infrastructure.file_util.generate_name'
    namer = unittest.mock.patch(target, return_value='name')
    target = 'travel_plan.infrastructure.file_util.save_files_with_name'
    saver = unittest.mock.patch(target, return_value=[])
    target = 'travel_plan.infrastructure.pdf_util.make_and_save_pdf'
    pdf_stuff = unittest.mock.patch(target, return_value=[])
    target = 'travel_plan.infrastructure.email_util.email_travel'
    emailer = unittest.mock.patch(target, return_value=[])
    target = 'travel_plan.travel.travel_services.get_travel_from_id'
    get_travel = unittest.mock.patch(target, return_value=None)
    target = 'travel_plan.travel.travel_services.create_plan'
    with unittest.mock.patch(target, return_value=1) as create_plan:
        with namer, saver, pdf_stuff, emailer, get_travel, request:
            resp: Response = entry_post()

    assert isinstance(resp, Response) or isinstance(resp, werkzeug_response)
    create_plan.assert_called()