def test_close(self): """ You can close the cursor """ mock = MagicMock() mock.close = MagicMock() cursor = BlockingCursor(mock) d = cursor.close() d.addCallback(lambda _: mock.close.assert_called_once_with()) return d
def test_lastrowid(self): """ You can get the lastrowid (which may be meaningless for some db cursors) """ mock = MagicMock() mock.lastrowid = 12 cursor = BlockingCursor(mock) d = cursor.lastRowId() d.addCallback(lambda rowid: self.assertEqual(rowid, 12)) return d
def test_fetchall(self): """ You can fetch all """ db = sqlite3.connect(':memory:') cursor = BlockingCursor(db.cursor()) d = cursor.execute('create table foo (name text)') d.addCallback(lambda _: cursor.execute('insert into foo (name) values(?)', ('name1',))) d.addCallback(lambda _: cursor.execute('select name from foo')) d.addCallback(lambda _: cursor.fetchall()) def check(result): self.assertEqual(result, [('name1',)]) d.addCallback(check) return d
def test_execute(self): """ You can execute queries in pretended asynchronousness """ db = sqlite3.connect(':memory:') cursor = BlockingCursor(db.cursor()) d = cursor.execute('create table foo (name text)') d.addCallback(lambda _: cursor.execute('insert into foo (name) values(?)', ('name1',))) d.addCallback(lambda _: cursor.execute('select name from foo')) d.addCallback(lambda _: cursor.fetchone()) def check(result): self.assertEqual(result, ('name1',)) d.addCallback(check) return d