def test_that_prediction_can_be_updated_when_minute_already_exists(self): Minute.objects.create(datetime=self.datetime) create_tide_prediction(self.liverpool, self.datetime, 123.45) create_tide_prediction(self.liverpool, self.datetime, 45.67) assert_equal(45.67, TidePrediction.objects.get().tide_level)
def create_lots_of_tide_level_entries(cls): for minute in range(30 * 60): create_tide_prediction( cls.location, cls.base_time + datetime.timedelta(minutes=minute), 5.0 )
def create_unordered_tide_level_entries(cls): for minute in [0, 4, 2, 3, 1]: create_tide_prediction( cls.location, cls.base_time + datetime.timedelta(minutes=minute), 5.0 )
def create_60_entries(cls): for minute in range(60): create_tide_prediction( cls.location, cls.base_time + datetime.timedelta(minutes=minute), 5.0 )
def test_that_predictions_for_liverpool_dont_affect_southampton(self): create_tide_prediction(self.liverpool, BASE_TIME + datetime.timedelta(days=31), 10.0) with freeze_time(BASE_TIME): (ok, text) = check_tide_predictions(self.southampton) assert_equal(False, ok) assert_equal('< 30 days left', text)
def test_that_tide_predictions_further_than_one_month_is_ok(self): create_tide_prediction(self.liverpool, BASE_TIME + datetime.timedelta(days=31), 10.0) with freeze_time(BASE_TIME): (ok, text) = check_tide_predictions(self.liverpool) assert_equal(True, ok) assert_equal('OK', text)
def setUp(cls): base_time = datetime.datetime(2014, 6, 1, 10, 30, tzinfo=pytz.UTC) for minute, tide_level in [(0, 5.0), (1, 5.1), (2, 5.2)]: create_tide_prediction( cls.location, base_time + datetime.timedelta(minutes=minute), tide_level) create_surge_prediction(cls.location, base_time + datetime.timedelta(minutes=1), 0.15, 'met_office')
def setUp(cls): cls.liv = cls.create_location(slug='liverpool', name='Liverpool') cls.south = cls.create_location(slug='southampton', name='Southampton') cls.datetime = datetime.datetime( 2014, 8, 3, 13, 0, tzinfo=pytz.UTC) for location in (cls.liv, cls.south): for minute in range(10): dt = cls.datetime + datetime.timedelta(minutes=minute) create_tide_prediction(location, dt, 10.0)
def test_that_predictions_for_liverpool_dont_affect_southampton(self): create_tide_prediction( self.liverpool, BASE_TIME + datetime.timedelta(days=31), 10.0) with freeze_time(BASE_TIME): (ok, text) = check_tide_predictions(self.southampton) assert_equal(False, ok) assert_equal('< 30 days left', text)
def setUpClass(cls): super(TestSeaLevelsViewShowsObservations, cls).setUpClass() base_time = datetime.datetime(2014, 6, 1, 10, 30, tzinfo=pytz.UTC) for minute, tide_level in [(0, 5.0), (1, 5.1), (2, 5.2)]: create_tide_prediction( cls.location, base_time + datetime.timedelta(minutes=minute), tide_level) create_observation(cls.location, base_time + datetime.timedelta(minutes=1), 4.8, True)
def create_over_twenty_four_hours_of_tide(cls, location): cls.base_time = delta(hours=1) day = 86400 minutes = [-10, -9, -8, 0, 1, 2, 3, 4, day + 1, day + 2, day + 3] for minute in minutes: create_tide_prediction( location, cls.base_time + datetime.timedelta(minutes=minute), 5)
def test_that_tide_predictions_further_than_one_month_is_ok(self): create_tide_prediction( self.liverpool, BASE_TIME + datetime.timedelta(days=31), 10.0) with freeze_time(BASE_TIME): (ok, text) = check_tide_predictions(self.liverpool) assert_equal(True, ok) assert_equal('OK', text)
def create_over_twenty_four_hours_of_tide(cls): cls.base_time = datetime.datetime(2014, 6, 1, 10, 00, tzinfo=pytz.UTC) day = 86400 minutes = [-10, -9, -8, 0, 1, 2, 3, 4, day + 1, day + 2, day + 3] for minute in minutes: create_tide_prediction( cls.location, cls.base_time + datetime.timedelta(minutes=minute), 5)
def test_load_predictions_can_update_existing_prediction(self): dt = datetime.datetime(2014, 6, 1, 0, 0, tzinfo=pytz.UTC) create_tide_prediction(self.liverpool, dt, 8.0) # gets overwritten do_load_predictions(self.liverpool, self.csv_fobj) assert_equal( { 'minute__datetime': datetime.datetime(2014, 6, 1, 0, 0, tzinfo=pytz.UTC), 'location': 'liverpool', 'tide_level': 8.55, 'is_high_tide': False, }, self._serialize(TidePrediction.objects.get(minute__datetime=dt)))
def setUp(cls): base_time = datetime.datetime(2014, 6, 1, 10, 30, tzinfo=pytz.UTC) for minute, tide_level in [(0, 5.0), (1, 5.1), (2, 5.2)]: create_tide_prediction( cls.location, base_time + datetime.timedelta(minutes=minute), tide_level ) create_surge_prediction( cls.location, base_time + datetime.timedelta(minutes=1), 0.15)
def _setup_all_ok(self): create_tide_prediction( self.liverpool, BASE_TIME + datetime.timedelta(days=31), 5.0) _make_good_surge_predictions(self.liverpool) create_observation( self.liverpool, BASE_TIME - datetime.timedelta(minutes=10), 4.5, True) self.southampton.delete() # so that it doesn't come up as a failure
def create_predictions(cls, minutes_and_levels): for prediction_tuple in minutes_and_levels: if len(prediction_tuple) == 2: (minute, level) = prediction_tuple is_high_tide = False elif len(prediction_tuple) == 3: (minute, level, is_high_tide) = prediction_tuple create_tide_prediction( cls.LOCATION, cls.BASE_TIME + datetime.timedelta(minutes=minute), level, is_high_tide)
def setUpClass(cls): super(TestSeaLevelsViewShowsObservations, cls).setUpClass() base_time = datetime.datetime(2014, 6, 1, 10, 30, tzinfo=pytz.UTC) for minute, tide_level in [(0, 5.0), (1, 5.1), (2, 5.2)]: create_tide_prediction( cls.location, base_time + datetime.timedelta(minutes=minute), tide_level ) create_observation( cls.location, base_time + datetime.timedelta(minutes=1), 4.8, True)
def create_over_twenty_four_hours_of_tide(cls): cls.base_time = datetime.datetime(2014, 6, 1, 10, 00, tzinfo=pytz.UTC) day = 86400 minutes = [-10, -9, -8, 0, 1, 2, 3, 4, day + 1, day + 2, day + 3] for minute in minutes: create_tide_prediction( cls.location, cls.base_time + datetime.timedelta(minutes=minute), 5 )
def create_over_twenty_four_hours_of_tide(cls, location): cls.base_time = delta(hours=1) day = 86400 minutes = [-10, -9, -8, 0, 1, 2, 3, 4, day + 1, day + 2, day + 3] for minute in minutes: create_tide_prediction( location, cls.base_time + datetime.timedelta(minutes=minute), 5 )
def setUpClass(cls): cls.liverpool = cls.create_location(slug='liverpool', name='Liverpool') cls.southampton = cls.create_location(slug='southampton', name='Southampton') liv_time_window = TideWindow() liv_time_window.start_prediction, liv_time_window.end_prediction = ( create_tide_prediction(cls.liverpool, TIME_START, 1.0, False), create_tide_prediction(cls.liverpool, TIME_END, 1.0, False) ) liv_time_window.high_tide_predictions = [ create_tide_prediction(cls.liverpool, TIME_HW, 5.0, False) ] cls.liv_time_window = liv_time_window south_time_window = TideWindow() start_prediction, end_prediction = ( create_tide_prediction(cls.southampton, TIME_START, 1.0, False), create_tide_prediction(cls.southampton, TIME_HW, 5.0, False) ) south_time_window.start_prediction = start_prediction south_time_window.end_prediction = end_prediction south_time_window.high_tide_predictions = [ create_tide_prediction(cls.southampton, TIME_HW, 5.0, False) ] cls.south_time_window = south_time_window
def create_60_entries(cls): for minute in range(60): create_tide_prediction( cls.location, cls.base_time + datetime.timedelta(minutes=minute), 5.0)
def _make_bad_tide_location(self): create_tide_prediction(self.liverpool, BASE_TIME + datetime.timedelta(days=29), 10.0)
def test_that_prediction_can_be_created_when_minute_doesnt_exist(self): create_tide_prediction(self.liverpool, self.datetime, 123.45) assert_equal(123.45, TidePrediction.objects.get().tide_level)
def create_lots_of_tide_level_entries(cls): for minute in range(30 * 60): create_tide_prediction( cls.location, cls.base_time + datetime.timedelta(minutes=minute), 5.0)
def _make_bad_tide_location(self): create_tide_prediction( self.liverpool, BASE_TIME + datetime.timedelta(days=29), 10.0)
def _setup_tide_ok(self): create_tide_prediction(self.liverpool, BASE_TIME + datetime.timedelta(days=31), 5.0) self.southampton.delete() # so that it doesn't come up as a failure
def _setup_tide_ok(self): create_tide_prediction( self.liverpool, BASE_TIME + datetime.timedelta(days=31), 5.0) self.southampton.delete() # so that it doesn't come up as a failure
def create_unordered_tide_level_entries(cls): for minute in [0, 4, 2, 3, 1]: create_tide_prediction( cls.location, cls.base_time + datetime.timedelta(minutes=minute), 5.0)