package kr.debop4j.data.mongodb.spring;
import kr.debop4j.data.mongodb.MongoGridDatastoreConfiguration;
import kr.debop4j.data.mongodb.model.MongoDoc;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
import static org.fest.assertions.Assertions.assertThat;
/**
* kr.debop4j.data.mongodb.spring.MongoTemplateTest
*
* @author 배성혁 ( sunghyouk.bae@gmail.com )
* @since 13. 4. 17. 오후 4:04
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { MongoGridDatastoreConfiguration.class })
public class MongoTemplateTest {
@Autowired
MongoTemplate mongoTemplate;
@Test
public void injectTest() {
assertThat(mongoTemplate).isNotNull();
}
@Test
public void collectionExistsTest() {
if (mongoTemplate.collectionExists(MongoDoc.class)) {
mongoTemplate.dropCollection(MongoDoc.class);
assertThat(mongoTemplate.collectionExists(MongoDoc.class)).isFalse();
}
mongoTemplate.createCollection(MongoDoc.class);
assertThat(mongoTemplate.collectionExists(MongoDoc.class)).isTrue();
}
@Test
public void crudTest() throws Exception {
if (mongoTemplate.collectionExists(MongoDoc.class)) {
mongoTemplate.dropCollection(MongoDoc.class);
}
assertThat(mongoTemplate.count(new Query(), MongoDoc.class)).isEqualTo(0);
String collectionName = mongoTemplate.getCollectionName(MongoDoc.class);
mongoTemplate.insert(new MongoDoc("name-1"));
mongoTemplate.insert(new MongoDoc("name-2"));
mongoTemplate.insert(new MongoDoc("name-3"));
assertThat(mongoTemplate.count(new Query(), collectionName)).isEqualTo(3);
assertThat(mongoTemplate.count(new Query(), MongoDoc.class)).isEqualTo(3);
mongoTemplate.insert(new MongoDoc("aaa"));
List<MongoDoc> found = mongoTemplate.find(new Query(Criteria.where("name").is("aaa")), MongoDoc.class);
assertThat(found.size()).isEqualTo(1);
assertThat(found.get(0).getName()).isEqualTo("aaa");
mongoTemplate.remove(found.get(0), collectionName);
found = mongoTemplate.find(new Query(Criteria.where("name").is("aaa")), MongoDoc.class);
assertThat(found.size()).isEqualTo(0);
assertThat(mongoTemplate.count(new Query(), collectionName)).isEqualTo(3);
assertThat(mongoTemplate.count(new Query(), MongoDoc.class)).isEqualTo(3);
mongoTemplate.dropCollection(MongoDoc.class);
}
}