#102 Tests for the insert processor.
Merged 7 years ago by mikem. Opened 7 years ago by ralph.

@@ -0,0 +1,87 @@ 

+ import unittest

+ import mock

+ 

+ import kojihub

+ 

+ 

+ class TestInsertProcessor(unittest.TestCase):

+ 

+     def test_basic_instantiation(self):

+         proc = kojihub.InsertProcessor('sometable')

+         actual = str(proc)

+         expected = '-- incomplete update: no assigns'

+         self.assertEquals(actual, expected)

+ 

+     def test_to_string_with_data(self):

+         proc = kojihub.InsertProcessor('sometable', data={'foo': 'bar'})

+         actual = str(proc)

+         expected = 'INSERT INTO sometable (foo) VALUES (%(foo)s)'

+         self.assertEquals(actual, expected)

+ 

+     @mock.patch('kojihub.context')

+     def test_simple_execution_with_iterate(self, context):

+         cursor = mock.MagicMock()

+         context.cnx.cursor.return_value = cursor

+         proc = kojihub.InsertProcessor('sometable', data={'foo': 'bar'})

+         proc.execute()

+         cursor.execute.assert_called_once_with(

+             'INSERT INTO sometable (foo) VALUES (%(foo)s)',

+             {'foo': 'bar'},

+         )

+ 

+     @mock.patch('kojihub.context')

+     def test_make_create(self, context):

+         cursor = mock.MagicMock()

+         context.cnx.cursor.return_value = cursor

+         proc = kojihub.InsertProcessor('sometable', data={'foo': 'bar'})

+         proc.make_create(event_id=1, user_id=2)

+         self.assertEquals(proc.data['create_event'], 1)

+         self.assertEquals(proc.data['creator_id'], 2)

+ 

+         proc.make_create(user_id=2)

+         self.assertEquals(proc.data['create_event'], context.event_id)

+         self.assertEquals(proc.data['creator_id'], 2)

+ 

+         proc.make_create(event_id=1)

+         self.assertEquals(proc.data['create_event'], 1)

+         self.assertEquals(proc.data['creator_id'], context.session.user_id)

+ 

+         proc.make_create()

+         self.assertEquals(proc.data['create_event'], context.event_id)

+         self.assertEquals(proc.data['creator_id'], context.session.user_id)

+ 

+     @mock.patch('kojihub.context')

+     def test_dup_check(self, context):

+         cursor = mock.MagicMock()

+         context.cnx.cursor.return_value = cursor

+         proc = kojihub.InsertProcessor('sometable', data={'foo': 'bar'})

+         proc.dup_check()

+ 

+         args = cursor.execute.call_args

+         actual = ' '.join(args[0][0].split())

+         expected = 'SELECT foo FROM sometable WHERE (foo = %(foo)s)'

+         self.assertEquals(actual, expected)

+ 

+         proc.make_create()

+         proc.dup_check()

+         args = cursor.execute.call_args

+         actual = ' '.join(args[0][0].split())

+         expected = 'SELECT active, foo FROM sometable WHERE ' + \

+             '(active = %(active)s) AND (foo = %(foo)s)'

+         self.assertEquals(actual, expected)

+ 

+         proc.set(onething='another')

+         proc.rawset(something='something else')

+         result = proc.dup_check()

+         self.assertEquals(result, None)

+ 

+     @mock.patch('kojihub.context')

+     def test_raw_data(self, context):

+         cursor = mock.MagicMock()

+         context.cnx.cursor.return_value = cursor

+         proc = kojihub.InsertProcessor('sometable', rawdata={'foo': '\'bar\''})

+         result = proc.dup_check()

+         self.assertEquals(result, None)

+         actual = str(proc)

+         expected = "INSERT INTO sometable (foo) VALUES (('bar'))"  # raw data

+         self.assertEquals(actual, expected)

no initial comment

Commit 144a656 fixes this pull-request

Pull-Request has been merged by mikem@redhat.com

7 years ago
Metadata