package com.niklim.clicktrace.service;
import static org.fest.assertions.Assertions.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import com.niklim.clicktrace.controller.ActiveSession;
import com.niklim.clicktrace.model.ScreenShot;
import com.niklim.clicktrace.model.Session;
@RunWith(MockitoJUnitRunner.class)
public class SearchServiceTest {
@InjectMocks
private SearchService searchService = new SearchService();
@Mock
private SessionManager sessionManager;
@Mock
private ActiveSession activeSession;
@Test
public void testAllSessions() {
// given
String text = "text";
boolean matchCase = true;
boolean allSessions = true;
// when
searchService.search(text, allSessions, matchCase);
// then
Mockito.verifyZeroInteractions(activeSession);
Mockito.verify(sessionManager).loadAll();
}
@Test
public void testOnlyActiveSession() {
// given
String text = "text";
boolean matchCase = true;
boolean allSessions = false;
Session session = Mockito.mock(Session.class);
Mockito.when(activeSession.getSession()).thenReturn(session);
// when
searchService.search(text, allSessions, matchCase);
// then
Mockito.verifyZeroInteractions(sessionManager);
Mockito.verify(activeSession).getSession();
}
@Test
public void shouldFindIgnoreCase() {
// given
String text = "TEXT";
boolean matchCase = false;
ScreenShot shot = new ScreenShot(null, null);
shot.setDescription("kaszanka\ntext\nkaszanka");
// when
SearchService.ShotSearchResult result = searchService.findText(shot, text, matchCase);
// then
assertThat(result.shot).isSameAs(shot);
}
@Test
public void shouldNotFindMatchCase() {
// given
String text = "Text";
boolean matchCase = true;
ScreenShot shot = new ScreenShot(null, null);
shot.setDescription("kaszanka\ntext\nkaszanka");
// when
SearchService.ShotSearchResult result = searchService.findText(shot, text, matchCase);
// then
assertThat(result).isNull();
}
@Test
public void shouldFindMatchCase() {
// given
String text = "Text";
boolean matchCase = true;
ScreenShot shot = new ScreenShot(null, null);
shot.setDescription("kaszanka\nText\nkaszanka");
// when
SearchService.ShotSearchResult result = searchService.findText(shot, text, matchCase);
// then
assertThat(result.shot).isSameAs(shot);
}
}