Example #1
0
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)
Example #2
0
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)
Example #3
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)
Example #4
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)