def test_less_equal_than(self):
     self.assertTrue(
         DateTimeType("2019-06-12-16:30:16.770").less_equal_than(
             "2019-06-12-16:30:16.770"))
     self.assertFalse(
         DateTimeType("2018-06-15").less_equal_than("2009-07-13"))
     self.assertTrue(
         DateTimeType("2018-06-13").less_equal_than("2020-06-19"))
 def test_greater_equal_than(self):
     self.assertTrue(
         DateTimeType("2019-06-12-16:30:16.770").greater_equal_than(
             "2019-06-12-16:30:16.770"))
     self.assertTrue(
         DateTimeType("2018-06-15").greater_equal_than("2018-06-13"))
     self.assertFalse(
         DateTimeType("2018-06-13").greater_equal_than("2018-06-19"))
 def test_equal_to(self):
     self.assertTrue(
         DateTimeType("2018-06-12-16:30:16.770").equal_to(
             "2018-06-12-16:30:16.770"))
     self.assertFalse(
         DateTimeType("2018-06-12-16:30:16.770").equal_to("2018-06-12-16"))
     self.assertTrue(DateTimeType("2018-06-13").equal_to("2018-06-13"))
     self.assertFalse(DateTimeType("2018-06-13").equal_to("2018-07-13"))
    def test_datetime_equal_to(self):
        self.assertTrue(
            DateTimeType(self.TEST_DATETIME).equal_to(self.TEST_DATETIME))
        self.assertTrue(
            DateTimeType(self.TEST_DATETIME).equal_to(self.TEST_DATETIME_OBJ))

        self.assertTrue(DateTimeType(self.TEST_DATE).equal_to(self.TEST_DATE))
        self.assertTrue(
            DateTimeType(self.TEST_DATE).equal_to(self.TEST_DATE_OBJ))
 def test_datetime_before_than_or_equal_to(self):
     self.assertTrue(
         DateTimeType(self.TEST_DATE).before_than_or_equal_to(
             self.TEST_DATE))
     self.assertFalse(
         DateTimeType(self.TEST_DATETIME).before_than_or_equal_to(
             self.TEST_DATETIME_OBJ - timedelta(seconds=1)))
     self.assertTrue(
         DateTimeType(self.TEST_DATETIME).before_than_or_equal_to(
             self.TEST_DATETIME_OBJ + timedelta(seconds=1)))
 def test_datetime_after_than(self):
     self.assertTrue(
         DateTimeType(
             self.TEST_DATETIME).after_than(self.TEST_DATETIME_OBJ -
                                            timedelta(seconds=1)))
     self.assertFalse(
         DateTimeType(self.TEST_DATE).after_than(self.TEST_DATE))
     self.assertFalse(
         DateTimeType(
             self.TEST_DATETIME).after_than(self.TEST_DATETIME_OBJ +
                                            timedelta(seconds=1)))
    def test_datetime_type_validates_and_cast_datetime(self):
        result = DateTimeType(self.TEST_DATETIME)
        self.assertTrue(isinstance(result.value, int))

        result = DateTimeType(self.TEST_DATE)
        self.assertTrue(isinstance(result.value, int))

        result = DateTimeType(self.TEST_DATETIME_OBJ)
        self.assertTrue(isinstance(result.value, int))

        result = DateTimeType(self.TEST_DATE_OBJ)
        self.assertTrue(isinstance(result.value, int))
Exemple #8
0
    def setUp(self):
        super(DateTimeOperatorTests, self).setUp()
        self.TEST_YEAR = 2017
        self.TEST_MONTH = 1
        self.TEST_DAY = 16
        self.TEST_HOUR = 13
        self.TEST_MINUTE = 55
        self.TEST_SECOND = 25
        self.TEST_DATETIME = '{year}-0{month}-{day}T{hour}:{minute}:{second}'.format(
            year=self.TEST_YEAR, month=self.TEST_MONTH, day=self.TEST_DAY, hour=self.TEST_HOUR, minute=self.TEST_MINUTE,
            second=self.TEST_SECOND
        )
        self.TEST_DATE = '{year}-0{month}-{day}'.format(
            year=self.TEST_YEAR, month=self.TEST_MONTH, day=self.TEST_DAY
        )
        self.TEST_DATETIME_OBJ = datetime(self.TEST_YEAR, self.TEST_MONTH, self.TEST_DAY, self.TEST_HOUR,
                                          self.TEST_MINUTE, self.TEST_SECOND)
        self.TEST_DATE_OBJ = date(self.TEST_YEAR, self.TEST_MONTH, self.TEST_DAY)

        self.TEST_DATETIME_UTC_OBJ = datetime(self.TEST_YEAR, self.TEST_MONTH, self.TEST_DAY, self.TEST_HOUR,
                                              self.TEST_MINUTE, self.TEST_SECOND, tzinfo=pytz.UTC)

        self.datetime_type_date = DateTimeType(self.TEST_DATE)
        self.datetime_type_datetime = DateTimeType(self.TEST_DATETIME)
        self.datetime_type_datetime_obj = DateTimeType(self.TEST_DATETIME_OBJ)
        self.datetime_type_datetime_utc_obj = DateTimeType(self.TEST_DATETIME_UTC_OBJ)
 def test_other_value_not_datetime(self):
     error_string = "2016-10 is not a valid datetime type"
     with self.assertRaisesRegexp(AssertionError, error_string):
         DateTimeType(self.TEST_DATE).equal_to("2016-10")
 def test_instantiate(self):
     err_string = "foo is not a valid datetime type"
     with self.assertRaisesRegexp(AssertionError, err_string):
         DateTimeType("foo")
class DateTimeOperatorTests(TestCase):
    def setUp(self):
        super(DateTimeOperatorTests, self).setUp()
        self.TEST_YEAR = 2017
        self.TEST_MONTH = 1
        self.TEST_DAY = 16
        self.TEST_HOUR = 13
        self.TEST_MINUTE = 55
        self.TEST_SECOND = 25
        self.TEST_DATETIME = '{year}-0{month}-{day}T{hour}:{minute}:{second}'.format(
            year=self.TEST_YEAR,
            month=self.TEST_MONTH,
            day=self.TEST_DAY,
            hour=self.TEST_HOUR,
            minute=self.TEST_MINUTE,
            second=self.TEST_SECOND)
        self.TEST_DATE = '{year}-0{month}-{day}'.format(year=self.TEST_YEAR,
                                                        month=self.TEST_MONTH,
                                                        day=self.TEST_DAY)
        self.TEST_DATETIME_OBJ = datetime(self.TEST_YEAR, self.TEST_MONTH,
                                          self.TEST_DAY, self.TEST_HOUR,
                                          self.TEST_MINUTE, self.TEST_SECOND)
        self.TEST_DATE_OBJ = date(self.TEST_YEAR, self.TEST_MONTH,
                                  self.TEST_DAY)

        self.TEST_DATETIME_UTC_OBJ = datetime(self.TEST_YEAR,
                                              self.TEST_MONTH,
                                              self.TEST_DAY,
                                              self.TEST_HOUR,
                                              self.TEST_MINUTE,
                                              self.TEST_SECOND,
                                              tzinfo=pytz.UTC)

        self.datetime_type_date = DateTimeType(self.TEST_DATE)
        self.datetime_type_datetime = DateTimeType(self.TEST_DATETIME)
        self.datetime_type_datetime_obj = DateTimeType(self.TEST_DATETIME_OBJ)
        self.datetime_type_datetime_utc_obj = DateTimeType(
            self.TEST_DATETIME_UTC_OBJ)

    def test_instantiate(self):
        err_string = "foo is not a valid datetime type"
        with self.assertRaisesRegexp(AssertionError, err_string):
            DateTimeType("foo")

    def test_datetime_type_validates_and_cast_datetime(self):
        result = DateTimeType(self.TEST_DATETIME)
        self.assertTrue(isinstance(result.value, datetime))

        result = DateTimeType(self.TEST_DATE)
        self.assertTrue(isinstance(result.value, datetime))

        result = DateTimeType(self.TEST_DATETIME_OBJ)
        self.assertTrue(isinstance(result.value, datetime))

        result = DateTimeType(self.TEST_DATE_OBJ)
        self.assertTrue(isinstance(result.value, datetime))

    def test_datetime_equal_to(self):
        self.assertTrue(
            self.datetime_type_datetime.equal_to(self.TEST_DATETIME))
        self.assertTrue(
            self.datetime_type_datetime.equal_to(self.TEST_DATETIME_OBJ))
        self.assertTrue(
            self.datetime_type_datetime.equal_to(self.TEST_DATETIME_UTC_OBJ))

        self.assertTrue(
            self.datetime_type_datetime_obj.equal_to(self.TEST_DATETIME))
        self.assertTrue(
            self.datetime_type_datetime_obj.equal_to(self.TEST_DATETIME_OBJ))
        self.assertTrue(
            self.datetime_type_datetime_obj.equal_to(
                self.TEST_DATETIME_UTC_OBJ))

        self.assertTrue(
            self.datetime_type_datetime_utc_obj.equal_to(self.TEST_DATETIME))
        self.assertTrue(
            self.datetime_type_datetime_utc_obj.equal_to(
                self.TEST_DATETIME_OBJ))
        self.assertTrue(
            self.datetime_type_datetime_utc_obj.equal_to(
                self.TEST_DATETIME_UTC_OBJ))

        self.assertTrue(self.datetime_type_date.equal_to(self.TEST_DATE))
        self.assertTrue(self.datetime_type_date.equal_to(self.TEST_DATE_OBJ))

    def test_other_value_not_datetime(self):
        error_string = "2016-10 is not a valid datetime type"
        with self.assertRaisesRegexp(AssertionError, error_string):
            DateTimeType(self.TEST_DATE).equal_to("2016-10")

    def datetime_after_than_asserts(self, datetime_type):
        # type: (DateTimeType) -> None
        self.assertFalse(datetime_type.after_than(self.TEST_DATETIME))
        self.assertFalse(datetime_type.after_than(self.TEST_DATETIME_OBJ))
        self.assertFalse(datetime_type.after_than(self.TEST_DATETIME_UTC_OBJ))
        self.assertTrue(
            datetime_type.after_than(self.TEST_DATETIME_OBJ -
                                     timedelta(seconds=1)))
        self.assertTrue(
            datetime_type.after_than(self.TEST_DATETIME_UTC_OBJ -
                                     timedelta(seconds=1)))
        self.assertFalse(
            datetime_type.after_than(self.TEST_DATETIME_OBJ +
                                     timedelta(seconds=1)))
        self.assertFalse(
            datetime_type.after_than(self.TEST_DATETIME_UTC_OBJ +
                                     timedelta(seconds=1)))

    def test_datetime_after_than(self):
        self.datetime_after_than_asserts(self.datetime_type_datetime)
        self.datetime_after_than_asserts(self.datetime_type_datetime_obj)
        self.datetime_after_than_asserts(self.datetime_type_datetime_utc_obj)

        self.assertFalse(self.datetime_type_date.after_than(self.TEST_DATE))
        self.assertFalse(
            self.datetime_type_date.after_than(self.TEST_DATETIME_OBJ +
                                               timedelta(seconds=1)))
        self.assertFalse(
            self.datetime_type_date.after_than(self.TEST_DATETIME_UTC_OBJ +
                                               timedelta(seconds=1)))

    def datetime_after_than_or_equal_to_asserts(self, datetime_type):
        # type: (DateTimeType) -> None
        self.assertTrue(
            datetime_type.after_than_or_equal_to(self.TEST_DATETIME))
        self.assertTrue(
            datetime_type.after_than_or_equal_to(self.TEST_DATETIME_OBJ))
        self.assertTrue(
            datetime_type.after_than_or_equal_to(self.TEST_DATETIME_UTC_OBJ))
        self.assertTrue(
            datetime_type.after_than_or_equal_to(self.TEST_DATETIME_OBJ -
                                                 timedelta(seconds=1)))
        self.assertFalse(
            datetime_type.after_than_or_equal_to(self.TEST_DATETIME_OBJ +
                                                 timedelta(seconds=1)))
        self.assertTrue(
            datetime_type.after_than_or_equal_to(self.TEST_DATETIME_UTC_OBJ -
                                                 timedelta(seconds=1)))
        self.assertFalse(
            datetime_type.after_than_or_equal_to(self.TEST_DATETIME_UTC_OBJ +
                                                 timedelta(seconds=1)))

    def test_datetime_after_than_or_equal_to(self):
        self.assertTrue(
            self.datetime_type_date.after_than_or_equal_to(self.TEST_DATE))

        self.datetime_after_than_or_equal_to_asserts(
            self.datetime_type_datetime)
        self.datetime_after_than_or_equal_to_asserts(
            self.datetime_type_datetime_obj)
        self.datetime_after_than_or_equal_to_asserts(
            self.datetime_type_datetime_utc_obj)

    def datetime_before_than_asserts(self, datetime_type):
        # type: (DateTimeType) -> None
        self.assertFalse(datetime_type.before_than(self.TEST_DATETIME))
        self.assertFalse(datetime_type.before_than(self.TEST_DATETIME_OBJ))
        self.assertFalse(datetime_type.before_than(self.TEST_DATETIME_UTC_OBJ))
        self.assertFalse(
            datetime_type.before_than(self.TEST_DATETIME_OBJ -
                                      timedelta(seconds=1)))
        self.assertFalse(
            datetime_type.before_than(self.TEST_DATETIME_UTC_OBJ -
                                      timedelta(seconds=1)))
        self.assertTrue(
            datetime_type.before_than(self.TEST_DATETIME_OBJ +
                                      timedelta(seconds=1)))
        self.assertTrue(
            datetime_type.before_than(self.TEST_DATETIME_UTC_OBJ +
                                      timedelta(seconds=1)))

    def test_datetime_before_than(self):
        self.datetime_before_than_asserts(self.datetime_type_datetime)
        self.datetime_before_than_asserts(self.datetime_type_datetime_obj)
        self.datetime_before_than_asserts(self.datetime_type_datetime_utc_obj)

        self.assertFalse(self.datetime_type_date.before_than(self.TEST_DATE))
        self.assertTrue(
            self.datetime_type_date.before_than(self.TEST_DATETIME_OBJ +
                                                timedelta(seconds=1)))
        self.assertTrue(
            self.datetime_type_date.before_than(self.TEST_DATETIME_UTC_OBJ +
                                                timedelta(seconds=1)))

    def datetime_before_than_or_equal_to_asserts(self, datetime_type):
        # type: (DateTimeType) -> None
        self.assertTrue(
            datetime_type.before_than_or_equal_to(self.TEST_DATETIME))
        self.assertTrue(
            datetime_type.before_than_or_equal_to(self.TEST_DATETIME_OBJ))
        self.assertTrue(
            datetime_type.before_than_or_equal_to(self.TEST_DATETIME_UTC_OBJ))
        self.assertFalse(
            datetime_type.before_than_or_equal_to(self.TEST_DATETIME_OBJ -
                                                  timedelta(seconds=1)))
        self.assertFalse(
            datetime_type.before_than_or_equal_to(self.TEST_DATETIME_UTC_OBJ -
                                                  timedelta(seconds=1)))
        self.assertTrue(
            datetime_type.before_than_or_equal_to(self.TEST_DATETIME_OBJ +
                                                  timedelta(seconds=1)))
        self.assertTrue(
            datetime_type.before_than_or_equal_to(self.TEST_DATETIME_UTC_OBJ +
                                                  timedelta(seconds=1)))

    def test_datetime_before_than_or_equal_to(self):
        self.datetime_before_than_or_equal_to_asserts(
            self.datetime_type_datetime)
        self.datetime_before_than_or_equal_to_asserts(
            self.datetime_type_datetime_obj)
        self.datetime_before_than_or_equal_to_asserts(
            self.datetime_type_datetime_utc_obj)

        self.assertTrue(
            self.datetime_type_date.before_than_or_equal_to(self.TEST_DATE))
        self.assertTrue(
            self.datetime_type_date.before_than_or_equal_to(
                self.TEST_DATETIME_OBJ + timedelta(seconds=1)))
        self.assertTrue(
            self.datetime_type_date.before_than_or_equal_to(
                self.TEST_DATETIME_UTC_OBJ + timedelta(seconds=1)))