def test_query_by_id(self):
     kojihub.lookup_name('some_table', 12345)
     self.assertEqual(len(self.queries), 1)
     query = self.queries[0]
     clauses = ['(some_table.id = %(some_table_id)s)']
     values = {'some_table_id': 12345}
     self.assertEqual(query.tables, ['some_table'])
     self.assertEqual(query.joins, None)
     self.assertEqual(set(query.clauses), set(clauses))
     self.assertEqual(query.values, values)
     self.assertEqual(len(self.inserts), 0)
 def test_query_by_dict_with_name(self):
     kojihub.lookup_name('some_table', {'name': 'whatever'})
     self.assertEqual(len(self.queries), 1)
     query = self.queries[0]
     clauses = ['(some_table.name = %(some_table_name)s)']
     values = {'some_table_name': 'whatever'}
     self.assertEqual(query.tables, ['some_table'])
     self.assertEqual(query.joins, None)
     self.assertEqual(set(query.clauses), set(clauses))
     self.assertEqual(query.values, values)
     self.assertEqual(len(self.inserts), 0)
 def test_lookup_name_create_wrong_type(self):
     self.query_executeOne.return_value = None
     bad_values = [
         {'id': 100},
         100
         ]
     for value in bad_values:
         with self.assertRaises(koji.GenericError) as cm:
             kojihub.lookup_name('package', value, create=True)
         self.assertEqual('Name must be a string', str(cm.exception))
     self.assertEqual(len(self.inserts), 0)
     self.nextval.assert_not_called()
 def test_wrong_lookup_type(self):
     bad_values = [
         {'foo': 'missing id and name fields'},
         {'id': 'not a valid int'},
         ['something'],
         set(),
         ]
     for value in bad_values:
         with self.assertRaises(koji.GenericError) as cm:
             kojihub.lookup_name('mytable', value)
         self.assertEqual('Invalid name or id value: %s' % value,
                          str(cm.exception))
     self.assertEqual(len(self.queries), 0)
     self.assertEqual(len(self.inserts), 0)
 def test_lookup_name_create(self):
     self.query_executeOne.return_value = None
     self.nextval.return_value = 999
     result = kojihub.lookup_name('package', 'python', create=True)
     self.assertEqual(len(self.queries), 1)
     self.assertEqual(len(self.inserts), 1)
     expected = {'id': 999, 'name': 'python'}
     self.assertEqual(result, expected)
     insert = self.inserts[0]
     self.assertEqual(insert.table, 'package')
     self.assertEqual(insert.data, expected)
     self.assertEqual(insert.rawdata, {})
     insert.execute.assert_called_once()
 def test_lookup_name_strict(self):
     self.query_executeOne.return_value = None
     with self.assertRaises(koji.GenericError) as cm:
         kojihub.lookup_name('package', 'python', strict=True)
     self.assertEqual(len(self.queries), 1)
     self.assertEqual(len(self.inserts), 0)
 def test_lookup_name_no_match(self):
     self.query_executeOne.return_value = None
     result = kojihub.lookup_name('package', 'python')
     self.assertEqual(len(self.queries), 1)
     self.assertEqual(len(self.inserts), 0)
     self.assertEqual(result, None)