Initial checkin
This commit is contained in:
207
test/test_shift.py
Normal file
207
test/test_shift.py
Normal file
@@ -0,0 +1,207 @@
|
||||
from flask import json
|
||||
from app.extensions import db
|
||||
from app.models.shift import Shift
|
||||
from app.models.battery_change import BatteryChange
|
||||
from test import client
|
||||
from test.utils import create_vehicles
|
||||
|
||||
def test_list_shifts_empty_db_empty_list(client):
|
||||
rv = client.get('/shifts')
|
||||
assert len(json.loads(rv.data)) == 0
|
||||
|
||||
def test_list_shifts_single_record(client):
|
||||
db.session.add(Shift())
|
||||
rv = client.get('/shifts')
|
||||
assert len(json.loads(rv.data)) == 1
|
||||
|
||||
def test_get_shift(client):
|
||||
db.session.add(Shift())
|
||||
db.session.add(Shift())
|
||||
db.session.commit()
|
||||
rv = client.get('/shifts')
|
||||
assert len(json.loads(rv.data)) == 2
|
||||
rv = client.get('/shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 1
|
||||
|
||||
rv = client.get('/shifts/2')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 2
|
||||
|
||||
def test_create_empty_shift(client):
|
||||
client.post('/shifts')
|
||||
rv = client.get('/shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 1
|
||||
assert data['battery_changes'] == []
|
||||
|
||||
def test_create_shift_with_vehicles(client):
|
||||
create_vehicles()
|
||||
rv = client.get('/vehicles')
|
||||
assert len(json.loads(rv.data)) == 15
|
||||
|
||||
client.post('/shifts', data={
|
||||
'vehicles': '1,5,10'
|
||||
})
|
||||
rv = client.get('/shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 1
|
||||
assert len(data['battery_changes']) == 3
|
||||
assert data['battery_changes'][0]['vehicle_id'] == 1
|
||||
assert data['battery_changes'][1]['vehicle_id'] == 5
|
||||
assert data['battery_changes'][2]['vehicle_id'] == 10
|
||||
assert data['battery_changes'][0]['completed'] == False
|
||||
assert data['battery_changes'][0]['shift_id'] == 1
|
||||
|
||||
# Get vehicle data directly in shift
|
||||
assert data['battery_changes'][0]['vehicle']['license_plate'] == 'NY0001'
|
||||
assert data['battery_changes'][1]['vehicle']['location_long'] == -73.988838
|
||||
assert data['battery_changes'][2]['vehicle']['battery_level'] == 22
|
||||
|
||||
def add_vehicle_to_shift(client):
|
||||
create_vehicles()
|
||||
client.post('/shifts')
|
||||
rv = client.get('/shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 1
|
||||
assert data['battery_changes'] == []
|
||||
|
||||
rv = client.post('shifts/1/add/2')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 1
|
||||
assert len(data['battery_changes']) == 1
|
||||
assert data['battery_changes'][0]['vehicle_id'] == 2
|
||||
|
||||
rv = client.post('shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 1
|
||||
assert len(data['battery_changes']) == 1
|
||||
assert data['battery_changes'][0]['vehicle_id'] == 2
|
||||
|
||||
# Shouldnt be able to add same vehicle to shift
|
||||
rv = client.post('shifts/1/vehicles/2')
|
||||
rv = client.post('shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 1
|
||||
assert len(data['battery_changes']) == 1
|
||||
assert data['battery_changes'][0]['vehicle_id'] == 2
|
||||
|
||||
def test_remove_vehicle_from_shift(client):
|
||||
create_vehicles()
|
||||
rv = client.get('/vehicles')
|
||||
assert len(json.loads(rv.data)) == 15
|
||||
|
||||
client.post('/shifts', data={
|
||||
'vehicles': '1,5,10'
|
||||
})
|
||||
|
||||
rv = client.delete('shifts/1/vehicles/5')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 1
|
||||
assert len(data['battery_changes']) == 2
|
||||
assert data['battery_changes'][0]['vehicle_id'] == 1
|
||||
assert data['battery_changes'][1]['vehicle_id'] == 10
|
||||
|
||||
rv = client.get('/vehicles/10')
|
||||
data = json.loads(rv.data)
|
||||
assert len(data['shifts']) == 1
|
||||
assert data['shifts'][0]['id'] == 1
|
||||
|
||||
# negative testing
|
||||
rv = client.delete('shifts/1/vehicles/9')
|
||||
assert rv.status_code == 404
|
||||
rv = client.delete('shifts/1/vehicles/5')
|
||||
assert rv.status_code == 404
|
||||
|
||||
def test_delete_shift(client):
|
||||
create_vehicles()
|
||||
rv = client.get('/vehicles')
|
||||
assert len(json.loads(rv.data)) == 15
|
||||
|
||||
client.post('/shifts', data={
|
||||
'vehicles': '1,5,10'
|
||||
})
|
||||
|
||||
rv = client.get('/shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 1
|
||||
assert len(data['battery_changes']) == 3
|
||||
|
||||
client.delete('/shifts/1')
|
||||
|
||||
rv = client.get('/shifts')
|
||||
assert len(json.loads(rv.data)) == 0
|
||||
|
||||
changes = BatteryChange.query.all()
|
||||
assert len(changes) == 0
|
||||
|
||||
# negative testing
|
||||
rv = client.delete('/shifts/5')
|
||||
assert rv.status_code == 404
|
||||
|
||||
def test_complete_vehicle_charge(client):
|
||||
create_vehicles()
|
||||
|
||||
client.post('/shifts', data={
|
||||
'vehicles': '1,5,10'
|
||||
})
|
||||
rv = client.get('/shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['id'] == 1
|
||||
assert len(data['battery_changes']) == 3
|
||||
assert data['battery_changes'][0]['completed'] == False
|
||||
assert data['battery_changes'][1]['completed'] == False
|
||||
assert data['battery_changes'][2]['completed'] == False
|
||||
|
||||
rv = client.post('/shifts/1/vehicles/5/completed')
|
||||
data = json.loads(rv.data)
|
||||
assert data['battery_changes'][0]['completed'] == False
|
||||
assert data['battery_changes'][1]['completed'] == True
|
||||
assert data['battery_changes'][2]['completed'] == False
|
||||
|
||||
# Negative testing
|
||||
rv = client.post('/shifts/2/vehicles/5/completed') # shift not found
|
||||
assert rv.status_code == 404
|
||||
rv = client.post('/shifts/1/vehicles/6/completed') # vehicle not found
|
||||
assert rv.status_code == 404
|
||||
|
||||
def test_get_vehicle_in_shift(client):
|
||||
create_vehicles()
|
||||
|
||||
client.post('/shifts', data={
|
||||
'vehicles': '1,5,10'
|
||||
})
|
||||
|
||||
rv = client.get('/shifts/1/vehicles/10')
|
||||
data = json.loads(rv.data)
|
||||
assert data['vehicle']['license_plate'] == 'NY0010'
|
||||
assert data['completed'] == False
|
||||
|
||||
rv = client.get('shifts/1/vehicles/11')
|
||||
assert rv.status_code == 404
|
||||
|
||||
def test_shift_all_completed(client):
|
||||
create_vehicles()
|
||||
|
||||
client.post('/shifts', data={
|
||||
'vehicles': '1,5,10'
|
||||
})
|
||||
|
||||
rv = client.get('/shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['all_completed'] == False
|
||||
|
||||
client.post('/shifts/1/vehicles/1/completed')
|
||||
rv = client.get('/shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['all_completed'] == False
|
||||
|
||||
client.post('/shifts/1/vehicles/5/completed')
|
||||
rv = client.get('/shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['all_completed'] == False
|
||||
|
||||
client.post('/shifts/1/vehicles/10/completed')
|
||||
rv = client.get('/shifts/1')
|
||||
data = json.loads(rv.data)
|
||||
assert data['all_completed'] == True
|
||||
Reference in New Issue
Block a user