UNPKG

express-yui

Version:

Express extension for YUI Applications

115 lines (100 loc) 2.98 kB
/* * Copyright (c) 2013, Yahoo! Inc. All rights reserved. * Copyrights licensed under the New BSD License. * See the accompanying LICENSE file for terms. */ /*jslint node:true, nomen:true*/ "use strict"; var YUITest = require('yuitest'), A = YUITest.Assert, OA = YUITest.ObjectAssert, suite, view = require('../../lib/view.js'); suite = new YUITest.TestSuite("express-yui view plugin suite"); suite.add(new YUITest.TestCase({ name: "view-test", setUp: function () { // nothing }, tearDown: function () { // unregister mocks delete view.use; delete view.YUI; }, "test constructor": function () { A.isNotNull(view, "view require failed"); A.isFunction(view.view); }, "test view": function () { YUITest.Mock.expect(view, { method: 'use', callCount: 0 // we should get Y in lazy mode when calling render }); var fn = view.view(); A.isObject(fn); YUITest.Mock.verify(view); }, "test render": function () { view.use = function () { return { Template: { _cache: { 'bundleName/foo': function (ctx, callback) { return 'output'; } } } }; }; var ViewClass = view.view(), value; new ViewClass('foo').render({ bundle: 'bundleName' }, function (err, data) { A.isNull(err); value = data; }); A.areSame('output', value); }, "test layout": function () { view.use = function () { return { Template: { _cache: { 'bundleName/foo': function (ctx, callback) { return 'output'; }, 'bundleName/bar': function (ctx, callback) { return ctx.body + '+layout'; } } } }; }; var ViewClass = view.view({ defaultBundle: 'bundleName', defaultLayout: 'bar' }), value; new ViewClass('foo').render({}, function (err, data) { A.isNull(err); value = data; }); A.areSame('output+layout', value); }, "test invalid template": function () { view.use = function () { return {}; }; var ViewClass = view.view({}); A.throwsError('Failed to lookup view "foo"', function () { new ViewClass('foo').render({ bundle: 'bundleName' }, function (err, data) { A.isObject(err); A.isUndefined(data); }); }); } })); YUITest.TestRunner.add(suite);