mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-17 21:40:39 -07:00
Add xhr support for render file in browser.
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
const chai = require('chai')
|
||||
const expect = chai.expect
|
||||
const url = require('../../src/util/url.js')
|
||||
const { JSDOM } = require('jsdom')
|
||||
|
||||
describe('util/url', function () {
|
||||
var dom
|
||||
beforeEach(function () {
|
||||
dom = new JSDOM(``, {
|
||||
url: 'https://example.com/foo/bar/',
|
||||
contentType: 'text/html',
|
||||
includeNodeLocations: true
|
||||
})
|
||||
global.document = dom.window.document
|
||||
})
|
||||
afterEach(function () {
|
||||
delete global.document
|
||||
})
|
||||
describe('resolve', function () {
|
||||
describe('root', function () {
|
||||
it('should support width relative path', function () {
|
||||
expect(url.resolve('./views', 'foo'))
|
||||
.to.equal('https://example.com/foo/bar/views/foo')
|
||||
expect(url.resolve('./views/', 'foo'))
|
||||
.to.equal('https://example.com/foo/bar/views/foo')
|
||||
})
|
||||
it('should support width absolute path', function () {
|
||||
expect(url.resolve('/views', 'foo'))
|
||||
.to.equal('https://example.com/views/foo')
|
||||
expect(url.resolve('/views/', 'foo'))
|
||||
.to.equal('https://example.com/views/foo')
|
||||
})
|
||||
it('should support with empty', function () {
|
||||
expect(url.resolve('', 'page.html'))
|
||||
.to.equal('https://example.com/foo/bar/page.html')
|
||||
})
|
||||
it('should support with url', function () {
|
||||
expect(url.resolve('https://example.com/views', 'page.html'))
|
||||
.to.equal('https://example.com/views/page.html')
|
||||
expect(url.resolve('https://example.com/views/', 'page.html'))
|
||||
.to.equal('https://example.com/views/page.html')
|
||||
})
|
||||
it('should get the first value when argument is array', function () {
|
||||
expect(url.resolve(['https://example.com/views', 'https://google.com/views'], 'page.html'))
|
||||
.to.equal('https://example.com/views/page.html')
|
||||
expect(url.resolve(['https://example.com/views/', 'https://google.com/views'], 'page.html'))
|
||||
.to.equal('https://example.com/views/page.html')
|
||||
})
|
||||
})
|
||||
describe('path', function () {
|
||||
it('should support width relative path', function () {
|
||||
expect(url.resolve('./views/', 'page.html'))
|
||||
.to.equal('https://example.com/foo/bar/views/page.html')
|
||||
})
|
||||
it('should support with absolute path', function () {
|
||||
expect(url.resolve('/views/', '/page.html'))
|
||||
.to.equal('https://example.com/page.html')
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
+146
@@ -0,0 +1,146 @@
|
||||
const Liquid = require('..')
|
||||
const sinon = require('sinon')
|
||||
const { JSDOM } = require('jsdom')
|
||||
const chai = require('chai')
|
||||
const expect = chai.expect
|
||||
|
||||
describe('xhr', () => {
|
||||
var server, engine, dom
|
||||
|
||||
beforeEach(() => {
|
||||
server = sinon.fakeServer.create()
|
||||
server.autoRespond = true
|
||||
server.respondWith('GET', 'https://example.com/views/hello.html',
|
||||
[200, {'Content-Type': 'text/plain'}, 'hello {{name}}'])
|
||||
global.XMLHttpRequest = sinon.useFakeXMLHttpRequest()
|
||||
dom = new JSDOM(``, {
|
||||
url: 'https://example.com/',
|
||||
referrer: 'https://example.com/',
|
||||
contentType: 'text/html',
|
||||
includeNodeLocations: true
|
||||
})
|
||||
global.document = dom.window.document
|
||||
engine = Liquid({
|
||||
root: 'https://example.com/views',
|
||||
extname: '.html'
|
||||
})
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
server.restore()
|
||||
delete global.XMLHttpRequest
|
||||
delete global.document
|
||||
})
|
||||
|
||||
describe('#renderFile()', () => {
|
||||
it('should support without extname', () => {
|
||||
return expect(engine.renderFile('hello', {name: 'alice1'}))
|
||||
.to.eventually.equal('hello alice1')
|
||||
})
|
||||
it('should support with extname', () => {
|
||||
return expect(engine.renderFile('hello.html', {name: 'alice2'}))
|
||||
.to.eventually.equal('hello alice2')
|
||||
})
|
||||
it('should support with absolute path', () => {
|
||||
server.respondWith('GET', 'https://example.com/foo.html',
|
||||
[200, {'Content-Type': 'text/plain'}, 'foo'])
|
||||
return expect(engine.renderFile('/foo.html'))
|
||||
.to.eventually.equal('foo')
|
||||
})
|
||||
it('should support with url', () => {
|
||||
return expect(engine.renderFile('https://example.com/views/hello.html', {name: 'alice4'}))
|
||||
.to.eventually.equal('hello alice4')
|
||||
})
|
||||
it('should support include', () => {
|
||||
server.respondWith('GET', 'https://example.com/views/hello.html',
|
||||
[200, {'Content-Type': 'text/plain'}, "hello {% include 'name.html' %}"])
|
||||
server.respondWith('GET', 'https://example.com/views/name.html',
|
||||
[200, {'Content-Type': 'text/plain'}, '{{name}}'])
|
||||
return expect(engine.renderFile('hello.html', {name: 'alice5'}))
|
||||
.to.eventually.equal('hello alice5')
|
||||
})
|
||||
it('should throw 404', () => {
|
||||
return expect(engine.renderFile('/not/exist.html'))
|
||||
.to.be.rejectedWith('Not Found')
|
||||
})
|
||||
})
|
||||
describe('root', () => {
|
||||
it('should support with null', () => {
|
||||
dom = new JSDOM(``, {
|
||||
url: 'https://example.com/bar/',
|
||||
referrer: 'https://example.com/bar/',
|
||||
contentType: 'text/html',
|
||||
includeNodeLocations: true
|
||||
})
|
||||
global.document = dom.window.document
|
||||
engine = Liquid({
|
||||
extname: '.html'
|
||||
})
|
||||
server.respondWith('GET', 'https://example.com/bar/hello.html',
|
||||
[200, {'Content-Type': 'text/plain'}, 'hello {{name}}'])
|
||||
return expect(engine.renderFile('hello.html', {name: 'alice5'}))
|
||||
.to.eventually.equal('hello alice5')
|
||||
})
|
||||
it('should support with empty', () => {
|
||||
dom = new JSDOM(``, {
|
||||
url: 'https://example.com/foo/',
|
||||
referrer: 'https://example.com/foo/',
|
||||
contentType: 'text/html',
|
||||
includeNodeLocations: true
|
||||
})
|
||||
global.document = dom.window.document
|
||||
engine = Liquid({
|
||||
root: '',
|
||||
extname: '.html'
|
||||
})
|
||||
server.respondWith('GET', 'https://example.com/foo/hello.html',
|
||||
[200, {'Content-Type': 'text/plain'}, 'hello {{name}}'])
|
||||
return expect(engine.renderFile('hello.html', {name: 'alice5'}))
|
||||
.to.eventually.equal('hello alice5')
|
||||
})
|
||||
it('should support with relative path', () => {
|
||||
dom = new JSDOM(``, {
|
||||
url: 'https://example.com/foo/',
|
||||
referrer: 'https://example.com/foo/',
|
||||
contentType: 'text/html',
|
||||
includeNodeLocations: true
|
||||
})
|
||||
global.document = dom.window.document
|
||||
engine = Liquid({
|
||||
root: './views/',
|
||||
extname: '.html'
|
||||
})
|
||||
server.respondWith('GET', 'https://example.com/foo/views/hello.html',
|
||||
[200, {'Content-Type': 'text/plain'}, 'hello {{name}}'])
|
||||
return expect(engine.renderFile('hello.html', {name: 'alice5'}))
|
||||
.to.eventually.equal('hello alice5')
|
||||
})
|
||||
it('should support with absolute path', () => {
|
||||
dom = new JSDOM(``, {
|
||||
url: 'https://example.com/foo/',
|
||||
referrer: 'https://example.com/foo/',
|
||||
contentType: 'text/html',
|
||||
includeNodeLocations: true
|
||||
})
|
||||
global.document = dom.window.document
|
||||
engine = Liquid({
|
||||
root: '/views/',
|
||||
extname: '.html'
|
||||
})
|
||||
server.respondWith('GET', 'https://example.com/views/hello.html',
|
||||
[200, {'Content-Type': 'text/plain'}, 'hello {{name}}'])
|
||||
return expect(engine.renderFile('hello.html', {name: 'alice5'}))
|
||||
.to.eventually.equal('hello alice5')
|
||||
})
|
||||
it('should support with url', () => {
|
||||
engine = Liquid({
|
||||
root: 'https://foo.com/bar/',
|
||||
extname: '.html'
|
||||
})
|
||||
server.respondWith('GET', 'https://foo.com/bar/hello.html',
|
||||
[200, {'Content-Type': 'text/plain'}, 'hello {{name}}'])
|
||||
return expect(engine.renderFile('hello.html', {name: 'alice5'}))
|
||||
.to.eventually.equal('hello alice5')
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user