view tests/couchdb/ListDateTimeFieldTests.py @ 217:bb3c851b18b1

add source file endcoding header
author Dirk Olmes <dirk@xanthippe.ping.de>
date Sun, 27 Apr 2014 05:33:34 +0200
parents 460a3062c5e6
children 7c719c4f5655
line wrap: on
line source

# -*- coding: utf-8 -*-
from backend.couchdb.ListDateTimeField import ListDateTimeField
from couchdb import Server
from couchdb.http import ResourceNotFound
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 = self._createDatabase(server)

        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 server[database.name]

    def _createDatabase(self, server):
        databaseName = "feedworm-unit-test"
        database = None
        try:
            database = server[databaseName]
        except (ResourceNotFound):
            database = server.create(databaseName)
        return database

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