com.lordofthejars.nosqlunit.couchdb.CouchDbOperation Maven / Gradle / Ivy
package com.lordofthejars.nosqlunit.couchdb;
import java.io.InputStream;
import org.ektorp.CouchDbConnector;
import org.ektorp.http.HttpClient;
import org.ektorp.http.RestTemplate;
import com.lordofthejars.nosqlunit.core.AbstractCustomizableDatabaseOperation;
import com.lordofthejars.nosqlunit.core.NoSqlAssertionError;
public class CouchDbOperation extends AbstractCustomizableDatabaseOperation {
private CouchDbConnector couchDbConnector;
public CouchDbOperation(CouchDbConnector couchDbConnector) {
this.couchDbConnector = couchDbConnector;
setInsertionStrategy(new DefaultCouchDbInsertionStrategy());
setComparisonStrategy(new DefaultCouchDbComparisonStrategy());
}
@Override
public void insert(InputStream dataScript) {
insertData(dataScript);
}
private void insertData(InputStream dataScript) {
try {
executeInsertion(new CouchDbConnectionCallback() {
@Override
public CouchDbConnector couchDbConnector() {
return couchDbConnector;
}
}, dataScript);
} catch (Throwable e) {
throw new IllegalStateException(e);
}
}
@Override
public void deleteAll() {
removeDatabase();
}
private void removeDatabase() {
HttpClient connection = couchDbConnector.getConnection();
RestTemplate restTemplate = new RestTemplate(connection);
restTemplate.delete(couchDbConnector.path());
couchDbConnector.createDatabaseIfNotExists();
}
@Override
public boolean databaseIs(InputStream expectedData) {
return compareData(expectedData);
}
private boolean compareData(InputStream expectedData) throws NoSqlAssertionError {
try {
return executeComparison(new CouchDbConnectionCallback() {
@Override
public CouchDbConnector couchDbConnector() {
return couchDbConnector;
}
}, expectedData);
} catch (NoSqlAssertionError e) {
throw e;
} catch (Throwable e) {
throw new IllegalStateException(e);
}
}
@Override
public CouchDbConnector connectionManager() {
return this.couchDbConnector;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy