express-turnout
Version:
Pre-rendering Single-Page-Application for crawlers.
117 lines (94 loc) • 3.31 kB
text/coffeescript
# Dependencies
express= require 'express'
turnout= require '../'
Promise= require 'bluebird'
request= Promise.promisify(require 'request')
cheerio= require 'cheerio'
# Environment
port= 59798
url= 'http://localhost:'+port+'/'
# Spec
describe 'expressTurnout',->
server= null
beforeEach (done)->
app= express()
app.use turnout()
app.use (req,res)-> res.sendFile __dirname+'/fixture.html'
server= app.listen port,done
afterEach ->
server.close()
describe '?_escaped_fragment_',->
it 'prerender /',(done)->
request url+'?_escaped_fragment_'
.spread (response)->
expect(response.statusCode).toBe 200
expect(response.headers['x-powered-by']).toBe 'Express-turnout'
$= cheerio response.body
expect($.find('h1').text()).toBe 'first'
expect($.find('a').text()).toBe 'second'
expect($.find('meta').length).toBe 1+5
done()
it 'prerender /second',(done)->
request url+'second?_escaped_fragment_'
.spread (response)->
expect(response.statusCode).toBe 200
expect(response.headers['x-powered-by']).toBe 'Express-turnout'
$= cheerio response.body
expect($.find('h1').text()).toBe 'second'
expect($.find('a').text()).toBe 'first'
expect($.find('meta').length).toBe 1+5
done()
describe 'User-Agent: Googlebot',->
it 'prerender /',(done)->
request
url: url
headers:
'User-Agent': 'Googlebot'
.spread (response)->
expect(response.statusCode).toBe 200
expect(response.headers['x-powered-by']).toBe 'Express-turnout'
$= cheerio response.body
expect($.find('h1').text()).toBe 'first'
expect($.find('a').text()).toBe 'second'
expect($.find('meta').length).toBe 1+5
done()
it 'prerender /second',(done)->
request
url: url+'second'
headers:
'User-Agent': 'Googlebot'
.spread (response)->
expect(response.statusCode).toBe 200
expect(response.headers['x-powered-by']).toBe 'Express-turnout'
$= cheerio response.body
expect($.find('h1').text()).toBe 'second'
expect($.find('a').text()).toBe 'first'
expect($.find('meta').length).toBe 1+5
done()
describe 'User-Agent: Twitterbot',->
it 'prerender /',(done)->
request
url: url
headers:
'User-Agent': 'Twitterbot'
.spread (response)->
expect(response.statusCode).toBe 200
expect(response.headers['x-powered-by']).toBe 'Express-turnout'
$= cheerio response.body
expect($.find('h1').text()).toBe 'first'
expect($.find('a').text()).toBe 'second'
expect($.find('meta').length).toBe 1+5
done()
it 'prerender /second',(done)->
request
url: url+'second'
headers:
'User-Agent': 'Twitterbot'
.spread (response)->
expect(response.statusCode).toBe 200
expect(response.headers['x-powered-by']).toBe 'Express-turnout'
$= cheerio response.body
expect($.find('h1').text()).toBe 'second'
expect($.find('a').text()).toBe 'first'
expect($.find('meta').length).toBe 1+5
done()