package org.needle4j.junit;
import org.junit.rules.RuleChain;
import org.junit.rules.TestRule;
import org.needle4j.junit.testrule.DatabaseTestRule;
import org.needle4j.junit.testrule.DatabaseTestRuleBuilder;
import org.needle4j.junit.testrule.NeedleTestRule;
import org.needle4j.junit.testrule.NeedleTestRuleBuilder;
import org.needle4j.mock.MockitoProvider;
/**
* Allows static factory method access to selected needle components.
*/
public final class NeedleBuilders {
/**
* @return a new builder for {@link NeedleRule}.
*/
public static NeedleRuleBuilder needleRule() {
return new NeedleRuleBuilder();
}
/**
*
* @return new builder with Mockito mock provider pre configured.
*/
public static NeedleRuleBuilder needleMockitoRule() {
return new NeedleRuleBuilder().withMockProvider(MockitoProvider.class);
}
/**
*
* @param configurationResourceName
* the configuration to read (without properties-suffix)
* @return new builder instance
*/
public static NeedleRuleBuilder needleRule(String configurationResourceName) {
return new NeedleRuleBuilder().fromResource(configurationResourceName);
}
/**
* @return a new builder for {@link NeedleTestRule}.
*/
public static NeedleTestRuleBuilder needleTestRule(final Object testInstance) {
return new NeedleTestRuleBuilder(testInstance);
}
/**
* @return a new builder for {@link NeedleTestRule} with Mockito Provider
* preconfigured.
*/
public static NeedleTestRuleBuilder needleMockitoTestRule(final Object testInstance) {
return new NeedleTestRuleBuilder(testInstance).withMockProvider(MockitoProvider.class);
}
/**
* @return a new builder for {@link DatabaseTestRule}.
*/
public static DatabaseTestRuleBuilder databaseTestRule() {
return new DatabaseTestRuleBuilder();
}
/**
* @return a new builder for {@link DatabaseRule}.
*/
public static DatabaseRuleBuilder databaseRule() {
return new DatabaseRuleBuilder();
}
/**
* @param configurationResourceName
* config file to read (without .properties suffix)
* @return a new builder for {@link DatabaseRule}.
*/
public static DatabaseRuleBuilder databaseRule(String configurationResourceName) {
return new DatabaseRuleBuilder().fromResource(configurationResourceName);
}
/**
* Returns a {@code RuleChain} with a single {@link TestRule}. This method
* is the usual starting point of a {@code RuleChain}.
*
* @param outerRule
* the outer rule of the {@code RuleChain}.
* @return a {@code RuleChain} with a single {@link TestRule}.
*/
public static RuleChain outerRule(final TestRule outerRule) {
return RuleChain.outerRule(outerRule);
}
/**
* Returns a {@code RuleChain} without a {@link TestRule}. This method may
* be the starting point of a {@code RuleChain}.
*
* @return a {@code RuleChain} without a {@link TestRule}.
*/
public static RuleChain emptyRuleChain() {
return RuleChain.emptyRuleChain();
}
private NeedleBuilders() {
super();
}
}