1. junit test like below
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/spring/test-mongo-setup.xml"})
public class AlarmLogDataHandlerTest extends AbstractDbDataTest {
@Autowired
private AlarmRepository alarmRepository;
@Autowired
private AlarmDetailsRepository alarmDetailsRepository;
private AlarmErrorDataHandler handler;
private String inverterId = "inverter1";
@Before
public void init() {
setCurrentMillisSystem();
handler = new AlarmErrorDataHandler();
ReflectionTestUtils.setField(handler, "alarmRepository", alarmRepository);
}
@After
public void cleanData() {
setCurrentMillisSystem();
alarmRepository.deleteAll();
alarmDetailsRepository.deleteAll();
}
@Test
public void whenAlarmIsNewThenSaveAlarmLogsAndAlarmDetails() {
// given
String errorType = ErrorCode.L1.getErrorType();
int errorCodeL1_value1 = 2;
AlarmLogs logs = buildFullAlarmLogs(errorType, errorCodeL1_value1);
// when
handler.saveAlarmLogs(logs);
// then
Iterable<AlarmLogs> logsList = alarmRepository.findAll();
assertThat(logsList.iterator().hasNext(), equalTo(true));
AlarmLogs dbLogs = logsList.iterator().next();
assertThat(dbLogs.getVersion(), equalTo(0L));
assertThat(dbLogs.getErrorType(), equalTo(errorType));
assertThat(dbLogs.getErrorValue(), equalTo(errorCodeL1_value1));
assertThat(dbLogs.getAlarmDetails(), notNullValue());
Iterable<AlarmDetails> alarmDetails = alarmDetailsRepository.findAll();
assertThat(Lists.newArrayList(alarmDetails), hasSize(1));
}
}
2 xml configuration
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.3.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <mongo:auditing/> <bean name="fongo" class="com.github.fakemongo.Fongo"> <constructor-arg value="InMemoryMongo"/> </bean> <bean id="mongo" factory-bean="fongo" factory-method="getMongo"/> <mongo:db-factory id="mongoDbFactory" mongo-ref="mongo"/> <!-- localhost settings for mongo --> <!--<mongo:db-factory id="mongoDbFactory" /> --> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongoDbFactory"/> </bean> <mongo:repositories base-package="com.eifesun.monitor.web.repository" repository-impl-postfix="CustomImpl"/> <bean class="com.eifesun.monitor.web.model.mongodb.CascadingMongoEventListener" /> </beans>
notice that: we use "com.github.fakemongo.Fongo", and "InMemoryMongo" for test.