def test_get_route_by_id(client): #Create a route coordinates1 = [{ "longitude": 2.2, "latitude": 3.5, "datetime": 34676 }, { "longitude": 6.8, "latitude": 7.4, "datetime": 47580 }] time1 = datetime.now() Ruta.create(user=USER_ID1, message=MESSAGE_ID1, date=time1, trajectory=coordinates1) ruta = { "distance_total": 46, "time": 6, "date": time1, "speed_km": 47, "speed_average": 44 } rv = client.get(f'/api/v1/{USER_ID1}/route/{MESSAGE_ID1}') assert sorted(ruta.items()) == sorted(rv.data.items()) #TO-DO: checkout that the values are correct #Undo changes in the database Ruta.delete().where(Ruta.message == MESSAGE_ID1).execute()
def test_get_route_by_id(client): #Create a route coordinates1=[{"longitude":2.2,"latitude":3.5,"datetime": 34676},{"longitude":6.8,"latitude":7.4,"datetime": 47580}] time1 = datetime.now().strftime("%a, %d %b %Y %H:%M:%S GMT") distance, time = 46, 6 Ruta.create( user= USER_ID1, message = MESSAGE_ID1, date = time1, trajectory = coordinates1, distance = distance, time = time ) ruta={"distance_total":distance,"time":time,"date": time1} rv = json.loads(client.get(f'/api/v1/{USER_ID1}/route/{MESSAGE_ID1}').data) assert sorted(ruta.items()) == sorted(rv.items()) #TO-DO: checkout that the values are correct #Undo changes in the database Ruta.delete().where(Ruta.message == MESSAGE_ID1).execute()
def test_add_entry_when_already_exists(): # add route to the database store_location(USER_ID, MESSAGE_ID, {"longitude": 1.0, "latitude": 2.0, "datetime": 0}) store_location(USER_ID, MESSAGE_ID, {"longitude": 3.0, "latitude": 4.0, "datetime": 5}) route = Ruta.select().order_by(Ruta.id.desc()).get() assert len(route.trajectory) == 2 # undo changes Ruta.delete().where(Ruta.message == MESSAGE_ID).execute()
def test_add_entry_correct(): # add route to the database store_location(USER_ID, MESSAGE_ID, {"longitude": 1.0, "latitude": 2.0,"datetime": 0}) route = Ruta.select().order_by(Ruta.id.desc()).get() assert route.trajectory[0].get("longitude") == 1.0 assert route.trajectory[0].get("latitude") == 2.0 assert route.trajectory[0].get("datetime") == 0 assert route.user == USER_ID # undo changes Ruta.delete().where(Ruta.message == MESSAGE_ID).execute()
def test_get_routes(client): #Create some routes coordinates1 = [{ "longitude": 2.2, "latitude": 3.5, "datetime": 34676 }, { "longitude": 6.8, "latitude": 7.4, "datetime": 47580 }] coordinates2 = [{"longitude": 4.7, "latitude": 1.9, "datetime": 30000}] time1 = datetime.now() Ruta.create(user=USER_ID1, message=MESSAGE_ID1, date=time1, trajectory=coordinates1) time2 = datetime.now() Ruta.create(user=USER_ID1, message=MESSAGE_ID2, date=time2, trajectory=coordinates2) rutas = [{ "user": USER_ID1, "message": MESSAGE_ID1, "date": time1, "trajectory": coordinates1 }, { "user": USER_ID1, "message": MESSAGE_ID2, "date": time2, "trajectory": coordinates2 }] rv = client.get(f'/api/v1/{USER_ID1}/my-routes') assert sorted(rutas.items()) == sorted(rv.data.items()) #Undo changes in the database Ruta.delete().where(Ruta.message == MESSAGE_ID1).execute() Ruta.delete().where(Ruta.message == MESSAGE_ID2).execute()
def test_add_distance_and_time_when_adding_entry(): store_location(USER_ID, MESSAGE_ID, {"longitude": 1.0, "latitude": 2.0, "datetime": 0}) store_location(USER_ID, MESSAGE_ID, {"longitude": 3.0, "latitude": 4.0, "datetime": 5}) store_location(USER_ID, MESSAGE_ID, {"longitude": 7.0, "latitude": 9.0, "datetime": 10}) route = Ruta.select().order_by(Ruta.id.desc()).get() pos1 = (1.0, 2.0) pos2 = (3.0, 4.0) pos3 = (7.0, 9.0) assert isclose(route.distance, haversine(pos1,pos2)+haversine(pos2,pos3), abs_tol=0.1) assert route.time == 10 # undo changes Ruta.delete().where(Ruta.message == MESSAGE_ID).execute()
def get_route_by_id(user_id, route_id): """ Retrieve a route by it's id. Here we take user_id to ensure that not anyone can access the route_id. At least you need to know the user_id """ if request.method == 'GET': r = Ruta.get_or_none(message=route_id) if r != None: return jsonify({ "distance_total": r.distance, "time": r.time, "date": r.date, }) else: return jsonify({}) elif request.method == 'POST': ruta = Ruta.get_or_none(message=route_id) if (ruta != None) and (ruta.user == user_id): Ruta.delete().where(Ruta.message == route_id).execute() return "Deleted" return "Doesn't exist"