describe('getSubviews()', function () {
     var subviewFlapjacks = {
         one: function (div) { return div('hello'); },
         two: function (div) { return div('world'); }
     };
     var actual = jng.getSubviews.call(context, subviewFlapjacks);
     jangular.render(actual.one).should.equal('<div>hello</div>');
     jangular.render(actual.two).should.equal('<div>world</div>');
 });
    describe('initDirectives()', function () {
        var obj = {};
        jangular.addShortcutsToScope(obj);

        jng.initDirectives.call(context, { componentPrefix: 'pan' });
        var template = obj.div({ 'pan-fakesimple': null });
        var expected = '<div pan-fakesimple><span>hello, world</span></div>';
        var actual =    jangular.render(template);
        actual.should.equal(expected);
    });
        it('should render a partial', function () {
            var partial = { view: function (div) {
                return div('hello, world');
            }};
            var model = {};
            var expected = '<div>hello, world</div>';

            var fn = jng.getPartialRenderFn.call(context, partial);
            var renderedView = fn(model, {}, {});
            jangular.render(renderedView).should.equal(expected);
        });
        it('should ensure that bo-title works with foo[bar[\'baz\']][wah.zam][zoom].doot', function () {
            var obj = {};
            jangular.addShortcutsToScope(obj);

            jng.initDirectives.call(context, { componentPrefix: 'pan' });
            var template = obj.div({ 'bo-title': 'foo[bar[\'baz\']][wah.zam][zoom].doot' });
            var expected = '<div bo-title="foo[bar[\'baz\']][wah.zam][zoom].doot" title="holy crap!"></div>';
            var actual =    jangular.render(template, {foo: {wah: { hey: {goo: {doot: 'holy crap!'}}}}, bar: {baz: 'wah'}, wah: {zam: 'hey'}, zoom: 'goo'});
            actual.should.equal(expected);

        });
        it('should ensure that bo-title works with foo[bar].baz', function () {
            var obj = {};
            jangular.addShortcutsToScope(obj);

            jng.initDirectives.call(context, { componentPrefix: 'pan' });
            var template = obj.div({ 'bo-title': 'foo[bar].baz' });
            var expected = '<div bo-title="foo[bar].baz" title="holy crap!"></div>';
            var actual =    jangular.render(template, {foo: {wah: {baz: 'holy crap!'}}, bar: 'wah'});
            actual.should.equal(expected);

        });
        it('should ensure that bo-title works', function () {
            var obj = {};
            jangular.addShortcutsToScope(obj);

            jng.initDirectives.call(context, { componentPrefix: 'pan' });
            var template = obj.div({ 'bo-title': 'foo' });
            var expected = '<div bo-title="foo" title="bar"></div>';
            var actual =    jangular.render(template, {foo: 'bar'});
            actual.should.equal(expected);

        });
Beispiel #7
0
        .then(function (model) {

            // this is similar to both jng.pages renderPage() and jng.directives
            // as well as ng.uipart.template (for client side pages and partials)
            me.attachToScope(model, sideview.attachToScope);

            // generate the partial view
            var viewDeps = { model: model, subviews: me.getSubviews(sideview.subviews) };
            _.extend(viewDeps, me.getJangularDeps());
            var view = me.pancakes.cook(sideview.view, { dependencies: viewDeps });
            return jangular.render(view, model, { strip: routeInfo.strip });
        });
Beispiel #8
0
        .then(function (sideview) {

            // make some angular-specific modifications to the model before we render
            me.setDefaults(model, page.defaults, null);
            me.applyPresets(model, page.defaults, page.presets);
            me.attachToScope(model, page.attachToScope);
            me.addFiltersToModel(model, routeInfo.appName);

            // if any subviews, put them in an object
            _.each(page.subviews, function (subview, subviewName) {
                subviews[subviewName] = me.pancakes.cook(subview, { dependencies: jangularDeps });
            });

            // get the view
            _.extend(pageDeps, jangularDeps, { subviews: subviews });
            var view = me.pancakes.cook(page.view, { dependencies: pageDeps });
            var renderedPage = jangular.render(view, model, { strip: routeInfo.strip, isAmp: routeInfo.isAmp });

            // if layout exists, need to put the page content within the layout
            if (isLayout) {
                _.extend(pageDeps, { pageContent: renderedPage, sideviewContent: sideview });
                renderedPage = me.renderLayout(appName, routeInfo.layout, routeInfo.isAmp, pageDeps);
            }

            // if page wrapper exists, put rendered page in that
            if (isLayout) {
                _.extend(pageDeps, { pageContent: renderedPage, routeInfo: routeInfo, inlineCss: inlineCss });
                renderedPage = me.renderLayout(appName, routeInfo.wrapper, routeInfo.isAmp, pageDeps);
            }

            // special one off thing for AMP pages
            if (routeInfo.isAmp && renderedPage.substring(0, 5) === '<html') {
                renderedPage = '<!DOCTYPE html>' + renderedPage;
            }

            return renderedPage;
        });
Beispiel #9
0
/**
 * Get a particular layout
 * @param appName
 * @param layoutName
 * @param isAmp
 * @param dependencies
 */
function renderLayout(appName, layoutName, isAmp, dependencies) {
    var layout = this.pancakes.cook('app/' + appName + '/layouts/' + layoutName + '.layout');
    var layoutView = this.pancakes.cook(layout.view, { dependencies: dependencies });
    return jangular.render(layoutView, dependencies.model, { strip: false, isAmp: isAmp });
}