def test_travel_entry_vm_validate_end_before_start_success(app_w_db, form_data): # WITH: valid form data from datetime import datetime, timedelta # WHEN: DB calls are mocked and the exit date of is changed to # before the start date and the last day's plan is set to equal # the invalid exit date (to avoid a different error), and then # the vm is generated and validated. get_location_names, get_users, get_color_names, get_car_names = \ _with_locaiton_names_users_color_names_car_names() 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 with get_location_names, get_users, get_color_names, get_car_names: with app_w_db.test_request_context(path='/travel/entry', data=form_data): vm = TravelEntryViewModel() vm.validate() # THEN: the error message relays as such assert vm.error == "Your exit date can't be before your entry date."
def test_travel_entry_vm_convert_empty_strings_to_none(app_w_db, form_data_w_nones): get_location_names, get_users, get_color_names, get_car_names = _with_locaiton_names_users_color_names_car_names() # WHEN: the DB calls are mocked and then the vm is generated. with get_location_names, get_users, get_color_names, get_car_names: with app_w_db.test_request_context(path='/travel/entry', data=form_data_w_nones): vm = TravelEntryViewModel() assert vm.plb == '' vm.convert_empty_strings_to_none() assert vm.plb == None
def test_travel_entry_vm_validate_only_only_off_trail_travel_selected_success(app_w_db, form_data): # WITH: get_location_names, get_users, get_color_names, get_car_names = _with_locaiton_names_users_color_names_car_names() form_data['offtrailtravel'] = 'yes' # WHEN: the DB calls are mocked and then the vm is generated. with get_location_names, get_users, get_color_names, get_car_names: with app_w_db.test_request_context(path='/travel/entry', data=form_data): vm = TravelEntryViewModel() vm.validate() assert 'Either you should' in vm.error
def test_travel_entry_vm_validate_end_last_day_mismatch_success(app_w_db, form_data): # WITH: valid form data from datetime import datetime, timedelta # WHEN: DB calls are mocked and the date of the last day of the # itinerary is set 5 days after the exit date and then the vm # is generated and validated. get_location_names, get_users, get_color_names, get_car_names = \ _with_locaiton_names_users_color_names_car_names() end_date = datetime.strptime(form_data['enddate'], '%Y-%m-%d') end_date = end_date + timedelta(days=5) end_date = datetime.strftime(end_date, '%Y-%m-%d') form_data['date2'] = end_date with get_location_names, get_users, get_color_names, get_car_names: with app_w_db.test_request_context(path='/travel/entry', data=form_data): vm = TravelEntryViewModel() vm.validate() # THEN: the error message dictates that there's a date mismatch. assert 'should end on your exit date.' in vm.error
def entry_post(): vm = TravelEntryViewModel() vm.validate() if vm.error: return vm.to_dict() vm.convert_empty_strings_to_none() travel_user_units = [ TravelUserUnit(**t) for t in vm.travelers if t['traveler_name'] ] day_plans = [TravelDay(**pd) for pd in vm.day_plans if pd['date']] emergency_contacts = [ User(u['contact_name'], u['contact_email'], u['contact_work'], u['contact_home'], u['contact_cell'], None, None) for u in vm.contacts ] base_name = file_util.generate_name(vm.trip_leader_name, vm.start_date) travel_files = [ TravelFile(f) for f in file_util.save_files_with_name( vm.uploaded_files, base_name, current_app.config['PDF_FOLDER_PATH']) ] travel_files.append(TravelFile(base_name + '.pdf')) travel_id = travel_services.create_plan( vm.start_date, vm.entry_point, vm.end_date, vm.exit_point, vm.tracked, vm.plb, vm.trip_leader_name, travel_user_units, day_plans, vm.car_plate, vm.car_make, vm.car_model, vm.car_color, vm.car_location, vm.bivy_gear, vm.compass, vm.first_aid_kit, vm.flagging, vm.flare, vm.flashlight, vm.gps, vm.head_lamp, vm.helmet, vm.ice_axe, vm.map, vm.matches, vm.probe_pole, vm.radio, vm.rope, vm.shovel, vm.signal_mirror, vm.space_blanket, vm.spare_battery, vm.tent, vm.whistle, vm.days_of_food, vm.weapon, vm.radio_monitor_time, vm.off_trail_travel, vm.cell_number, vm.satellite_number, emergency_contacts, vm.gar_avg, vm.mitigated_gar, vm.gar_mitigations, vm.notes, travel_files) travel = travel_services.get_travel_from_id(travel_id) pdf_util.make_and_save_pdf(travel, base_name, current_app.config['PDF_FOLDER_PATH']) email_util.email_travel(travel, [f.name for f in travel_files], current_app.config['PDF_FOLDER_PATH']) return redirect(url_for('travel.email_sent'))
def test_travel_entry_vm_entry_end_date_success(app_w_db, form_data): # WITH: valid form data get_location_names, get_users, get_color_names, get_car_names = _with_locaiton_names_users_color_names_car_names() # WHEN: the DB calls are mocked and then the vm is generated. with get_location_names, get_users, get_color_names, get_car_names: with app_w_db.test_request_context(path='/travel/entry', data=form_data): vm = TravelEntryViewModel() # THEN: all of the data in the form should be properly represented in the vm. assert vm.start_date == form_data['startdate'] assert vm.entry_point == form_data['entrypoint'] assert vm.end_date == form_data['enddate'] assert vm.exit_point == form_data['exitpoint'] # assert vm.tracked == form_data['tracked'] assert vm.tracked is True assert vm.plb == form_data['plb'] assert vm.trip_leader_name == form_data['travelername0'] assert vm.travelers[0]['traveler_name'] == form_data['travelername0'] assert vm.travelers[0]['pack_color'] == form_data['packcolor0'] assert vm.travelers[0]['tent_color'] == form_data['tentcolor0'] assert vm.travelers[0]['fly_color'] == form_data['flycolor0'] assert vm.travelers[0]['supervision'] == form_data['supervision0'] assert vm.travelers[0]['planning'] == form_data['planning0'] assert vm.travelers[0]['contingency'] == form_data['contingency0'] assert vm.travelers[0]['comms'] == form_data['comms0'] assert vm.travelers[0]['team_selection'] == form_data['teamselection0'] assert vm.travelers[0]['fitness'] == form_data['fitness0'] assert vm.travelers[0]['env'] == form_data['env0'] assert vm.travelers[0]['complexity'] == form_data['complexity0'] assert vm.travelers[0]['total'] == form_data['total0'] assert vm.travelers[1]['traveler_name'] == form_data['travelername1'] assert vm.travelers[1]['pack_color'] == form_data['packcolor1'] assert vm.travelers[1]['tent_color'] == form_data['tentcolor1'] assert vm.travelers[1]['fly_color'] == form_data['flycolor1'] assert vm.travelers[1]['supervision'] == form_data['supervision1'] assert vm.travelers[1]['planning'] == form_data['planning1'] assert vm.travelers[1]['contingency'] == form_data['contingency1'] assert vm.travelers[1]['comms'] == form_data['comms1'] assert vm.travelers[1]['team_selection'] == form_data['teamselection1'] assert vm.travelers[1]['fitness'] == form_data['fitness1'] assert vm.travelers[1]['env'] == form_data['env1'] assert vm.travelers[1]['complexity'] == form_data['complexity1'] assert vm.travelers[1]['total'] == form_data['total1'] assert vm.day_plans[0]['date'] == form_data['date0'] assert vm.day_plans[0]['starting_point'] == form_data['startingpoint0'] assert vm.day_plans[0]['ending_point'] == form_data['endingpoint0'] assert vm.day_plans[0]['route'] == form_data['route0'] assert vm.day_plans[0]['mode'] == form_data['mode0'] assert vm.day_plans[1]['date'] == form_data['date1'] assert vm.day_plans[1]['starting_point'] == form_data['startingpoint1'] assert vm.day_plans[1]['ending_point'] == form_data['endingpoint1'] assert vm.day_plans[1]['route'] == form_data['route1'] assert vm.day_plans[1]['mode'] == form_data['mode1'] assert vm.day_plans[2]['date'] == form_data['date2'] assert vm.day_plans[2]['starting_point'] == form_data['startingpoint2'] assert vm.day_plans[2]['ending_point'] == form_data['endingpoint2'] assert vm.day_plans[2]['route'] == form_data['route2'] assert vm.day_plans[2]['mode'] == form_data['mode2'] assert vm.car_plate == form_data['carplate'] assert vm.car_make == form_data['carmake'] assert vm.car_model == form_data['carmodel'] assert vm.car_color == form_data['carcolor'] assert vm.car_location == form_data['carlocation'] # assert vm.bivy_gear == 'on' assert vm.bivy_gear is True assert vm.compass is True assert vm.first_aid_kit is True assert vm.flagging is True assert vm.flare is True assert vm.flashlight assert vm.gps assert vm.head_lamp is True assert vm.helmet is True assert vm.ice_axe is True assert vm.map is True assert vm.matches is True assert vm.probe_pole is True assert vm.radio is True assert vm.rope is True assert vm.shovel is True assert vm.signal_mirror is True assert vm.space_blanket is True assert vm.spare_battery is True assert vm.tent is True assert vm.whistle is True assert vm.days_of_food == form_data['daysoffood'] assert vm.radio_monitor_time == form_data['radiomonitortime'] # assert vm.off_trail_travel == good_form_data['offtrailtravel'] assert vm.off_trail_travel is False # Need off trail travel map assert vm.cell_number == form_data['cellnumber'] assert vm.satellite_number == form_data['satellitenumber'] for i, c in enumerate(vm.contacts): assert c['contact_name'] == form_data['contactname' + str(i)] assert c['contact_email'] == form_data['contactemail' + str(i)] assert vm.gar_avg == form_data['garavg'] assert vm.mitigated_gar == form_data['mitigatedgar'] assert vm.gar_mitigations == form_data['garmitigations'] assert vm.notes == form_data['notes']
def add_traveler(): vm = TravelEntryViewModel() return vm.to_dict()
def entry_get(): vm = TravelEntryViewModel() return vm.to_dict()