示例#1
0
class T01_DatabaseMetadata(unittest.TestCase):
    """ Test Database class metadata """
    def setUp(self):
        self.server = gnats.Server('somehost')
        self.conn = FakeServerConnectionForDB(self.server)
        self.db = Database(self.server, 'testdb', self.conn)

    def test_01_name(self):
        """ Database name """
        self.assertEqual(self.db.name, 'testdb')

    def test_02_description(self):
        """ description """
        self.assertEqual(self.db.description, 'Fake Database')

    def test_03_cfgt(self):
        """ last_config_time """
        self.assertEqual(self.db.last_config_time, u'1000')

    def test_04_ordered_field_names(self):
        """ ordered_field names """
        fnames = ' '.join([f.name for f in self.db.ordered_fields])
        self.assertEqual(fnames, self.conn.FIELDNAMES)

    def test_08_initial_entry(self):
        """ initial_entry_fields """
        self.assertEqual([f.lcname for f in self.db.initial_entry_fields],
                         'synopsis enum-fld multitext-fld from:'.split())

    def test_09_number_field_is_first(self):
        """ First db field is number_field """
        self.assertEqual(self.db.number_field.name, 'Number')

    def test_10_builtinfield_number(self):
        """ fields has key builtinfield:number """
        self.assertEqual(self.db.fields['builtinfield:number'],
                         self.db.fields['number'])

    def test_11_number_field(self):
        """ number_field is builtinfield:number """
        self.assertEqual(self.db.number_field,
                         self.db.fields['builtinfield:number'])

    def test_12_builtins(self):
        """ Check for builtinfield:synopsis and last-modified """
        self.assertEqual(self.db.fields['builtinfield:synopsis'],
                         self.db.fields['synopsis'])
        self.assertEqual(self.db.fields['builtinfield:last-modified'],
                         self.db.fields['last-modified'])

    def test_13_callback(self):
        """ Callback called after _get_metadata() """
        def cb(db):
            cb.dbin = db

        self.db.post_metadata_callback = cb
        # "Refresh" the conn, so that metadata can run again
        self.conn = FakeServerConnectionForDB(self.server)
        self.db.last_config_time = 987
        self.db._get_metadata(self.conn)
        self.assertEqual(cb.dbin, self.db)

    def test_14_update_metadata_no_refresh(self):
        """ update_metadata method doesn't refresh if cached data good. """
        def gm(conn):
            gm.c = conn

        gm.c = None
        self.db._get_metadata = gm
        self.conn = FakeServerConnectionForDB(self.server)
        self.db.update_metadata(self.conn)
        self.assertEqual(gm.c, None)

    def test_15_update_metadata_refresh(self):
        """ update_metadata method refreshes if cached data stale. """
        def gm(conn):
            gm.c = conn

        gm.c = None
        self.db._get_metadata = gm
        self.conn = FakeServerConnectionForDB(self.server)
        self.db.last_config_time = 987
        self.db.update_metadata(self.conn)
        self.assertEqual(gm.c, self.conn)
示例#2
0
class T01_DatabaseMetadata(unittest.TestCase):
    """ Test Database class metadata """

    def setUp(self):
        self.server = gnats.Server('somehost')
        self.conn = FakeServerConnectionForDB(self.server)
        self.db = Database(self.server, 'testdb', self.conn)

    def test_01_name(self):
        """ Database name """
        self.assertEqual(self.db.name, 'testdb')

    def test_02_description(self):
        """ description """
        self.assertEqual(self.db.description, 'Fake Database')

    def test_03_cfgt(self):
        """ last_config_time """
        self.assertEqual(self.db.last_config_time, u'1000')

    def test_04_ordered_field_names(self):
        """ ordered_field names """
        fnames = ' '.join([f.name for f in self.db.ordered_fields])
        self.assertEqual(fnames, self.conn.FIELDNAMES)

    def test_08_initial_entry(self):
        """ initial_entry_fields """
        self.assertEqual([f.lcname for f in self.db.initial_entry_fields],
                         'synopsis enum-fld multitext-fld from:'.split())

    def test_09_number_field_is_first(self):
        """ First db field is number_field """
        self.assertEqual(self.db.number_field.name, 'Number')

    def test_10_builtinfield_number(self):
        """ fields has key builtinfield:number """
        self.assertEqual(self.db.fields['builtinfield:number'],
                         self.db.fields['number'])

    def test_11_number_field(self):
        """ number_field is builtinfield:number """
        self.assertEqual(self.db.number_field,
                         self.db.fields['builtinfield:number'])

    def test_12_builtins(self):
        """ Check for builtinfield:synopsis and last-modified """
        self.assertEqual(self.db.fields['builtinfield:synopsis'],
                         self.db.fields['synopsis'])
        self.assertEqual(self.db.fields['builtinfield:last-modified'],
                         self.db.fields['last-modified'])

    def test_13_callback(self):
        """ Callback called after _get_metadata() """
        def cb(db):
            cb.dbin = db
        self.db.post_metadata_callback = cb
        # "Refresh" the conn, so that metadata can run again
        self.conn = FakeServerConnectionForDB(self.server)
        self.db.last_config_time = 987
        self.db._get_metadata(self.conn)
        self.assertEqual(cb.dbin, self.db)
        
    def test_14_update_metadata_no_refresh(self):
        """ update_metadata method doesn't refresh if cached data good. """
        def gm(conn):
            gm.c = conn
        gm.c = None
        self.db._get_metadata = gm 
        self.conn = FakeServerConnectionForDB(self.server)
        self.db.update_metadata(self.conn)
        self.assertEqual(gm.c, None)
        
    def test_15_update_metadata_refresh(self):
        """ update_metadata method refreshes if cached data stale. """
        def gm(conn):
            gm.c = conn
        gm.c = None
        self.db._get_metadata = gm 
        self.conn = FakeServerConnectionForDB(self.server)
        self.db.last_config_time = 987
        self.db.update_metadata(self.conn)
        self.assertEqual(gm.c, self.conn)