package microservices.sample.persistence.ratpack;
import com.google.common.collect.ImmutableMap;
import com.google.gson.GsonBuilder;
import microservices.sample.base.ratpack.HandlerHelper;
import microservices.sample.persistence.EntityStore;
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import ratpack.test.handling.HandlingResult;
import ratpack.test.handling.RequestFixture;
import java.util.function.Consumer;
import static org.mockito.Mockito.*;
/**
* @author mamad
* @since 17/03/15.
*/
public class EntitiesCollectionHandlerTest {
HandlerHelper helper;
@Before
public void setUp() throws Exception {
helper = new HandlerHelper(new GsonBuilder().create());
}
@Test
@SuppressWarnings("unchecked")
public void testFindById() throws Exception {
EntityStore store = mock(EntityStore.class);
//configure mocked store, otherwise async request with not handled
doAnswer(invocation -> {
Object[] args = invocation.getArguments();
Consumer<Object> onSuccessCallback = (Consumer<Object>) args[1];
onSuccessCallback.accept(ImmutableMap.of("a", "b"));
return null;
}).when(store).findById(eq("id1"), any(Consumer.class), any(Consumer.class));
//get the item with id1
HandlingResult result = RequestFixture.handle(new EntitiesCollectionHandler(helper, store), fixture ->
fixture.body("{\"a\":\"b\"}", "application/json").uri("id1")
);
Assert.assertThat(result.getBodyText(), Matchers.equalTo("{\"a\":\"b\"}"));
}
}