Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
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()
Пример #4
0
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()
Пример #5
0
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()
Пример #6
0
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()
Пример #7
0
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"