package pl.touk.sputnik.connector.gerrit;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.api.changes.Changes;
import com.google.gerrit.extensions.restapi.RestApiException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static com.googlecode.catchexception.CatchException.catchException;
import static com.googlecode.catchexception.CatchException.caughtException;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class GerritFacadeExceptionTest {
@Mock
GerritApi gerritApi;
@Test
public void shouldWrapConnectorException() throws Exception {
//given
Changes changes = mock(Changes.class);
when(gerritApi.changes()).thenReturn(changes);
when(changes.id("foo")).thenThrow(new RestApiException("Connection refused"));
GerritFacade gerritFacade = new GerritFacade(gerritApi, new GerritPatchset("foo", "bar"));
//when
catchException(gerritFacade).listFiles();
//then
assertThat(caughtException())
.isInstanceOf(GerritException.class)
.hasMessageContaining("Error when listing files");
}
}