package com.lordofthejars.nosqlunit.mongodb.integration; import com.mongodb.MongoClient; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import java.io.File; import static com.lordofthejars.nosqlunit.mongodb.ManagedMongoDb.MongoServerRuleBuilder.newManagedMongoDbRule; import org.junit.Test; import org.junit.runner.Description; import org.junit.runners.model.Statement; import com.lordofthejars.nosqlunit.mongodb.ManagedMongoDb; import com.mongodb.CommandResult; import com.mongodb.DB; public class WhenManagedMongoDbRuleIsRegistered { @Test public void mongo_server_should_start_and_stop_from_mongo_home() throws Throwable { System.setProperty("MONGO_HOME", "/opt/mongo"); ManagedMongoDb managedMongoDb = newManagedMongoDbRule() .build(); Statement noStatement = new Statement() { @Override public void evaluate() throws Throwable { MongoClient server = new MongoClient(); DB db = server.getDB("admin"); CommandResult stats = db.getStats(); assertThat(stats.ok(), is(true)); } }; Statement decotedStatement = managedMongoDb.apply(noStatement, Description.EMPTY); decotedStatement.evaluate(); File dbPath = new File("target" + File.separatorChar + "mongo-temp" + File.separatorChar + "mongo-dbpath"); assertThat(dbPath.exists(), is(false)); System.clearProperty("MONGO_HOME"); } @Test public void mongo_server_should_start_and_stop_from_configured_location() throws Throwable { ManagedMongoDb managedMongoDb = newManagedMongoDbRule().mongodPath("/opt/mongo") .build(); Statement noStatement = new Statement() { @Override public void evaluate() throws Throwable { MongoClient server = new MongoClient(); DB db = server.getDB("admin"); CommandResult stats = db.getStats(); assertThat(stats.ok(), is(true)); } }; Statement decotedStatement = managedMongoDb.apply(noStatement, Description.EMPTY); decotedStatement.evaluate(); File dbPath = new File("target" + File.separatorChar + "mongo-temp" + File.separatorChar + "mongo-dbpath"); assertThat(dbPath.exists(), is(false)); } @Test(expected = IllegalArgumentException.class) public void mongo_server_should_throw_an_exception_if_mongo_location_is_not_set() throws Throwable { ManagedMongoDb managedMongoDb = newManagedMongoDbRule() .build(); Statement noStatement = new Statement() { @Override public void evaluate() throws Throwable { } }; Statement decotedStatement = managedMongoDb.apply(noStatement, Description.EMPTY); decotedStatement.evaluate(); } @Test(expected = IllegalStateException.class) public void mongo_server_should_throw_an_exception_if_mongo_location_is_not_found() throws Throwable { ManagedMongoDb managedMongoDb = newManagedMongoDbRule().mongodPath("/example") .build(); Statement noStatement = new Statement() { @Override public void evaluate() throws Throwable { } }; Statement decotedStatement = managedMongoDb.apply(noStatement, Description.EMPTY); decotedStatement.evaluate(); } }