lego-core 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,22 @@
1
+ require File.join('spec', '/spec_helper')
2
+
3
+ describe Lego::Plugin::Controller::NotFound do
4
+
5
+ it 'should register itself' do
6
+ lego = mock('Lego')
7
+ lego.should_receive('add_plugin').with(:controller, Lego::Plugin::Controller::NotFound)
8
+ Lego::Plugin::Controller::NotFound.register(lego)
9
+ end
10
+
11
+ it 'should add a :not_found route to lego controller' do
12
+ class TestPlugin
13
+ extend Lego::Plugin::Controller::NotFound
14
+ end
15
+ block = lambda { "test" }
16
+ TestPlugin.should_receive(:add_route).with(:not_found, { :set_response_code => 404, :action_block => block})
17
+ TestPlugin.not_found(&block)
18
+ rm_const 'TestPlugin'
19
+ end
20
+
21
+ end
22
+
File without changes
data/spec/lego_spec.rb ADDED
@@ -0,0 +1,90 @@
1
+ require File.join('spec', '/spec_helper')
2
+
3
+ describe Lego do
4
+
5
+ context 'module' do
6
+ it 'should contain a Controller Class' do
7
+ Lego::Controller.should_not be_nil
8
+ end
9
+
10
+ it 'should have a plugin method to load plugins globally' do
11
+ Lego.should respond_to(:plugin)
12
+ end
13
+
14
+ it 'should have a version' do
15
+ Lego.version.should == Lego::VERSION.join('.')
16
+ end
17
+
18
+ it "should provide a global set" do
19
+ Lego.set(:foo => "bar")
20
+ Lego::Controller.current_config.config.should eql({"foo"=>"bar"})
21
+ end
22
+
23
+ it "should provide a global config" do
24
+ Lego.config do
25
+ set :foo => "bar"
26
+ set :baz => "quux"
27
+ end
28
+
29
+ Lego::Controller.current_config.config.should eql({"foo"=>"bar","baz"=>"quux"})
30
+ end
31
+ end
32
+
33
+ context '.plugin <plugin_module>' do
34
+ it 'should call add_plugin on controller' do
35
+ mymod = mock("MyModule")
36
+ mymod.should_receive(:register).with(Lego::Controller)
37
+ Lego.plugin mymod
38
+ end
39
+
40
+ context 'when plugin context is :controller' do
41
+ before do
42
+ reset_lego_base
43
+ end
44
+ it 'should be injected to Lego::Controller base' do
45
+ module MyPlug
46
+ def self.register(lego)
47
+ lego.add_plugin :controller, self
48
+ end
49
+ def get_something; end
50
+ end
51
+ Lego::Controller.should_not respond_to(:get_something)
52
+ Lego.plugin MyPlug
53
+ create_new_app("MyApp1", Lego::Controller)
54
+ create_new_app("MyApp2", Lego::Controller)
55
+ MyApp1.should respond_to(:get_something)
56
+ end
57
+
58
+ after do
59
+ rm_const "MyPlug", "MyApp1", "MyApp2"
60
+ end
61
+ end
62
+
63
+ context 'when plugin context is :router' do
64
+ before do
65
+ reset_lego_base
66
+ end
67
+ it 'should be injected to Lego::Controller::RouteHandler base' do
68
+ module GlobalPlugX
69
+ def self.register(lego)
70
+ lego.add_plugin :router, self
71
+ end
72
+
73
+ def another_routehandler
74
+ add_route(:get, {})
75
+ end
76
+
77
+ def self.match_route(route, env); end
78
+ end
79
+
80
+ Lego.plugin GlobalPlugX
81
+ Lego::Controller::RouteHandler.matchers.should eql([GlobalPlugX])
82
+ end
83
+
84
+ after do
85
+ rm_const "GlobalPlug"
86
+ end
87
+ end
88
+ end
89
+
90
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,42 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'lib'))
3
+
4
+ require 'lib/lego'
5
+ require 'spec'
6
+
7
+ def create_new_app(class_name, baseclass = Class)
8
+ Object.class_eval do
9
+ remove_const class_name.to_sym if const_defined? class_name
10
+ end
11
+ Object.const_set(class_name.to_sym, Class.new(baseclass))
12
+ end
13
+
14
+ def rm_const(*const_name)
15
+ const_name = [const_name] if const_name.kind_of?(String)
16
+ Object.class_eval do
17
+ const_name.each do |constant|
18
+ remove_const constant.to_sym if const_defined? constant
19
+ end
20
+ end
21
+ end
22
+
23
+ def reset_lego_base
24
+ return if not Object.const_defined? :Lego
25
+ Lego.class_eval do
26
+ Lego::Controller.class_eval do
27
+ remove_const :RouteHandler if const_defined? :RouteHandler
28
+ remove_const :ActionContext if const_defined? :ActionContext
29
+ end
30
+ remove_const :Controller if const_defined? :Controller
31
+ end
32
+ Object.class_eval do
33
+ remove_const :Lego
34
+ end
35
+ load 'lib/lego.rb'
36
+ load 'lib/lego/plugin.rb'
37
+ load 'lib/lego/plugin/controller/not_found.rb'
38
+ load 'lib/lego/controller.rb'
39
+ load 'lib/lego/controller/route_handler.rb'
40
+ load 'lib/lego/controller/action_context.rb'
41
+ load 'lib/lego/controller/config.rb'
42
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lego-core
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - "Mathias Stjernstr\xC3\xB6m"
8
+ - Patrik Hedman
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2010-01-12 00:00:00 +01:00
14
+ default_executable:
15
+ dependencies: []
16
+
17
+ description: It's all about the bits and peices
18
+ email: mathias@globalinn.com
19
+ executables: []
20
+
21
+ extensions: []
22
+
23
+ extra_rdoc_files:
24
+ - README.rdoc
25
+ files:
26
+ - .gitignore
27
+ - README.rdoc
28
+ - Rakefile
29
+ - VERSION
30
+ - examples/config.ru
31
+ - lego-core.gemspec
32
+ - lib/lego.rb
33
+ - lib/lego/controller.rb
34
+ - lib/lego/controller/action_context.rb
35
+ - lib/lego/controller/config.rb
36
+ - lib/lego/controller/route_handler.rb
37
+ - lib/lego/plugin.rb
38
+ - lib/lego/plugin/controller/not_found.rb
39
+ - spec/integration/test_full_stack_spec.rb
40
+ - spec/lego/controller/action_context_spec.rb
41
+ - spec/lego/controller/config_spec.rb
42
+ - spec/lego/controller/route_handler_spec.rb
43
+ - spec/lego/controller_spec.rb
44
+ - spec/lego/plugin/controller/not_found_spec.rb
45
+ - spec/lego/plugin_spec.rb
46
+ - spec/lego_spec.rb
47
+ - spec/spec.opts
48
+ - spec/spec_helper.rb
49
+ has_rdoc: true
50
+ homepage: http://github.com/stjernstrom/lego-core
51
+ licenses: []
52
+
53
+ post_install_message:
54
+ rdoc_options:
55
+ - --charset=UTF-8
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: "0"
63
+ version:
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: "0"
69
+ version:
70
+ requirements: []
71
+
72
+ rubyforge_project:
73
+ rubygems_version: 1.3.5
74
+ signing_key:
75
+ specification_version: 3
76
+ summary: It's all about the bits and peices
77
+ test_files:
78
+ - spec/integration/test_full_stack_spec.rb
79
+ - spec/lego/controller/action_context_spec.rb
80
+ - spec/lego/controller/config_spec.rb
81
+ - spec/lego/controller/route_handler_spec.rb
82
+ - spec/lego/controller_spec.rb
83
+ - spec/lego/plugin/controller/not_found_spec.rb
84
+ - spec/lego/plugin_spec.rb
85
+ - spec/lego_spec.rb
86
+ - spec/spec_helper.rb