content: 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)
  	 */
  }
  