Example #1
0
    def test_extra_fields(self):
        s = SimpleStorage(name='TimeTracking', descrip='FirstSave')
        s.save()

        create1 = parse_now_field(s._create_date)
        update1 = parse_now_field(s._last_update)

        self.assertCloseTimes(datetime.datetime.utcnow(), update1)
        self.assertCloseTimes(create1, update1)

        # Sucks, but we need to space out our timestamps
        time.sleep(0.3)

        s.descrip = 'SecondSave'
        s.save()

        create2 = parse_now_field(s._create_date)
        update2 = parse_now_field(s._last_update)

        self.assertCloseTimes(datetime.datetime.utcnow(), update2)
        self.assertCloseTimes(create1, create2)
        self.assertNotCloseTimes(update1, update2)

        s2 = SimpleStorage.find_one(s.id)
        create3 = parse_now_field(s2._create_date)
        update3 = parse_now_field(s2._last_update)

        # Note that we DON'T check for string equality - that's because
        # _last_update is updated every time the instance method to_data is
        # called. See simple.md for extra details on auto fields
        self.assertCloseTimes(create2, create3)
        self.assertCloseTimes(update2, update3)
Example #2
0
    def test_extra_fields(self):
        s = SimpleStorage(name='TimeTracking', descrip='FirstSave')
        s.save()

        create1 = parse_now_field(s._create_date)
        update1 = parse_now_field(s._last_update)

        self.assertCloseTimes(datetime.datetime.utcnow(), update1)
        self.assertCloseTimes(create1, update1)

        # Sucks, but we need to space out our timestamps
        time.sleep(0.3)

        s.descrip = 'SecondSave'
        s.save()

        create2 = parse_now_field(s._create_date)
        update2 = parse_now_field(s._last_update)

        self.assertCloseTimes(datetime.datetime.utcnow(), update2)
        self.assertCloseTimes(create1, create2)
        self.assertNotCloseTimes(update1, update2)

        s2 = SimpleStorage.find_one(s.id)
        create3 = parse_now_field(s2._create_date)
        update3 = parse_now_field(s2._last_update)

        # Note that we DON'T check for string equality - that's because
        # _last_update is updated every time the instance method to_data is
        # called. See simple.md for extra details on auto fields
        self.assertCloseTimes(create2, create3)
        self.assertCloseTimes(update2, update3)
Example #3
0
    def test_now(self):
        # First just make sure that we can accurately create parse date time
        # strings. We just create a low N amount for testing
        COUNT = 100
        for _ in range(COUNT):
            s = now_field()
            d = parse_now_field(s)
            # We assume that we got a parseable date string - we confirm that
            # we got this back by subtracting from a known datetime and then
            # making sure that the difference is sane
            self.assertCloseTimes(d, datetime.datetime.utcnow())

        # Make sure that we work with and without microseconds
        ref = datetime.datetime(2050, 12, 1, 14, 45, 55, 123)

        # with microseconds
        self.assertCloseTimes(
            ref, parse_now_field('UTC:' + '2050-12-01T14:45:55.000123'))

        # withOUT microseconds
        self.assertCloseTimes(ref,
                              parse_now_field('UTC:' + '2050-12-01T14:45:55'))