package bo.gotthardt.rest;
import bo.gotthardt.Persistable;
import bo.gotthardt.exception.NotFoundException;
import com.avaje.ebean.EbeanServer;
import lombok.Getter;
import lombok.Setter;
import org.junit.Test;
import java.util.UUID;
import static bo.gotthardt.test.assertj.DropwizardAssertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
* Tests for {@link bo.gotthardt.rest.CrudService}.
*
* @author Bo Gotthardt
*/
public class CrudServiceTest {
private EbeanServer db = mock(EbeanServer.class);
private CrudService<TestItem> service = new CrudService<>(TestItem.class, db);
@Test
public void fetchShouldFindInDatabase() {
UUID id = UUID.randomUUID();
TestItem item = new TestItem();
when(db.find(TestItem.class, id)).thenReturn(item);
assertThat(service.fetchById(id)).isEqualTo(item);
}
@Test(expected = NotFoundException.class)
public void fetchShouldThrowWhenIdNotFound() {
service.fetchById(UUID.randomUUID());
}
@Getter
@Setter
private static class TestItem implements Persistable {
private UUID id;
}
}