001 /** 002 * Copyright 2005-2011 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.rice.test; 017 018 import org.kuali.rice.test.data.PerSuiteUnitTestData; 019 import org.kuali.rice.test.data.UnitTestData; 020 import org.kuali.test.KRADTestCase; 021 import org.springframework.jdbc.core.ConnectionCallback; 022 import org.springframework.jdbc.core.JdbcTemplate; 023 024 import javax.sql.DataSource; 025 import java.sql.Connection; 026 import java.sql.ResultSet; 027 import java.sql.SQLException; 028 import java.sql.Statement; 029 030 import static org.junit.Assert.*; 031 032 /** 033 * This class is used by the {@link DataLoaderAnnotationTest} and {@link DataLoaderAnnotationOverrideTest} classes to verify parent class annotation usage 034 * 035 * @author Kuali Rice Team (rice.collab@kuali.org) 036 * 037 */ 038 @PerSuiteUnitTestData({ 039 @UnitTestData("insert into " + AnnotationTestParent.TEST_TABLE_NAME + " (COL) values ('1')"), 040 @UnitTestData(filename = "classpath:org/kuali/rice/test/AnnotationTestParentData.sql") 041 }) 042 public abstract class AnnotationTestParent extends KRADTestCase { 043 044 protected static final String TEST_TABLE_NAME = "EN_UNITTEST_T"; 045 046 protected void verifyCount(String valueToVerify, int count) throws SQLException { 047 assertEquals(count + " value(s) should be found for id " + valueToVerify, count, countTableResults(valueToVerify)); 048 } 049 050 protected void verifyExistence(String valueToVerify) throws SQLException { 051 assertTrue("Value should be found for id " + valueToVerify, hasTableResults(valueToVerify)); 052 } 053 054 protected void verifyNonExistent(String valueToVerify) throws SQLException { 055 assertFalse("No value should be found for id " + valueToVerify, hasTableResults(valueToVerify)); 056 } 057 058 protected boolean hasTableResults(String valueToVerify) { 059 return countTableResults(valueToVerify) > 0; 060 } 061 062 protected int countTableResults(String valueToVerify) { 063 final String valueToCheck = valueToVerify; 064 final DataSource dataSource = TestHarnessServiceLocator.getDataSource(); 065 return (Integer) new JdbcTemplate(dataSource).execute(new ConnectionCallback() { 066 public Object doInConnection(final Connection connection) throws SQLException { 067 Statement statement = null; 068 try { 069 statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 070 final ResultSet resultSet = statement.executeQuery("Select * from " + TEST_TABLE_NAME + " where COL = '" + valueToCheck + "'"); 071 assertNotNull("ResultSet should not be null",resultSet); 072 int count = 0; 073 while (resultSet.next()) { 074 count++; 075 } 076 return count; 077 } finally { 078 if (statement != null) { 079 statement.close(); 080 } 081 } 082 } 083 }); 084 } 085 086 }