From af0f960d8995b92fda201b86e30db50473cb671e Mon Sep 17 00:00:00 2001 From: David Thexton Date: Fri, 8 Jun 2012 11:51:32 +0100 Subject: [PATCH] BATCH-1860 - Fix tests (Derby queries now involve sub-query for ordering) and refactor superclass test to reflect that table alias is now present by default (changed as all but one subclass required the table alias) --- .../DerbyPagingQueryProviderTests.java | 272 +++++++++--------- .../SqlWindowingPagingQueryProviderTests.java | 120 ++++---- 2 files changed, 196 insertions(+), 196 deletions(-) diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/DerbyPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/DerbyPagingQueryProviderTests.java index 92af44284..f1da15da3 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/DerbyPagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/DerbyPagingQueryProviderTests.java @@ -1,136 +1,136 @@ -/* - * Copyright 2006-2008 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.batch.item.database.support; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.sql.Connection; -import java.sql.DatabaseMetaData; - -import javax.sql.DataSource; - -import org.junit.Assert; -import org.junit.Test; -import org.springframework.dao.InvalidDataAccessResourceUsageException; - -/** - * @author Thomas Risberg - */ -public class DerbyPagingQueryProviderTests extends AbstractSqlPagingQueryProviderTests { - - public DerbyPagingQueryProviderTests() { - pagingQueryProvider = new DerbyPagingQueryProvider(); - } - - @Test - public void testInit() throws Exception { - DataSource ds = createMock(DataSource.class); - Connection con = createMock(Connection.class); - DatabaseMetaData dmd = createMock(DatabaseMetaData.class); - expect(dmd.getDatabaseProductVersion()).andReturn("10.4.1.3"); - expect(con.getMetaData()).andReturn(dmd); - expect(ds.getConnection()).andReturn(con); - replay(dmd); - replay(con); - replay(ds); - pagingQueryProvider.init(ds); - verify(ds); - verify(con); - verify(dmd); - } - - @Test - public void testInitWithUnsupportedVErsion() throws Exception { - DataSource ds = createMock(DataSource.class); - Connection con = createMock(Connection.class); - DatabaseMetaData dmd = createMock(DatabaseMetaData.class); - expect(dmd.getDatabaseProductVersion()).andReturn("10.2.9.9"); - expect(con.getMetaData()).andReturn(dmd); - expect(ds.getConnection()).andReturn(con); - replay(dmd); - replay(con); - replay(ds); - try { - pagingQueryProvider.init(ds); - fail(); - } - catch (InvalidDataAccessResourceUsageException e) { - // expected - } - verify(ds); - verify(con); - verify(dmd); - } - - @Test - @Override - public void testGenerateFirstPageQuery() { - String sql = "SELECT * FROM ( SELECT id, name, age, ROW_NUMBER() OVER () AS ROW_NUMBER FROM foo WHERE bar = 1 ORDER BY id ASC) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 100"; - String s = pagingQueryProvider.generateFirstPageQuery(pageSize); - Assert.assertEquals("", sql, s); - } - - @Test - @Override - public void testGenerateRemainingPagesQuery() { - String sql = "SELECT * FROM ( SELECT id, name, age, ROW_NUMBER() OVER () AS ROW_NUMBER FROM foo WHERE bar = 1 AND id > ? ORDER BY id ASC) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 100"; - String s = pagingQueryProvider.generateRemainingPagesQuery(pageSize); - Assert.assertEquals("", sql, s); - } - - @Test - @Override - public void testGenerateJumpToItemQuery() { - String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER () AS ROW_NUMBER FROM foo WHERE bar = 1 ORDER BY id ASC) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - Assert.assertEquals("", sql, s); - } - - @Test - @Override - public void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER () AS ROW_NUMBER FROM foo WHERE bar = 1 ORDER BY id ASC) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - Assert.assertEquals("", sql, s); - } - - /** - * Older versions of Derby don't allow order by in the sub select. This should work with 10.6.1 and above. - */ - @Test - @Override - public void testQueryContainsSortKey() { - String s = pagingQueryProvider.generateFirstPageQuery(pageSize).toLowerCase(); - assertTrue("Wrong query: " + s, s.contains("id asc")); - } - - /** - * Older versions of Derby don't allow order by in the sub select. This should work with 10.6.1 and above. - */ - @Test - @Override - public void testQueryContainsSortKeyDesc() { - pagingQueryProvider.setAscending(false); - String s = pagingQueryProvider.generateFirstPageQuery(pageSize).toLowerCase(); - assertTrue("Wrong query: " + s, s.contains("id desc")); - } - -} +/* + * Copyright 2006-2008 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.batch.item.database.support; + +import static org.easymock.EasyMock.createMock; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.replay; +import static org.easymock.EasyMock.verify; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; + +import javax.sql.DataSource; + +import org.junit.Assert; +import org.junit.Test; +import org.springframework.dao.InvalidDataAccessResourceUsageException; + +/** + * @author Thomas Risberg + */ +public class DerbyPagingQueryProviderTests extends AbstractSqlPagingQueryProviderTests { + + public DerbyPagingQueryProviderTests() { + pagingQueryProvider = new DerbyPagingQueryProvider(); + } + + @Test + public void testInit() throws Exception { + DataSource ds = createMock(DataSource.class); + Connection con = createMock(Connection.class); + DatabaseMetaData dmd = createMock(DatabaseMetaData.class); + expect(dmd.getDatabaseProductVersion()).andReturn("10.4.1.3"); + expect(con.getMetaData()).andReturn(dmd); + expect(ds.getConnection()).andReturn(con); + replay(dmd); + replay(con); + replay(ds); + pagingQueryProvider.init(ds); + verify(ds); + verify(con); + verify(dmd); + } + + @Test + public void testInitWithUnsupportedVErsion() throws Exception { + DataSource ds = createMock(DataSource.class); + Connection con = createMock(Connection.class); + DatabaseMetaData dmd = createMock(DatabaseMetaData.class); + expect(dmd.getDatabaseProductVersion()).andReturn("10.2.9.9"); + expect(con.getMetaData()).andReturn(dmd); + expect(ds.getConnection()).andReturn(con); + replay(dmd); + replay(con); + replay(ds); + try { + pagingQueryProvider.init(ds); + fail(); + } + catch (InvalidDataAccessResourceUsageException e) { + // expected + } + verify(ds); + verify(con); + verify(dmd); + } + + @Test + @Override + public void testGenerateFirstPageQuery() { + String sql = "SELECT * FROM ( SELECT id, name, age, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY id ASC) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 100"; + String s = pagingQueryProvider.generateFirstPageQuery(pageSize); + Assert.assertEquals("", sql, s); + } + + @Test + @Override + public void testGenerateRemainingPagesQuery() { + String sql = "SELECT * FROM ( SELECT id, name, age, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 AND id > ? ORDER BY id ASC) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 100"; + String s = pagingQueryProvider.generateRemainingPagesQuery(pageSize); + Assert.assertEquals("", sql, s); + } + + @Test + @Override + public void testGenerateJumpToItemQuery() { + String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY id ASC) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100"; + String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); + Assert.assertEquals("", sql, s); + } + + @Test + @Override + public void testGenerateJumpToItemQueryForFirstPage() { + String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY id ASC) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1"; + String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); + Assert.assertEquals("", sql, s); + } + + /** + * Older versions of Derby don't allow order by in the sub select. This should work with 10.6.1 and above. + */ + @Test + @Override + public void testQueryContainsSortKey() { + String s = pagingQueryProvider.generateFirstPageQuery(pageSize).toLowerCase(); + assertTrue("Wrong query: " + s, s.contains("id asc")); + } + + /** + * Older versions of Derby don't allow order by in the sub select. This should work with 10.6.1 and above. + */ + @Test + @Override + public void testQueryContainsSortKeyDesc() { + pagingQueryProvider.setAscending(false); + String s = pagingQueryProvider.generateFirstPageQuery(pageSize).toLowerCase(); + assertTrue("Wrong query: " + s, s.contains("id desc")); + } + +} diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProviderTests.java index ffffa3d6f..2245c4651 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProviderTests.java @@ -1,60 +1,60 @@ -/* - * Copyright 2006-2008 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.batch.item.database.support; - -import static org.junit.Assert.*; - -import org.junit.Assert; -import org.junit.Test; - -/** - * @author Thomas Risberg - */ -public class SqlWindowingPagingQueryProviderTests extends AbstractSqlPagingQueryProviderTests { - - public SqlWindowingPagingQueryProviderTests() { - pagingQueryProvider = new SqlWindowingPagingQueryProvider(); - } - - @Test @Override - public void testGenerateFirstPageQuery() { - String sql = "SELECT * FROM ( SELECT id, name, age, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) WHERE ROW_NUMBER <= 100"; - String s = pagingQueryProvider.generateFirstPageQuery(pageSize); - assertEquals("", sql, s); - } - - @Test @Override - public void testGenerateRemainingPagesQuery() { - String sql = "SELECT * FROM ( SELECT id, name, age, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1 AND id > ?) WHERE ROW_NUMBER <= 100"; - String s = pagingQueryProvider.generateRemainingPagesQuery(pageSize); - assertEquals("", sql, s); - } - - @Test @Override - public void testGenerateJumpToItemQuery() { - String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) WHERE ROW_NUMBER = 100"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals("", sql, s); - } - - @Test @Override - public void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) WHERE ROW_NUMBER = 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - Assert.assertEquals("", sql, s); - } - -} +/* + * Copyright 2006-2008 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.batch.item.database.support; + +import static org.junit.Assert.*; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Thomas Risberg + */ +public class SqlWindowingPagingQueryProviderTests extends AbstractSqlPagingQueryProviderTests { + + public SqlWindowingPagingQueryProviderTests() { + pagingQueryProvider = new SqlWindowingPagingQueryProvider(); + } + + @Test @Override + public void testGenerateFirstPageQuery() { + String sql = "SELECT * FROM ( SELECT id, name, age, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 100"; + String s = pagingQueryProvider.generateFirstPageQuery(pageSize); + assertEquals("", sql, s); + } + + @Test @Override + public void testGenerateRemainingPagesQuery() { + String sql = "SELECT * FROM ( SELECT id, name, age, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1 AND id > ?) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 100"; + String s = pagingQueryProvider.generateRemainingPagesQuery(pageSize); + assertEquals("", sql, s); + } + + @Test @Override + public void testGenerateJumpToItemQuery() { + String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100"; + String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); + assertEquals("", sql, s); + } + + @Test @Override + public void testGenerateJumpToItemQueryForFirstPage() { + String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1"; + String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); + Assert.assertEquals("", sql, s); + } + +}