brisket/brisket

View on GitHub
spec/mock/MockBrisketApp.js

Summary

Maintainability
B
6 hrs
Test Coverage
"use strict";

var Brisket = require("../../lib/brisket");
var Backbone = Brisket.Backbone;
var ServerDispatcher = require("../../lib/server/ServerDispatcher");
var App = require("../../lib/application/App");

var MockBrisketApp = {

    initialize() {
        var Layout = Brisket.Layout.extend({
            template: "<!DOCTYPE html>\n<html><head><title>New App</title></head><body></body></html>",
            content: "body"
        });

        var PageNotFoundView = Brisket.View.extend({ className: "not-found" });
        var ErrorView = Brisket.View.extend({ className: "errored" });

        var Router = Brisket.Router.extend({

            layout: Layout,

            errorViewMapping: {
                404: PageNotFoundView,
                500: ErrorView
            },

            routes: {
                "working": "working",
                "failing": "failing",
                "redirecting": "redirecting",
                "setsStatus": "setsStatus",
                "fetch200": "fetch200",
                "fetch200ButRouteFails": "fetch200ButRouteFails",
                "fetch200ButRouteRedirects": "fetch200ButRouteRedirects",
                "fetch200ButRouteSetsStatus": "fetch200ButRouteSetsStatus",
                "fetch404": "fetch404",
                "fetch500": "fetch500",
                "fetch410": "fetch410"
            },

            working() {
                return new Brisket.View();
            },

            failing() {
                willThrow();

                return new Brisket.View();
            },

            redirecting(setLayoutData, request, response) {
                response.redirect("/working");

                return new Brisket.View();
            },

            setsStatus(setLayoutData, request, response) {
                response.status(206);

                return new Brisket.View();
            },

            fetch200() {
                return Backbone.ajax({
                    url: "/api/fetch200"
                })
                .then(function() {
                    return new Brisket.View();
                });
            },

            fetch200ButRouteFails() {
                return Backbone.ajax({
                    url: "/api/fetch200"
                })
                .then(function() {
                    willThrow();

                    return new Brisket.View();
                });
            },

            fetch200ButRouteRedirects(setLayoutData, request, response) {
                return Backbone.ajax({
                    url: "/api/fetch200"
                })
                .then(function() {
                    response.redirect("/working");

                    return new Brisket.View();
                });
            },

            fetch200ButRouteSetsStatus(setLayoutData, request, response) {
                return Backbone.ajax({
                    url: "/api/fetch200"
                })
                .then(function() {
                    response.status(206);

                    return new Brisket.View();
                });
            },

            fetch404() {
                return Backbone.ajax({
                    url: "/api/fetch404"
                })
                .then(function() {
                    return new Brisket.View();
                });
            },

            fetch500() {
                return Backbone.ajax({
                    url: "/api/fetch500"
                })
                .then(function() {
                    return new Brisket.View();
                });
            },

            fetch410() {
                return Backbone.ajax({
                    url: "/api/fetch410"
                })
                .then(function() {
                    return new Brisket.View();
                });
            }

        });

        new Router();
    },

    cleanup() {
        ServerDispatcher.reset();
        App.reset();
    }

};

function willThrow() {
    throw "an error";
}

module.exports = MockBrisketApp;