/*
* Copyright 2002-2007 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.springmodules.lucene.index.document.handler.database;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
import org.apache.lucene.document.Document;
import org.easymock.MockControl;
import org.springmodules.lucene.index.DocumentHandlerException;
import org.springmodules.lucene.index.document.handler.DocumentHandler;
public class SqlDocumentHandlerTests extends TestCase {
public void testSupport() throws Exception {
MockControl resultSetControl = MockControl.createControl(ResultSet.class);
ResultSet resultSet = (ResultSet)resultSetControl.getMock();
DocumentHandler documentHandler = new SqlDocumentHandler() {
public Document getDocument(SqlRequest request, ResultSet rs) throws SQLException {
return null;
}
};
resultSetControl.replay();
Map description = new HashMap();
description.put(SqlRequest.SQL_REQUEST, "sql");
documentHandler.getDocument(description, resultSet);
resultSetControl.verify();
}
public void testNotSupport() throws Exception {
DocumentHandler documentHandler = new SqlDocumentHandler() {
public Document getDocument(SqlRequest request, ResultSet rs) throws SQLException {
return null;
}
};
Map description = new HashMap();
description.put(SqlRequest.SQL_REQUEST, "sql");
try {
documentHandler.getDocument(description, "test");
fail();
} catch (DocumentHandlerException ex) {
}
}
public void testDescription() throws Exception {
MockControl resultSetControl = MockControl.createControl(ResultSet.class);
ResultSet resultSet = (ResultSet)resultSetControl.getMock();
DocumentHandler documentHandler = new SqlDocumentHandler() {
public Document getDocument(SqlRequest request, ResultSet rs) throws SQLException {
return null;
}
};
Map description = new HashMap();
description.put(SqlRequest.SQL_REQUEST, "sql");
try {
documentHandler.getDocument(description, "test");
fail();
} catch (DocumentHandlerException ex) {
}
resultSetControl.replay();
description.put(SqlRequest.SQL_REQUEST, "sql");
documentHandler.getDocument(description, resultSet);
resultSetControl.verify();
}
public void testGetDocument() throws Exception {
MockControl resultSetControl = MockControl.createControl(ResultSet.class);
ResultSet resultSet = (ResultSet)resultSetControl.getMock();
String sql = "sql";
Object[] params = new Object[] { "param1", new Integer(12)};
int[] paramTypes = new int[] { Types.VARCHAR, Types.INTEGER };
final boolean[] called = { false };
final SqlRequest[] sqlRequests = { null };
DocumentHandler documentHandler = new SqlDocumentHandler() {
public Document getDocument(SqlRequest request, ResultSet rs) throws SQLException {
called[0] = true;
sqlRequests[0] = request;
return null;
}
};
resultSetControl.replay();
Map description = new HashMap();
description.put(SqlRequest.SQL_REQUEST, sql);
description.put(SqlRequest.REQUEST_PARAMETERS, params);
description.put(SqlRequest.REQUEST_PARAMETER_TYPES, paramTypes);
documentHandler.getDocument(description, resultSet);
resultSetControl.verify();
assertTrue(called[0]);
assertEquals(sqlRequests[0].getSql(), sql);
assertEquals(sqlRequests[0].getParams()[0], params[0]);
assertEquals(sqlRequests[0].getParams()[1], params[1]);
assertEquals(sqlRequests[0].getTypes()[0], paramTypes[0]);
assertEquals(sqlRequests[0].getTypes()[1], paramTypes[1]);
}
}