Files
liquidjs/test/e2e/express.ts
T
2019-02-23 00:49:54 +08:00

71 lines
1.9 KiB
TypeScript

import { expect } from 'chai'
import * as request from 'supertest'
import * as express from 'express'
import { resolve } from 'path'
import Liquid from '../..'
describe('express()', function () {
const root = resolve(__dirname, '../stub/root')
const views = resolve(__dirname, '../stub/views')
const partials = resolve(__dirname, '../stub/partials')
let app: express.Application, engine: Liquid
beforeEach(function () {
app = express()
engine = new Liquid({
root,
extname: '.html'
})
app.set('view engine', 'html')
app.engine('html', engine.express())
app.get('/name', (req, res) => res.render('name', {
name: 'harttle'
}))
app.get('/include/:file', (req, res) => res.render('include', {
file: req.params.file
}))
})
it('should respect express views(array)', function (done) {
app.set('views', [views])
request(app).get('/name')
.expect('My name is harttle.')
.expect(200, done)
})
it('should respect express views(string)', function (done) {
app.set('views', views)
request(app).get('/include/bar')
.expect('bar')
.expect(200, done)
})
it('should pass error when file not found', function (done) {
const view = {
root: []
}
const file = '/not-exist.html'
const ctx = {}
engine.express().call(view, file, ctx, function (err: any) {
try {
expect(err.code).to.equal('ENOENT')
expect(err.message).to.match(/Failed to lookup/)
done()
} catch (e) {
done(e)
}
})
})
it('should respect root option when lookup', function (done) {
app.set('views', [views])
request(app).get('/include/foo')
.expect('foo')
.expect(200, done)
})
it('should respect express views (Array) when lookup', function (done) {
app.set('views', [views, partials])
request(app).get('/include/bar')
.expect('bar')
.expect(200, done)
})
})