view tests/couchdb/ListDateTimeFieldTests.py @ 173:3bcf39181f6e

pull the calculation of the epxire date up into AbstractBackend
author dirk
date Fri, 09 Sep 2011 17:19:16 +0200
parents f0afcd1c5656
children 460a3062c5e6
line wrap: on
line source


from backend.couchdb.ListDateTimeField import ListDateTimeField
from couchdb import Server
from couchdb.mapping import Document, TextField
from datetime import datetime
import unittest

class ListDateTimeFieldTests(unittest.TestCase):
    def testToJsonValid(self):
        value = datetime(2011, 9, 7, 15, 21, 0)
        result = ListDateTimeField()._to_json(value)
        self.assertEqual([2011, 9, 7, 15, 21, 0], result)

    def testToJsonInvalid(self):
        value = "this is invalid input"
        result = ListDateTimeField()._to_json(value)
        self.assertEqual(value, result)

    def testToPythonValid(self):
        value = [2011, 9, 7, 15, 21, 0]
        result = ListDateTimeField()._to_python(value)
        expected = datetime(2011, 9, 7, 15, 21, 0)
        self.assertEqual(expected, result)

    def testToPythonInvalid(self):
        value = "this is invalid input"
        result = ListDateTimeField()._to_python(value)
        self.assertEqual(value, result)

    def __testRoundTrip(self):
        class Dummy(Document):
            title = TextField()
            date = ListDateTimeField()

        server = Server()
        database = server["hello-world"]

        dummy = Dummy()
        dummy.title = "created from unit test"
        date = datetime.now().replace(microsecond=0)
        dummy.date = date
        dummy.store(database)
        self.assertNotEqual(None, dummy.id)

        dummy2 = Dummy.load(database, dummy.id)
        self.assertNotEqual(None, dummy2)
        self.assertFalse(dummy == dummy2)
        self.assertEqual(date, dummy2.date)

        del database[dummy.id]

if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()