package integration.api.pagination; import com.google.common.net.HttpHeaders; import integration.VertxNubesTestBase; import io.vertx.core.json.JsonArray; import io.vertx.core.json.JsonObject; import io.vertx.ext.unit.Async; import io.vertx.ext.unit.TestContext; import org.junit.Test; public class PaginationTest extends VertxNubesTestBase { // FIXME : 404 on this one, why ? // @Test // public void notPaginatedMethod(TestContext context) { // Async async = context.async(); // getJSON("/pagination/notPaginated", response -> { // context.assertEquals(204, response.statusCode()); // async.complete(); // }); // } @Test public void paginatedMethodWithSingleObject(TestContext context) { Async async = context.async(); getJSON("/pagination/paginationContextAvailable", response -> { context.assertEquals(200, response.statusCode()); context.assertNull(response.headers().get(HttpHeaders.LINK)); async.complete(); }); } @Test public void oneMiddlePage(TestContext context) { Async async = context.async(); int perPage = 50; int page = 3; int total = 502; getJSON("/pagination/sendResults?nbResults=" + total + "&page=" + page + "&perPage=" + perPage, response -> { context.assertEquals(200, response.statusCode()); context.assertNotNull(response.headers().get(HttpHeaders.LINK)); response.bodyHandler(buff -> { JsonArray obj = new JsonArray(buff.toString("UTF-8")); context.assertNotNull(obj); context.assertEquals(perPage, obj.size()); JsonObject dog = (JsonObject) obj.getValue(0); context.assertEquals("My name is dog number " + (perPage * (page - 1)) + " I wish I have a real name :'( ", dog.getString("name")); async.complete(); }); }); } /** * TODO : parseNavigationLinks and add more tests * - firstPage / assert(First==null, Prev==null) * - lastPage / assert(Last ==null, Next==null) */ }