Ejemplo n.º 1
0
    def test_to_string_with_single_row(self):
        proc = kojihub.BulkInsertProcessor('sometable', data=[{'foo': 'bar'}])
        actual = str(proc)
        expected = 'INSERT INTO sometable (foo) VALUES (%(foo0)s)'
        self.assertEquals(actual, expected)

        proc = kojihub.BulkInsertProcessor('sometable')
        proc.add_record(foo='bar')
        actual = str(proc)
        self.assertEquals(actual, expected)
Ejemplo n.º 2
0
    def test_batch_execution(self, context):
        cursor = mock.MagicMock()
        context.cnx.cursor.return_value = cursor

        proc = kojihub.BulkInsertProcessor('sometable',
                                           data=[{
                                               'foo': 'bar1'
                                           }],
                                           batch=2)
        proc.add_record(foo='bar2')
        proc.add_record(foo='bar3')
        proc.execute()
        calls = cursor.execute.mock_calls
        # list of (name, positional args, keyword args)
        self.assertEquals(len(calls), 2)
        self.assertEquals(
            calls[0][1],
            ('INSERT INTO sometable (foo) VALUES (%(foo0)s), (%(foo1)s)', {
                'foo0': 'bar1',
                'foo1': 'bar2'
            }))
        self.assertEquals(calls[1][1],
                          ('INSERT INTO sometable (foo) VALUES (%(foo0)s)', {
                              'foo0': 'bar3'
                          }))
Ejemplo n.º 3
0
 def test_missing_values_nostrict(self):
     proc = kojihub.BulkInsertProcessor('sometable', strict=False)
     proc.add_record(foo='bar')
     proc.add_record(foo2='bar2')
     actual = str(proc)
     expected = 'INSERT INTO sometable (foo, foo2) VALUES (%(foo0)s, NULL), (NULL, %(foo21)s)'
     self.assertEquals(actual, expected)
Ejemplo n.º 4
0
 def test_missing_values(self):
     proc = kojihub.BulkInsertProcessor('sometable')
     proc.add_record(foo='bar')
     proc.add_record(foo2='bar2')
     with self.assertRaises(koji.GenericError) as cm:
         str(proc)
     self.assertEqual(cm.exception.args[0], 'Missing value foo2 in BulkInsert')
Ejemplo n.º 5
0
 def test_missing_values_explicit_columns(self):
     proc = kojihub.BulkInsertProcessor('sometable',
                                        strict=True,
                                        columns=['foo', 'foo2'])
     proc.add_record(foo='bar')
     with self.assertRaises(koji.GenericError) as cm:
         str(proc)
     self.assertEquals(cm.exception.args[0],
                       'Missing value foo2 in BulkInsert')
Ejemplo n.º 6
0
    def test_simple_execution(self, context):
        cursor = mock.MagicMock()
        context.cnx.cursor.return_value = cursor
        proc = kojihub.BulkInsertProcessor('sometable', data=[{'foo': 'bar'}])
        proc.execute()
        cursor.execute.assert_called_once_with(
            'INSERT INTO sometable (foo) VALUES (%(foo0)s)',
            {'foo0': 'bar'},
        )

        cursor.reset_mock()
        proc = kojihub.BulkInsertProcessor('sometable')
        proc.add_record(foo='bar')
        proc.execute()
        cursor.execute.assert_called_once_with(
            'INSERT INTO sometable (foo) VALUES (%(foo0)s)',
            {'foo0': 'bar'},
        )
Ejemplo n.º 7
0
 def test_basic_instantiation(self):
     proc = kojihub.BulkInsertProcessor('sometable')
     actual = str(proc)
     expected = '-- incomplete insert: no data'
     self.assertEquals(actual, expected)