All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.lordofthejars.nosqlunit.couchdb.CouchDbRule Maven / Gradle / Ivy

The newest version!
package com.lordofthejars.nosqlunit.couchdb;

import com.lordofthejars.nosqlunit.core.AbstractNoSqlTestRule;
import com.lordofthejars.nosqlunit.core.DatabaseOperation;
import org.ektorp.CouchDbConnector;

import static com.lordofthejars.nosqlunit.couchdb.ManagedCouchDbConfigurationBuilder.newManagedCouchDbConfiguration;

public class CouchDbRule extends AbstractNoSqlTestRule {

    private static final String EXTENSION = "json";

    private DatabaseOperation databaseOperation;

    public static class CouchDbRuleBuilder {

        private CouchDbConfiguration couchDbConfiguration;
        private Object target;

        private CouchDbRuleBuilder() {
        }

        public static CouchDbRuleBuilder newCouchDbRule() {
            return new CouchDbRuleBuilder();
        }

        public CouchDbRuleBuilder configure(CouchDbConfiguration couchDbConfiguration) {
            this.couchDbConfiguration = couchDbConfiguration;
            return this;
        }

        public CouchDbRuleBuilder unitInstance(Object target) {
            this.target = target;
            return this;
        }

        public CouchDbRule defaultManagedCouchDb(String databaseName) {
            return new CouchDbRule(newManagedCouchDbConfiguration().databaseName(databaseName).build());
        }

        public CouchDbRule defaultManagedCouchDb(String databaseName, String url) {
            return new CouchDbRule(newManagedCouchDbConfiguration().databaseName(databaseName).url(url).build());
        }

        /**
         * We can use defaultManagedCouchDb(String databaseName).
         */
        @Deprecated
        public CouchDbRule defaultManagedCouchDb(String databaseName, Object target) {
            return new CouchDbRule(newManagedCouchDbConfiguration().databaseName(databaseName).build(), target);
        }

        public CouchDbRule build() {

            if (this.couchDbConfiguration == null) {
                throw new IllegalArgumentException("Configuration object should be provided.");
            }

            return new CouchDbRule(couchDbConfiguration, target);
        }
    }

    public CouchDbRule(CouchDbConfiguration configuration) {
        super(configuration.getConnectionIdentifier());
        this.databaseOperation = new CouchDbOperation(configuration.getCouchDbConnector());
    }

    /*With JUnit 10 is impossible to get target from a Rule, it seems that future versions will support it. For now constructor is apporach is the only way.*/
    public CouchDbRule(CouchDbConfiguration configuration, Object target) {
        super(configuration.getConnectionIdentifier());
        setTarget(target);
        this.databaseOperation = new CouchDbOperation(configuration.getCouchDbConnector());
    }

    @Override
    public DatabaseOperation getDatabaseOperation() {
        return databaseOperation;
    }

    @Override
    public String getWorkingExtension() {
        return EXTENSION;
    }

    @Override
    public void close() {
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy