package com.lordofthejars.nosqlunit.mongodb;
import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static com.lordofthejars.nosqlunit.mongodb.InMemoryMongoDb.InMemoryMongoRuleBuilder.newInMemoryMongoDbRule;
import static com.lordofthejars.nosqlunit.mongodb.InMemoryMongoDbConfigurationBuilder.inMemoryMongoDb;
import java.io.ByteArrayInputStream;
import org.junit.After;
import org.junit.ClassRule;
import org.junit.Test;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
public class WhenEmbeddedMongoDbOperationsArRequired {
private static final String DATA = "" +
"{" +
"\"collection1\": " +
" [" +
" {\"id\":1,\"code\":\"JSON dataset\",}" +
" ]" +
"}";
@ClassRule
public static final InMemoryMongoDb IN_MEMORY_MONGO_DB = newInMemoryMongoDbRule().build();
@After
public void tearDown() {
Mongo defaultEmbeddedInstance = EmbeddedMongoInstancesFactory.getInstance().getDefaultEmbeddedInstance();
defaultEmbeddedInstance.getDB("test").getCollection("collection1").drop();
}
@Test
public void data_should_be_inserted_into_mongodb() {
MongoOperation mongoOperation = new MongoOperation(inMemoryMongoDb().databaseName("test").build());
mongoOperation.insert(new ByteArrayInputStream(DATA.getBytes()));
Mongo mongo = mongoOperation.connectionManager();
DBCollection collection = mongo.getDB("test").getCollection("collection1");
DBObject object = collection.findOne();
assertThat((Integer) object.get("id"), is(new Integer(1)));
assertThat((String) object.get("code"), is("JSON dataset"));
}
@Test
public void data_should_be_removed_from_mongo() {
MongoOperation mongoOperation = new MongoOperation(inMemoryMongoDb().databaseName("test").build());
mongoOperation.insert(new ByteArrayInputStream(DATA.getBytes()));
mongoOperation.deleteAll();
Mongo mongo = mongoOperation.connectionManager();
DBCollection collection = mongo.getDB("test").getCollection("collection1");
DBObject object = collection.findOne();
assertThat(object, is(nullValue()));
}
@Test
public void data_should_be_compared_between_expected_and_current_data() {
MongoOperation mongoOperation = new MongoOperation(inMemoryMongoDb().databaseName("test").build());
mongoOperation.insert(new ByteArrayInputStream(DATA.getBytes()));
boolean result = mongoOperation.databaseIs(new ByteArrayInputStream(DATA.getBytes()));
assertThat(result, is(true));
}
}