From 28da164e5c630a7d9d0dafe61277814b7b777804 Mon Sep 17 00:00:00 2001
From: Shin'ya Ueoka <ueokande@i-beam.org>
Date: Sun, 13 May 2018 14:41:03 +0900
Subject: Add e2e test cases for [[/]]

---
 e2e/web-server/index.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 54 insertions(+), 1 deletion(-)

(limited to 'e2e/web-server')

diff --git a/e2e/web-server/index.js b/e2e/web-server/index.js
index 8710bf9..cbeee15 100644
--- a/e2e/web-server/index.js
+++ b/e2e/web-server/index.js
@@ -1,3 +1,5 @@
+'use strict';
+
 var serverUrl = require('./url');
 var http = require('http');
 var url = require('url');
@@ -7,15 +9,66 @@ const handleScroll = (req, res) => {
   res.end('<!DOCTYPEhtml><html lang="en"><body style="width:10000px; height:10000px"></body></html">');
 };
 
+const handleAPagenation = (req, res) => {
+  let u = url.parse(req.url);
+  let params = new url.URLSearchParams(u.search);
+  let page = params.get('page') === null ? null : Number(params.get('page'));
+  if (page === null || isNaN(page)) {
+    return handle404(req, res);
+  }
+
+  let body = '';
+  let nextLink = u.pathname + '?page=' + (page + 1);
+  let prevLink = u.pathname + '?page=' + (page - 1);
+
+  if (page > 1) {
+    body += '<a href="' + prevLink + '">prev</a> | ';
+  }
+  body += '<a href="' + nextLink + '">next</a>';
+
+  res.writeHead(200, {'Content-Type': 'text/html'});
+  res.end('<!DOCTYPEhtml><html lang="en"><body">' + body + '</body></html">');
+};
+
+const handleLinkPagenation = (req, res) => {
+  let u = url.parse(req.url);
+  let params = new url.URLSearchParams(u.search);
+  let page = params.get('page') === null ? null : Number(params.get('page'));
+  if (page === null || isNaN(page)) {
+    return handle404(req, res);
+  }
+
+  let head = '';
+  let nextLink = u.pathname + '?page=' + (page + 1);
+  let prevLink = u.pathname + '?page=' + (page - 1);
+
+  if (page > 1) {
+    head += '<link rel="prev" href="' + prevLink + '"></link>';
+  }
+  head += '<link rel="next" href="' + nextLink + '"></link>';
+
+  res.writeHead(200, {'Content-Type': 'text/html'});
+  res.end('<!DOCTYPEhtml><html lang="en"><head>' + head + '</head><body"></body></html">');
+};
+
+
 const handle404 = (req, res) => {
   res.writeHead(404, {'Content-Type': 'text/plain'});
   res.end('not found')
 };
 
 http.createServer(function (req, res) {
+  if (req.method !== 'GET') {
+    handle404(req, res);
+  }
+
   let u = url.parse(req.url);
-  if (req.method === 'GET' && u.pathname === '/scroll') {
+  if (u.pathname === '/scroll') {
     handleScroll(req, res);
+  } else if (u.pathname === '/a-pagenation') {
+    handleAPagenation(req, res);
+  } else if (u.pathname === '/link-pagenation') {
+    handleLinkPagenation(req, res);
   } else {
     handle404(req, res);
   }
-- 
cgit v1.2.3