ogn-python/tests/collect/test_logbook.py

166 wiersze
7.1 KiB
Python
Czysty Zwykły widok Historia

import datetime
2016-07-02 18:20:04 +00:00
import unittest
from tests.base import TestBaseDB, db
2016-07-02 18:20:04 +00:00
from ogn_python.model import Logbook, Airport, Device, TakeoffLanding
from ogn_python.collect.logbook import update_entries
2016-07-02 18:20:04 +00:00
class TestLogbook(TestBaseDB):
2016-07-02 18:20:04 +00:00
def setUp(self):
2017-12-16 14:54:04 +00:00
# Create basic data and insert
self.dd0815 = Device(address='DD0815')
self.dd4711 = Device(address='DD4711')
self.koenigsdorf = Airport(name='Koenigsdorf')
self.ohlstadt = Airport(name='Ohlstadt')
db.session.add(self.dd0815)
db.session.add(self.dd4711)
db.session.add(self.koenigsdorf)
db.session.add(self.ohlstadt)
2017-12-16 14:54:04 +00:00
db.session.commit()
2017-12-16 14:54:04 +00:00
# Prepare takeoff and landings
self.takeoff_koenigsdorf_dd0815 = TakeoffLanding(is_takeoff=True, timestamp='2016-06-01 10:00:00', airport_id=self.koenigsdorf.id, device_id=self.dd0815.id)
self.landing_koenigsdorf_dd0815 = TakeoffLanding(is_takeoff=False, timestamp='2016-06-01 10:05:00', airport_id=self.koenigsdorf.id, device_id=self.dd0815.id)
self.landing_koenigsdorf_dd0815_later = TakeoffLanding(is_takeoff=False, timestamp='2016-06-02 10:05:00', airport_id=self.koenigsdorf.id, device_id=self.dd0815.id)
self.takeoff_ohlstadt_dd4711 = TakeoffLanding(is_takeoff=True, timestamp='2016-06-01 10:00:00', airport_id=self.ohlstadt.id, device_id=self.dd4711.id)
2016-07-02 18:20:04 +00:00
2017-12-16 14:54:04 +00:00
def get_logbook_entries(self):
return db.session.query(Logbook).order_by(Logbook.takeoff_airport_id, Logbook.reftime).all()
2017-12-12 08:59:38 +00:00
2016-07-02 18:20:04 +00:00
def test_single_takeoff(self):
db.session.add(self.takeoff_koenigsdorf_dd0815)
db.session.commit()
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].landing_airport_id, None)
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2)
2016-07-06 17:34:55 +00:00
2016-07-02 18:20:04 +00:00
def test_single_landing(self):
db.session.add(self.landing_koenigsdorf_dd0815)
db.session.commit()
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, None)
self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id)
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2)
2016-07-06 17:34:55 +00:00
2016-07-02 18:20:04 +00:00
def test_different_takeoffs(self):
db.session.add(self.takeoff_koenigsdorf_dd0815)
db.session.add(self.takeoff_ohlstadt_dd4711)
db.session.commit()
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries = self.get_logbook_entries()
self.assertEqual(len(entries), 2)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[1].takeoff_airport_id, self.ohlstadt.id)
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2)
2016-07-06 17:34:55 +00:00
2016-07-02 18:20:04 +00:00
def test_takeoff_and_landing(self):
db.session.add(self.takeoff_koenigsdorf_dd0815)
db.session.add(self.landing_koenigsdorf_dd0815)
db.session.commit()
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id)
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2)
2016-07-06 17:34:55 +00:00
2016-07-02 18:20:04 +00:00
def test_takeoff_and_landing_on_different_days(self):
db.session.add(self.takeoff_koenigsdorf_dd0815)
db.session.add(self.landing_koenigsdorf_dd0815_later)
db.session.commit()
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
update_entries(session=db.session, date=datetime.date(2016, 6, 2))
2017-12-16 14:54:04 +00:00
entries = self.get_logbook_entries()
self.assertEqual(len(entries), 2)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].reftime, self.takeoff_koenigsdorf_dd0815.timestamp)
self.assertEqual(entries[1].landing_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[1].reftime, self.landing_koenigsdorf_dd0815_later.timestamp)
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2)
2016-07-06 17:34:55 +00:00
2016-07-02 18:20:04 +00:00
def test_update(self):
db.session.add(self.takeoff_koenigsdorf_dd0815)
db.session.commit()
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
2016-07-04 20:54:37 +00:00
db.session.add(self.landing_koenigsdorf_dd0815)
db.session.commit()
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id)
2016-07-04 20:54:37 +00:00
db.session.add(self.takeoff_ohlstadt_dd4711)
db.session.commit()
2016-07-04 20:54:37 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries = self.get_logbook_entries()
self.assertEqual(len(entries), 2)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[1].takeoff_airport_id, self.ohlstadt.id)
2016-07-06 17:34:55 +00:00
2016-07-02 18:20:04 +00:00
def test_update_wrong_order(self):
db.session.add(self.landing_koenigsdorf_dd0815)
db.session.commit()
2016-07-04 20:54:37 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, None)
self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].reftime, self.landing_koenigsdorf_dd0815.timestamp)
2016-07-04 20:54:37 +00:00
db.session.add(self.takeoff_koenigsdorf_dd0815)
db.session.commit()
2016-07-02 18:20:04 +00:00
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].reftime, self.takeoff_koenigsdorf_dd0815.timestamp)
update_entries(session=db.session, date=datetime.date(2016, 6, 1))
2017-12-16 14:54:04 +00:00
entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2)
2016-07-02 18:20:04 +00:00
2016-07-02 18:20:04 +00:00
if __name__ == '__main__':
unittest.main()