def lastItemId_table5000Rows_returnsItemId4999(self):
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     container = self.SQLContainer(TableQuery('people', self._connectionPool, AllTests.sqlGen))
     if AllTests.db == DB.ORACLE:
         Assert.assertEquals(str(self.RowId([4999 + self._offset])), str(container.lastItemId()))
     else:
         Assert.assertEquals(self.RowId([4999 + self._offset]), container.lastItemId())
 def isLastId_table5000RowsLastId_returnsTrue(self):
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     container = self.SQLContainer(TableQuery('people', self._connectionPool, AllTests.sqlGen))
     if AllTests.db == DB.ORACLE:
         Assert.assertTrue(container.isLastId(self.RowId([BigDecimal(4999 + self._offset)])))
     else:
         Assert.assertTrue(container.isLastId(self.RowId([4999 + self._offset])))
Esempio n. 3
0
 def removeRow_throwsOptimisticLockException_shouldStillWork(self):
     if AllTests.db == AllTests.DB.HSQLDB:
         # HSQLDB doesn't support versioning, so this is to make the test
         # green.
         return
     DataGenerator.addVersionedData(self._connectionPool)
     tQuery = TableQuery('versioned', self._connectionPool, AllTests.sqlGen)
     tQuery.setVersionColumn('VERSION')
     container = SQLContainer(tQuery)
     row = container.getItem(container.firstItemId())
     Assert.assertEquals('Junk', row.getItemProperty('TEXT').getValue())
     # Update the version using another connection.
     conn = self._connectionPool.reserveConnection()
     stmt = conn.prepareStatement('UPDATE VERSIONED SET \"TEXT\" = ? WHERE \"ID\" = ?')
     stmt.setString(1, 'asdf')
     stmt.setObject(2, row.getItemProperty('ID').getValue())
     stmt.executeUpdate()
     stmt.close()
     conn.commit()
     self._connectionPool.releaseConnection(conn)
     itemToRemove = container.firstItemId()
     # This is expected, refresh and try again.
     try:
         container.removeItem(itemToRemove)
         container.commit()
     except OptimisticLockException, e:
         container.rollback()
         container.removeItem(itemToRemove)
         container.commit()
Esempio n. 4
0
 def getResults_delegateRegistered5000Rows_returns100rows(self):
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     query = FreeformQuery('SELECT * FROM people', Arrays.asList('ID'), self._connectionPool)
     delegate = EasyMock.createMock(FreeformQueryDelegate)
     if AllTests.db == DB.MSSQL:
         EasyMock.expect(delegate.getQueryString(200, 100)).andReturn('SELECT * FROM (SELECT row_number()' + 'OVER (ORDER BY id ASC) AS rownum, * FROM people)' + ' AS a WHERE a.rownum BETWEEN 201 AND 300')
     elif AllTests.db == DB.ORACLE:
         EasyMock.expect(delegate.getQueryString(200, 100)).andReturn('SELECT * FROM (SELECT  x.*, ROWNUM AS r FROM' + ' (SELECT * FROM people ORDER BY ID ASC) x) WHERE r BETWEEN 201 AND 300')
     else:
         EasyMock.expect(delegate.getQueryString(200, 100)).andReturn('SELECT * FROM people LIMIT 100 OFFSET 200')
     EasyMock.replay(delegate)
     query.setDelegate(delegate)
     query.beginTransaction()
     rs = query.getResults(200, 100)
     _0 = True
     i = 0
     while True:
         if _0 is True:
             _0 = False
         else:
             i += 1
         if not (i < 100):
             break
         Assert.assertTrue(rs.next())
         Assert.assertEquals(200 + i + self._offset, rs.getInt('ID'))
     Assert.assertFalse(rs.next())
     query.commit()
 def getIdByIndex_table5000rowsIndex1337_returnsRowId1337(self):
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     container = self.SQLContainer(TableQuery('people', self._connectionPool, AllTests.sqlGen))
     itemId = container.getIdByIndex(1337)
     if AllTests.db == DB.ORACLE:
         Assert.assertEquals(str(self.RowId([1337 + self._offset])), str(itemId))
     else:
         Assert.assertEquals(self.RowId([1337 + self._offset]), itemId)
 def isFirstId_tableAddedFirstItemRemoved_returnsFalse(self):
     DataGenerator.createGarbage(self._connectionPool)
     container = self.SQLContainer(TableQuery('garbage', self._connectionPool, AllTests.sqlGen))
     first = container.addItem()
     container.addItem()
     Assert.assertSame(first, container.firstItemId())
     Assert.assertTrue(container.removeItem(first))
     Assert.assertFalse(container.isFirstId(first))
 def prevItemId_tableCurrentItem1337_returns1336(self):
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     container = self.SQLContainer(TableQuery('people', self._connectionPool, AllTests.sqlGen))
     itemId = container.getIdByIndex(1337)
     if AllTests.db == DB.ORACLE:
         Assert.assertEquals(str(self.RowId([1336 + self._offset])), str(container.prevItemId(itemId)))
     else:
         Assert.assertEquals(self.RowId([1336 + self._offset]), container.prevItemId(itemId))
 def firstItemId_tableNewlyAddedFirstItemRemoved_resultChanges(self):
     DataGenerator.createGarbage(self._connectionPool)
     container = self.SQLContainer(TableQuery('garbage', self._connectionPool, AllTests.sqlGen))
     first = container.addItem()
     second = container.addItem()
     Assert.assertSame(first, container.firstItemId())
     Assert.assertTrue(container.removeItem(first))
     Assert.assertSame(second, container.firstItemId())
Esempio n. 9
0
 def getCount_delegateRegisteredZeroRows_returnsZero(self):
     DataGenerator.createGarbage(self._connectionPool)
     query = FreeformQuery('SELECT * FROM GARBAGE', Arrays.asList('ID'), self._connectionPool)
     delegate = EasyMock.createMock(FreeformQueryDelegate)
     EasyMock.expect(delegate.getCountQuery()).andReturn('SELECT COUNT(*) FROM GARBAGE')
     EasyMock.replay(delegate)
     query.setDelegate(delegate)
     Assert.assertEquals(0, query.getCount())
     EasyMock.verify(delegate)
 def refresh_tableWithoutCallingRefresh_sizeShouldNotUpdate(self):
     # Yeah, this is a weird one. We're testing that the size doesn't update
     # after adding lots of items unless we call refresh inbetween. This to
     # make sure that the refresh method actually refreshes stuff and isn't
     # a NOP.
     container = self.SQLContainer(TableQuery('people', self._connectionPool, AllTests.sqlGen))
     Assert.assertEquals(4, len(container))
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     Assert.assertEquals(4, len(container))
 def indexOfId_table5000RowsWithParameter1337_returns1337(self):
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     q = TableQuery('people', self._connectionPool, AllTests.sqlGen)
     container = self.SQLContainer(q)
     if AllTests.db == DB.ORACLE:
         container.getItem(self.RowId([BigDecimal(1337 + self._offset)]))
         Assert.assertEquals(1337, container.indexOfId(self.RowId([BigDecimal(1337 + self._offset)])))
     else:
         container.getItem(self.RowId([1337 + self._offset]))
         Assert.assertEquals(1337, container.indexOfId(self.RowId([1337 + self._offset])))
 def allIdsFound_table5000RowsLastId_shouldSucceed(self):
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     container = self.SQLContainer(TableQuery('people', self._connectionPool, AllTests.sqlGen))
     _0 = True
     i = 0
     while True:
         if _0 is True:
             _0 = False
         else:
             i += 1
         if not (i < 5000):
             break
         Assert.assertTrue(container.containsId(container.getIdByIndex(i)))
 def getItem_table5000RowsWithParameter1337_returnsItemWithId1337(self):
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     query = TableQuery('people', self._connectionPool, AllTests.sqlGen)
     container = self.SQLContainer(query)
     if AllTests.db == DB.ORACLE:
         item = container.getItem(self.RowId([BigDecimal(1337 + self._offset)]))
         Assert.assertNotNull(item)
         Assert.assertEquals(BigDecimal(1337 + self._offset), item.getItemProperty('ID').getValue())
     else:
         item = container.getItem(self.RowId([1337 + self._offset]))
         Assert.assertNotNull(item)
         Assert.assertEquals(1337 + self._offset, item.getItemProperty('ID').getValue())
     Assert.assertEquals('Person 1337', item.getItemProperty('NAME').getValue())
Esempio n. 14
0
 def getResults_noDelegate5000Rows_returns5000rows(self):
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     tQuery = TableQuery('people', self._connectionPool, AllTests.sqlGen)
     tQuery.beginTransaction()
     rs = tQuery.getResults(0, 0)
     _0 = True
     i = 0
     while True:
         if _0 is True:
             _0 = False
         else:
             i += 1
         if not (i < 5000):
             break
         Assert.assertTrue(rs.next())
     Assert.assertFalse(rs.next())
     tQuery.commit()
Esempio n. 15
0
 def getResults_noDelegate5000Rows_returns5000rows(self):
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     query = FreeformQuery('SELECT * FROM people', Arrays.asList('ID'), self._connectionPool)
     query.beginTransaction()
     rs = query.getResults(0, 0)
     _0 = True
     i = 0
     while True:
         if _0 is True:
             _0 = False
         else:
             i += 1
         if not (i < 5000):
             break
         Assert.assertTrue(rs.next())
     Assert.assertFalse(rs.next())
     query.commit()
Esempio n. 16
0
 def removeRow_versionSetAndEqualToDBValue_shouldSucceed(self):
     DataGenerator.addVersionedData(self._connectionPool)
     tQuery = TableQuery('versioned', self._connectionPool, AllTests.sqlGen)
     tQuery.setVersionColumn('VERSION')
     container = SQLContainer(tQuery)
     row = container.getItem(container.firstItemId())
     Assert.assertEquals('Junk', row.getItemProperty('TEXT').getValue())
     container.removeItem(container.firstItemId())
     container.commit()
     conn = self._connectionPool.reserveConnection()
     stmt = conn.prepareStatement('SELECT * FROM VERSIONED WHERE \"TEXT\" = ?')
     stmt.setString(1, 'Junk')
     rs = stmt.executeQuery()
     Assert.assertFalse(rs.next())
     rs.close()
     stmt.close()
     conn.commit()
     self._connectionPool.releaseConnection(conn)
Esempio n. 17
0
 def storeRow_versionSetAndLessThanDBValue_shouldThrowException(self):
     if AllTests.db == DB.HSQLDB:
         raise OptimisticLockException('HSQLDB doesn\'t support row versioning for optimistic locking - don\'t run this test.', None)
     DataGenerator.addVersionedData(self._connectionPool)
     tQuery = TableQuery('versioned', self._connectionPool, AllTests.sqlGen)
     tQuery.setVersionColumn('VERSION')
     container = SQLContainer(tQuery)
     row = container.getItem(container.firstItemId())
     Assert.assertEquals('Junk', row.getItemProperty('TEXT').getValue())
     row.getItemProperty('TEXT').setValue('asdf')
     # Update the version using another connection.
     conn = self._connectionPool.reserveConnection()
     stmt = conn.prepareStatement('UPDATE VERSIONED SET \"TEXT\" = ? WHERE \"ID\" = ?')
     stmt.setString(1, 'foo')
     stmt.setObject(2, row.getItemProperty('ID').getValue())
     stmt.executeUpdate()
     stmt.close()
     conn.commit()
     self._connectionPool.releaseConnection(conn)
     container.commit()
 def isFirstId_tableEmptyResultSet_returnsFirstAddedItem(self):
     DataGenerator.createGarbage(self._connectionPool)
     container = self.SQLContainer(TableQuery('garbage', self._connectionPool, AllTests.sqlGen))
     id = container.addItem()
     Assert.assertTrue(container.isFirstId(id))
 def refresh_table_sizeShouldUpdate(self):
     container = self.SQLContainer(TableQuery('people', self._connectionPool, AllTests.sqlGen))
     Assert.assertEquals(4, len(container))
     DataGenerator.addFiveThousandPeople(self._connectionPool)
     container.refresh()
     Assert.assertEquals(5000, len(container))
Esempio n. 20
0
 def setUp(self):
     self._connectionPool = SimpleJDBCConnectionPool(
         AllTests.dbDriver, AllTests.dbURL, AllTests.dbUser, AllTests.dbPwd, 2, 2
     )
     DataGenerator.addPeopleToDatabase(self._connectionPool)