package net.rrm.ehour.update;
import com.google.common.base.Optional;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class UpdateServiceTest {
@Mock
private LatestVersionFetcher latestVersionFetcher;
private UpdateService updateService;
@Before
public void setUp() throws Exception {
updateService = new UpdateService("1.2", latestVersionFetcher);
}
@Test
public void should_fetch_latest_version() throws Exception {
updateService.scheduledFetchLatestVersion();
Thread.sleep(500);
verify(latestVersionFetcher).getLatestVersionNumber("1.2", true);
}
@Test
public void should_say_version_is_latest_when_it_failed_to_retrieve() throws Exception {
when(latestVersionFetcher.getLatestVersionNumber("1.2", true)).thenReturn(Optional.<String>absent());
updateService.scheduledFetchLatestVersion();
Thread.sleep(500);
assertTrue(updateService.isLatestVersion());
verify(latestVersionFetcher).getLatestVersionNumber("1.2", true);
}
@Test
public void should_say_version_is_not_latest_when_version_dont_match() throws Exception {
when(latestVersionFetcher.getLatestVersionNumber("1.2", true)).thenReturn(Optional.of("1.3"));
updateService.scheduledFetchLatestVersion();
Thread.sleep(500);
verify(latestVersionFetcher).getLatestVersionNumber("1.2", true);
assertFalse(updateService.isLatestVersion());
}
@Test
public void should_say_version_is_not_latest_when_4_digit_version_is_lower_than_2_digit_version() throws Exception {
updateService = new UpdateService("1.2.2.1", latestVersionFetcher);
when(latestVersionFetcher.getLatestVersionNumber("1.2.2.1", true)).thenReturn(Optional.of("1.3"));
updateService.scheduledFetchLatestVersion();
Thread.sleep(500);
verify(latestVersionFetcher).getLatestVersionNumber("1.2.2.1", true);
assertFalse(updateService.isLatestVersion());
}
@Test
public void should_say_version_is_latest_when_versions_match() throws Exception {
when(latestVersionFetcher.getLatestVersionNumber("1.2", true)).thenReturn(Optional.of("1.2"));
updateService.scheduledFetchLatestVersion();
Thread.sleep(500);
assertTrue(updateService.isLatestVersion());
verify(latestVersionFetcher).getLatestVersionNumber("1.2", true);
}
@Test
public void should_say_version_is_latest_when_current_is_nightly() throws Exception {
updateService = new UpdateService("1.3-SNAPSHOT", latestVersionFetcher);
when(latestVersionFetcher.getLatestVersionNumber("1.3-SNAPSHOT", true)).thenReturn(Optional.of("1.2"));
updateService.scheduledFetchLatestVersion();
Thread.sleep(1500);
assertTrue(updateService.isLatestVersion());
verify(latestVersionFetcher).getLatestVersionNumber("1.3-SNAPSHOT", true);
}
}