From 55b98fed77e1f8c30b9526b193803e642aaf5c30 Mon Sep 17 00:00:00 2001 From: kbparagua Date: Sat, 12 Oct 2013 17:59:22 +0800 Subject: [PATCH] Spec for ControllerBuilder --- .../javascripts/controller_builder_spec.js | 48 +++++++++++++++++++ .../assets/javascripts/paloma/controller.js | 10 ++++ .../javascripts/paloma/controller_builder.js | 6 ++- vendor/assets/javascripts/paloma/index.js | 1 + 4 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 test_app/spec/javascripts/controller_builder_spec.js create mode 100644 vendor/assets/javascripts/paloma/controller.js diff --git a/test_app/spec/javascripts/controller_builder_spec.js b/test_app/spec/javascripts/controller_builder_spec.js new file mode 100644 index 0000000..c7a62ee --- /dev/null +++ b/test_app/spec/javascripts/controller_builder_spec.js @@ -0,0 +1,48 @@ + +describe('Paloma.ControllerFactory', function(){ + + var router = new Paloma.Router({namespace: '/', action: '#'}); + + + describe('#make(name)', function(){ + var factory = new Paloma.ControllerFactory(router), + Controller; + + beforeEach(function(){ + Controller = factory.make('Resource'); + }); + + + it('returns a new Controller constructor', function(){ + expect(typeof Controller).toEqual('function'); + }); + + it('saves the Controller constructor', function(){ + expect(factory.get('Resource')).toEqual(Controller); + }); + }); + + + + + + describe('#get(name)', function(){ + var factory = new Paloma.ControllerFactory(router), + Controller = factory.make('Foo'); + + describe('when controller exists', function(){ + it('returns the controller', function(){ + expect(factory.get('Foo')).toEqual(Controller); + }); + }); + + + describe('when controller does not exist', function(){ + it('returns null', function(){ + expect(factory.get('WhatTheFuck')).toBeNull(); + }); + }); + + }); + +}); \ No newline at end of file diff --git a/vendor/assets/javascripts/paloma/controller.js b/vendor/assets/javascripts/paloma/controller.js new file mode 100644 index 0000000..01badd8 --- /dev/null +++ b/vendor/assets/javascripts/paloma/controller.js @@ -0,0 +1,10 @@ +(function(Paloma){ + + var Controller = function(params){ + this.params = params; + }; + + + Paloma.Controller = Controller; + +})(window.Paloma); \ No newline at end of file diff --git a/vendor/assets/javascripts/paloma/controller_builder.js b/vendor/assets/javascripts/paloma/controller_builder.js index ec35192..23c34b0 100644 --- a/vendor/assets/javascripts/paloma/controller_builder.js +++ b/vendor/assets/javascripts/paloma/controller_builder.js @@ -38,7 +38,11 @@ var createConstructor = function(){ - var constructor = function(params){ this.params = params; }; + var constructor = function(params){ this.params = params; } + + $.extend(constructor, Paloma.Controller); + $.extend(constructor.prototype, Paloma.Controller.prototype); + return constructor; }; diff --git a/vendor/assets/javascripts/paloma/index.js b/vendor/assets/javascripts/paloma/index.js index 4b6402d..5946351 100644 --- a/vendor/assets/javascripts/paloma/index.js +++ b/vendor/assets/javascripts/paloma/index.js @@ -1,4 +1,5 @@ //= require ./init.js //= require ./router.js +//= require ./controller.js //= require ./controller_builder.js //= require ./paloma.js \ No newline at end of file