class T03_EnumField(unittest.TestCase): """ EnumField tests """ def setUp(self): self.server = gnats.Server('somehost') self.conn = FakeServerConnectionForDB(self.server) self.db = Database(self.server, 'testdb', self.conn) self.enum = self.db.fields['enum-fld'] self.multi = self.db.fields['multienum-fld'] def tearDown(self): gnats.metadata_level = gnats.FULL_METADATA def test_1_values(self): """ values """ self.assertEqual(self.enum.values, ['cat1', 'cat2', 'cat3', 'cat4']) def test_2_sort_keys(self): """ sort_keys """ self.assertEqual(self.enum.sort_keys['cat1'], 0) self.assertEqual(self.multi.sort_keys['product2'], 1) def test_3_separators(self): """ separators """ self.assertEqual(self.multi.separators, ':|') def test_4_default_separator(self): """ default_separator """ self.assertEqual(self.multi.default_separator, ':') def test_5_list_values(self): """ list_values """ self.assertEqual(self.db.fields['scoped-enum-fld'].list_values(), ['open', 'analyzed', 'closed']) def test_06_values_dict(self): """ subfield dict values """ fld = self.db.fields['enum-fld'] self.assertEqual(len(fld.values), 4) self.assertEqual(len(fld.values_dict), 4) self.assertEqual(fld.values_dict['cat1'], {'owner': 'c12', 'group-owner': 'c15', 'group': 'c14', 'description': 'c11', 'notify': 'c13', 'category': 'cat1'}) def test_07_load_metadata(self): """ load_metadata method """ gnats.metadata_level = gnats.NO_ENUM_METADATA # "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) enum = self.db.fields['enum-fld'] self.assertEqual(len(enum.values), 0) self.conn = FakeServerConnectionForDB(self.server) enum.load_enum_values(self.conn) self.assertEqual(len(enum.values), 4)
class T03_EnumField(unittest.TestCase): """ EnumField tests """ def setUp(self): self.server = gnats.Server('somehost') self.conn = FakeServerConnectionForDB(self.server) self.db = Database(self.server, 'testdb', self.conn) self.enum = self.db.fields['enum-fld'] self.multi = self.db.fields['multienum-fld'] def tearDown(self): gnats.metadata_level = gnats.FULL_METADATA def test_1_values(self): """ values """ self.assertEqual(self.enum.values, ['cat1', 'cat2', 'cat3', 'cat4']) def test_2_sort_keys(self): """ sort_keys """ self.assertEqual(self.enum.sort_keys['cat1'], 0) self.assertEqual(self.multi.sort_keys['product2'], 1) def test_3_separators(self): """ separators """ self.assertEqual(self.multi.separators, ':|') def test_4_default_separator(self): """ default_separator """ self.assertEqual(self.multi.default_separator, ':') def test_5_list_values(self): """ list_values """ self.assertEqual(self.db.fields['scoped-enum-fld'].list_values(), ['open', 'analyzed', 'closed']) def test_06_values_dict(self): """ subfield dict values """ fld = self.db.fields['enum-fld'] self.assertEqual(len(fld.values), 4) self.assertEqual(len(fld.values_dict), 4) self.assertEqual( fld.values_dict['cat1'], { 'owner': 'c12', 'group-owner': 'c15', 'group': 'c14', 'description': 'c11', 'notify': 'c13', 'category': 'cat1' }) def test_07_load_metadata(self): """ load_metadata method """ gnats.metadata_level = gnats.NO_ENUM_METADATA # "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) enum = self.db.fields['enum-fld'] self.assertEqual(len(enum.values), 0) self.conn = FakeServerConnectionForDB(self.server) enum.load_enum_values(self.conn) self.assertEqual(len(enum.values), 4)
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)
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)