brisket/brisket

View on GitHub
benchmarks/serverRouteDispatch.js

Summary

Maintainability
A
50 mins
Test Coverage
"use strict";

const Benchmark = require("benchmark");
const prettyOutput = require("beautify-benchmark");
const Brisket = require("../lib/brisket");
const BrisketTesting = require("../testing");
const ServerDispatcher = require("../lib/server/ServerDispatcher");

BrisketTesting.setup();

const Layout = Brisket.Layout.extend({

    template: "<!DOCTYPE html>\n<html><head><title>sample</title></head><body></body></html>",

    content: "body"

});

const Router = Brisket.Router.extend({

    layout: Layout,

    routes: {
        "path": "handler"
    },

    handler: function() {
        return new Brisket.View()
            .withMetatags(new Brisket.Layout.Metatags({
                "canonical": "http://www.example.com",
                "description": "summary",
                "og:image": "http://www.example.com/image.png",
                "twitter:card": "summary",
                "twitter:site": "business",
                "twitter:description": "summary",
                "twitter:title": "title",
                "twitter:url": "url",
                "og:description": "summary",
                "og:title": "title",
                "og:url": "url",
                "parsely-title": "title",
                "parsely-link": "url",
                "parsely-type": "frontpage",
                "parsely-section": "home"
            }));
    }

});

new Router();

const mockRequest = {
    protocol: "http",
    path: "/requested/path",
    host: "example.com",
    headers: {
        "host": "example.com:8080",
        "referer": "theReferrer.com",
        "user-agent": "A wonderful computer"
    },
    query: {
        some: "param",
        another: {
            param: "value"
        }
    },
    originalUrl: "/requested/path?some=param&another%5Bparam%5D=value"
};

const suite = new Benchmark.Suite("Server route dispatch", {
    onStart() {
        /* eslint-disable no-console */
        console.log(`${ this.name }:`);
    }
});

suite
    .add({
        name: "with simple View",
        maxTime: 2,
        defer: true,
        "fn": function(deferred) {
            ServerDispatcher.dispatch("path", mockRequest, {})
                .content
                .then(function() {
                    deferred.resolve();
                });
        }
    })

    .on("cycle", function(event) {
        prettyOutput.add(event.target);
    })
    .on("complete", function() {
        prettyOutput.log();
    })
    .run();