@Test public void parametersSetWithList() { DataSource ds = new DriverManagerDataSource(); operation.setDataSource(ds); operation.setSql("select * from mytable where one = ? and two = ?"); operation.setParameters(new SqlParameter[] { new SqlParameter("one", Types.NUMERIC), new SqlParameter("two", Types.NUMERIC)}); operation.afterPropertiesSet(); operation.validateParameters(new Object[] { 1, "2" }); assertEquals(2, operation.getDeclaredParameters().size()); }
@Test public void unspecifiedMapParameters() { operation.setSql("select * from mytable"); Map<String, String> params = new HashMap<>(); params.put("col1", "value"); exception.expect(InvalidDataAccessApiUsageException.class); operation.validateNamedParameters(params); }
@Test public void tooManyParameters() { operation.setSql("select * from mytable"); exception.expect(InvalidDataAccessApiUsageException.class); operation.validateParameters(new Object[] { 1, 2 }); }
@Test public void tooFewParameters() { operation.setSql("select * from mytable"); operation.setTypes(new int[] { Types.INTEGER }); exception.expect(InvalidDataAccessApiUsageException.class); operation.validateParameters((Object[]) null); }
@Test public void tooFewMapParameters() { operation.setSql("select * from mytable"); operation.setTypes(new int[] { Types.INTEGER }); exception.expect(InvalidDataAccessApiUsageException.class); operation.validateNamedParameters((Map<String, String>) null); }
@Test public void emptySql() { exception.expect(InvalidDataAccessApiUsageException.class); operation.compile(); }
@Test public void compileTwice() { operation.setDataSource(new DriverManagerDataSource()); operation.setSql("select * from mytable"); operation.setTypes(null); operation.compile(); operation.compile(); }
@Test public void declareParameterAfterCompile() { operation.setDataSource(new DriverManagerDataSource()); operation.setSql("select * from mytable"); operation.compile(); exception.expect(InvalidDataAccessApiUsageException.class); operation.declareParameter(new SqlParameter(Types.INTEGER)); }
@Test public void setTypeAfterCompile() { operation.setDataSource(new DriverManagerDataSource()); operation.setSql("select * from mytable"); operation.compile(); exception.expect(InvalidDataAccessApiUsageException.class); operation.setTypes(new int[] { Types.INTEGER }); }
@Test public void validateInOutParameter() { operation.setDataSource(new DriverManagerDataSource()); operation.setSql("DUMMY_PROC"); operation.declareParameter(new SqlOutParameter("DUMMY_OUT_PARAM", Types.VARCHAR)); operation.declareParameter(new SqlInOutParameter("DUMMY_IN_OUT_PARAM", Types.VARCHAR)); operation.validateParameters(new Object[] {"DUMMY_VALUE1", "DUMMY_VALUE2"}); }