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)
예제 #2
0
 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
         )
예제 #3
0
    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)
예제 #4
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
         )
예제 #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
         )
예제 #6
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)
예제 #7
0
    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)
예제 #8
0
    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')
예제 #9
0
    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)
예제 #11
0
    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)
예제 #12
0
    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)
예제 #14
0
    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)
예제 #15
0
 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)))
예제 #16
0
    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)
예제 #17
0
    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
예제 #18
0
    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
예제 #23
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)
예제 #24
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)
예제 #26
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)
예제 #27
0
 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)
예제 #29
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
예제 #31
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)