controll 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +19 -0
- data/Gemfile.lock +134 -0
- data/LICENSE.txt +20 -0
- data/README.md +320 -0
- data/Rakefile +49 -0
- data/VERSION +1 -0
- data/controll.gemspec +184 -0
- data/lib/controll.rb +14 -0
- data/lib/controll/assistant.rb +19 -0
- data/lib/controll/command.rb +24 -0
- data/lib/controll/commander.rb +24 -0
- data/lib/controll/errors.rb +1 -0
- data/lib/controll/executor.rb +6 -0
- data/lib/controll/executor/base.rb +16 -0
- data/lib/controll/executor/notificator.rb +12 -0
- data/lib/controll/flow_handler.rb +11 -0
- data/lib/controll/flow_handler/base.rb +19 -0
- data/lib/controll/flow_handler/control.rb +85 -0
- data/lib/controll/flow_handler/errors.rb +5 -0
- data/lib/controll/flow_handler/event_helper.rb +18 -0
- data/lib/controll/flow_handler/redirect.rb +51 -0
- data/lib/controll/flow_handler/redirect/action.rb +45 -0
- data/lib/controll/flow_handler/redirect/mapper.rb +41 -0
- data/lib/controll/flow_handler/render.rb +51 -0
- data/lib/controll/helper.rb +101 -0
- data/lib/controll/helper/event_matcher.rb +21 -0
- data/lib/controll/helper/hash_access.rb +26 -0
- data/lib/controll/helper/notify.rb +74 -0
- data/lib/controll/helper/params.rb +20 -0
- data/lib/controll/helper/path_resolver.rb +45 -0
- data/lib/controll/helper/session.rb +20 -0
- data/lib/controll/notify.rb +7 -0
- data/lib/controll/notify/base.rb +75 -0
- data/lib/controll/notify/flash.rb +52 -0
- data/lib/controll/notify/typed.rb +39 -0
- data/spec/acceptance/app_test.rb +156 -0
- data/spec/app/.gitignore +15 -0
- data/spec/app/Gemfile +6 -0
- data/spec/app/Gemfile.lock +108 -0
- data/spec/app/README.rdoc +261 -0
- data/spec/app/Rakefile +7 -0
- data/spec/app/app/controllers/application_controller.rb +6 -0
- data/spec/app/app/controllers/posts_controller.rb +52 -0
- data/spec/app/app/models/.gitkeep +0 -0
- data/spec/app/app/models/post.rb +88 -0
- data/spec/app/app/views/layouts/application.html.erb +13 -0
- data/spec/app/app/views/posts/_form.html.erb +31 -0
- data/spec/app/app/views/posts/edit.html.erb +6 -0
- data/spec/app/app/views/posts/index.html.erb +23 -0
- data/spec/app/app/views/posts/new.html.erb +5 -0
- data/spec/app/app/views/posts/show.html.erb +8 -0
- data/spec/app/config.ru +4 -0
- data/spec/app/config/application.rb +16 -0
- data/spec/app/config/boot.rb +6 -0
- data/spec/app/config/environment.rb +5 -0
- data/spec/app/config/environments/development.rb +21 -0
- data/spec/app/config/environments/test.rb +29 -0
- data/spec/app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/app/config/initializers/inflections.rb +15 -0
- data/spec/app/config/initializers/mime_types.rb +5 -0
- data/spec/app/config/initializers/secret_token.rb +7 -0
- data/spec/app/config/initializers/session_store.rb +8 -0
- data/spec/app/config/locales/en.yml +5 -0
- data/spec/app/config/routes.rb +62 -0
- data/spec/app/db/seeds.rb +7 -0
- data/spec/app/lib/assets/.gitkeep +0 -0
- data/spec/app/lib/tasks/.gitkeep +0 -0
- data/spec/app/log/.gitkeep +0 -0
- data/spec/app/public/404.html +26 -0
- data/spec/app/public/422.html +26 -0
- data/spec/app/public/500.html +25 -0
- data/spec/app/public/favicon.ico +0 -0
- data/spec/app/public/index.html +241 -0
- data/spec/app/public/javascripts/application.js +9663 -0
- data/spec/app/public/robots.txt +5 -0
- data/spec/app/public/stylesheets/application.css +83 -0
- data/spec/app/script/rails +6 -0
- data/spec/app/spec/controllers/posts_controller_spec.rb +59 -0
- data/spec/app/spec/isolated_spec_helper.rb +6 -0
- data/spec/app/spec/spec_helper.rb +5 -0
- data/spec/app/spec/unit/controllers/posts_controller_isolated_spec.rb +63 -0
- data/spec/app/spec/unit/controllers/posts_controller_spec.rb +59 -0
- data/spec/app/test/functional/.gitkeep +0 -0
- data/spec/app/test/functional/posts_controller_test.rb +67 -0
- data/spec/app/test/isolated_test_helper.rb +7 -0
- data/spec/app/test/test_helper.rb +6 -0
- data/spec/app/test/unit/.gitkeep +0 -0
- data/spec/app/test/unit/controllers/posts_controller_isolated_test.rb +71 -0
- data/spec/app/test/unit/controllers/posts_controller_test.rb +67 -0
- data/spec/app/vendor/assets/javascripts/.gitkeep +0 -0
- data/spec/app/vendor/assets/stylesheets/.gitkeep +0 -0
- data/spec/app/vendor/plugins/.gitkeep +0 -0
- data/spec/controll/asssistant_spec.rb +5 -0
- data/spec/controll/command_spec.rb +56 -0
- data/spec/controll/commander_spec.rb +68 -0
- data/spec/controll/executor/notificator_spec.rb +27 -0
- data/spec/controll/flow_handler/control_spec.rb +159 -0
- data/spec/controll/flow_handler/redirect/action_spec.rb +48 -0
- data/spec/controll/flow_handler/redirect/mapper_spec.rb +69 -0
- data/spec/controll/flow_handler/redirect_spec.rb +93 -0
- data/spec/controll/flow_handler/render_spec.rb +110 -0
- data/spec/controll/helper/event_matcher_spec.rb +21 -0
- data/spec/controll/helper/hash_access_spec.rb +25 -0
- data/spec/controll/helper/notify_spec.rb +48 -0
- data/spec/controll/helper/params_spec.rb +28 -0
- data/spec/controll/helper/path_resolver_spec.rb +49 -0
- data/spec/controll/helper/session_spec.rb +28 -0
- data/spec/controll/helper_spec.rb +108 -0
- data/spec/controll/notify/base_spec.rb +123 -0
- data/spec/controll/notify/flash_spec.rb +27 -0
- data/spec/controll/notify/message_handler.rb +72 -0
- data/spec/controll/notify/typed_spec.rb +28 -0
- data/spec/functional_test_helper.rb +25 -0
- data/spec/helper.rb +33 -0
- data/spec/rspec_controller_class.rb +15 -0
- data/spec/rspec_functional_helper.rb +25 -0
- data/spec/rspec_helper.rb +42 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/test_helper.rb +183 -0
- data/spec/unit/functional_test_helper_test.rb +65 -0
- data/spec/unit/macros_test.rb +43 -0
- data/spec/unit/mixin_test.rb +147 -0
- data/spec/unit/rspec_functional_helper.rb +42 -0
- data/spec/unit/rspec_helper_test.rb +91 -0
- data/spec/unit/test_helper_test.rb +235 -0
- metadata +289 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
def notice name
|
|
4
|
+
Hashie::Mash.new(name: name.to_sym, type: :notice)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def error name
|
|
8
|
+
Hashie::Mash.new(name: name.to_sym, type: :error)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe Controll::FlowHandler::Redirect::Mapper do
|
|
12
|
+
let(:redirections) do
|
|
13
|
+
{
|
|
14
|
+
:error => error_map, :notice => notice_map
|
|
15
|
+
}
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
let(:notice_map) do
|
|
19
|
+
{:welcome => valid_events }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
let(:valid_events) { [:hello, :hi] }
|
|
23
|
+
let(:invalid_events) { [:blip, :blap] }
|
|
24
|
+
|
|
25
|
+
let(:error_map) do
|
|
26
|
+
{bad: ['bad_payment', 'wrong_payment'] }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
let(:types) { [:notice, :error] }
|
|
30
|
+
|
|
31
|
+
context 'use' do
|
|
32
|
+
subject { clazz.new hello, notice_map }
|
|
33
|
+
|
|
34
|
+
let(:clazz) { Controll::FlowHandler::Redirect::Mapper }
|
|
35
|
+
let(:hello) { notice :hello }
|
|
36
|
+
let(:bad_payment) { error :bad_payment }
|
|
37
|
+
|
|
38
|
+
describe '.initialize' do
|
|
39
|
+
its(:event) { should == hello }
|
|
40
|
+
its(:redirect_map) { should == notice_map }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe '.map' do
|
|
44
|
+
specify do
|
|
45
|
+
subject.map.should == 'welcome'
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe '.matcher event' do
|
|
50
|
+
specify do
|
|
51
|
+
subject.send(:matcher, hello).should be_a Controll::Helper::EventMatcher
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
specify do
|
|
55
|
+
subject.send(:matcher, hello).event.should == hello
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe '.valid?' do
|
|
60
|
+
specify do
|
|
61
|
+
subject.send(:valid?, valid_events).should be_true
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
specify do
|
|
65
|
+
subject.send(:valid?, invalid_events).should be_false
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class HelloToWelcomeRedirect < Controll::FlowHandler::Redirect
|
|
4
|
+
set_redirections :welcome => [:hello, :hi]
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
class ErrorBadRedirect < Controll::FlowHandler::Redirect
|
|
8
|
+
set_redirections :error, bad: ['bad_payment', 'wrong_payment']
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def notification name
|
|
12
|
+
Hashie::Mash.new(name: name.to_sym, type: :notice)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def error name
|
|
16
|
+
Hashie::Mash.new(name: name.to_sym, type: :error)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe Controll::FlowHandler::Redirect do
|
|
20
|
+
|
|
21
|
+
describe 'class macros' do
|
|
22
|
+
before :all do
|
|
23
|
+
ErrorBadRedirect.set_redirections :error, crap: ['bad_payment', 'wrong_payment']
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
specify {
|
|
27
|
+
ErrorBadRedirect.redirections_for(:error).should == {crap: ['bad_payment', 'wrong_payment']}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
specify {
|
|
31
|
+
ErrorBadRedirect.redirections.should == {error: {crap: ['bad_payment', 'wrong_payment']} }
|
|
32
|
+
}
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# context 'use directly without subclassing' do
|
|
36
|
+
# subject { clazz.new '/' }
|
|
37
|
+
|
|
38
|
+
# let(:clazz) { Controll::FlowHandler::Redirect }
|
|
39
|
+
|
|
40
|
+
# let(:hello) { notification :hello }
|
|
41
|
+
|
|
42
|
+
# describe '.action event' do
|
|
43
|
+
# specify do
|
|
44
|
+
# expect { clazz.action(:hello) }.to raise_error(Controll::FlowHandler::Redirect::NoRedirectionFoundError)
|
|
45
|
+
# end
|
|
46
|
+
# end
|
|
47
|
+
# end
|
|
48
|
+
|
|
49
|
+
# context 'HelloToWelcomeRedirect subclass' do
|
|
50
|
+
# subject { clazz.new '/' }
|
|
51
|
+
|
|
52
|
+
# let(:clazz) { HelloToWelcomeRedirect }
|
|
53
|
+
|
|
54
|
+
# context 'has redirections' do
|
|
55
|
+
# describe '.action event' do
|
|
56
|
+
# specify do
|
|
57
|
+
# expect { clazz.action(:hello) }.to_not raise_error(Controll::FlowHandler::Redirect::NoRedirectionFoundError)
|
|
58
|
+
# end
|
|
59
|
+
|
|
60
|
+
# specify do
|
|
61
|
+
# clazz.action(:hello).should be_a HelloToWelcomeRedirect
|
|
62
|
+
# end
|
|
63
|
+
|
|
64
|
+
# specify do
|
|
65
|
+
# clazz.action(:hi).path.should == 'welcome'
|
|
66
|
+
# end
|
|
67
|
+
# end
|
|
68
|
+
# end
|
|
69
|
+
# end
|
|
70
|
+
|
|
71
|
+
context 'ErrorBadRedirect subclass' do
|
|
72
|
+
subject { clazz.new '/' }
|
|
73
|
+
|
|
74
|
+
let(:clazz) { ErrorBadRedirect }
|
|
75
|
+
|
|
76
|
+
context 'has error redirections' do
|
|
77
|
+
describe '.action event' do
|
|
78
|
+
specify do
|
|
79
|
+
expect { clazz.action(:hello) }.to raise_error(Controll::FlowHandler::NoRedirectionFoundError)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
specify do
|
|
83
|
+
clazz.action(error :bad_payment).should be_a ErrorBadRedirect
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
specify do
|
|
87
|
+
clazz.action(error :wrong_payment).path.should == 'crap'
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class NoEventsRender < Controll::FlowHandler::Render
|
|
4
|
+
def self.events
|
|
5
|
+
[]
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class HiRender < Controll::FlowHandler::Render
|
|
10
|
+
def self.events
|
|
11
|
+
[:hi]
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class HelloRender < Controll::FlowHandler::Render
|
|
16
|
+
set_events :hello, :damn
|
|
17
|
+
set_default_path '/default'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def notification name
|
|
21
|
+
Hashie::Mash.new(name: name.to_sym, type: :notification)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe Controll::FlowHandler::Render do
|
|
25
|
+
|
|
26
|
+
context 'use directly without sublclassing' do
|
|
27
|
+
subject { clazz.new '/' }
|
|
28
|
+
|
|
29
|
+
let(:clazz) { Controll::FlowHandler::Render }
|
|
30
|
+
|
|
31
|
+
let(:hello) { notification :hello }
|
|
32
|
+
|
|
33
|
+
describe '.action event' do
|
|
34
|
+
specify do
|
|
35
|
+
expect { clazz.action(:hello) }.to raise_error(Controll::FlowHandler::NoEventsDefinedError)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context 'NoEventsRender subclass' do
|
|
41
|
+
subject { clazz.new '/' }
|
|
42
|
+
|
|
43
|
+
let(:clazz) { NoEventsRender }
|
|
44
|
+
|
|
45
|
+
context 'empty events' do
|
|
46
|
+
describe '.action event' do
|
|
47
|
+
specify do
|
|
48
|
+
expect { clazz.action(:hello) }.to raise_error(Controll::FlowHandler::NoEventsDefinedError)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
context 'HiRender subclass' do
|
|
55
|
+
subject { clazz.new '/' }
|
|
56
|
+
|
|
57
|
+
let(:clazz) { HiRender }
|
|
58
|
+
let(:event) { notification :hello }
|
|
59
|
+
|
|
60
|
+
context 'has events' do
|
|
61
|
+
describe '.action event' do
|
|
62
|
+
|
|
63
|
+
describe 'does not respond to hello' do
|
|
64
|
+
specify do
|
|
65
|
+
expect { clazz.action(:hello) }.to_not raise_error(Controll::FlowHandler::Render::NoEventsDefinedError)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
specify do
|
|
69
|
+
clazz.action(event).should == nil
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
specify do
|
|
73
|
+
clazz.action(:hello).should == nil
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
describe 'responds to hi' do
|
|
78
|
+
# default_path not implemented!
|
|
79
|
+
specify do
|
|
80
|
+
expect { clazz.action(:hi) }.to raise_error NotImplementedError
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
context 'HelloRender subclass' do
|
|
88
|
+
subject { clazz.new default_path }
|
|
89
|
+
|
|
90
|
+
let(:clazz) { HelloRender }
|
|
91
|
+
let(:event) { notification :hello }
|
|
92
|
+
let(:default_path) { '/default' }
|
|
93
|
+
|
|
94
|
+
context 'has events and default_path' do
|
|
95
|
+
describe '.action event' do
|
|
96
|
+
specify do
|
|
97
|
+
clazz.action(event).should be_a HelloRender
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
specify do
|
|
101
|
+
clazz.action(event).path.should == default_path
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
specify do
|
|
105
|
+
clazz.action(event, 'other_path').path.should == 'other_path'
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Controll::Helper::EventMatcher do
|
|
4
|
+
subject { Controll::Helper::EventMatcher.new event }
|
|
5
|
+
|
|
6
|
+
let(:events) { %w{sign_in sign_out} }
|
|
7
|
+
let(:bad_events) { %w{bad stuff} }
|
|
8
|
+
|
|
9
|
+
let(:event) { 'sign_in' }
|
|
10
|
+
let(:bad_event) { 'unknown' }
|
|
11
|
+
|
|
12
|
+
describe '.initialize event' do
|
|
13
|
+
its(:event) { should == 'sign_in' }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe '.match? events' do
|
|
17
|
+
specify { subject.match?(events).should be_true }
|
|
18
|
+
|
|
19
|
+
specify { subject.match?(bad_events).should be_false }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class Hasher
|
|
4
|
+
include Controll::Helper::HashAccess
|
|
5
|
+
|
|
6
|
+
attr_reader :params
|
|
7
|
+
|
|
8
|
+
def initialize params = nil
|
|
9
|
+
@params = params || {name: 'kris'}
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe Controll::Helper::HashAccess do
|
|
14
|
+
|
|
15
|
+
subject { clazz.new }
|
|
16
|
+
let(:clazz) { Hasher }
|
|
17
|
+
|
|
18
|
+
describe '.hash_access_methods *args' do
|
|
19
|
+
before :all do
|
|
20
|
+
clazz.hash_access_methods :name, hash: :params
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
specify { subject.name.should == 'kris' }
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class Notifier
|
|
4
|
+
include Controll::Helper::Notify
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe Controll::Helper::Notify do
|
|
8
|
+
subject { Notifier.new }
|
|
9
|
+
|
|
10
|
+
context 'initial state' do
|
|
11
|
+
describe '.notifications' do
|
|
12
|
+
its(:notifications) { should be_empty }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe '.main_event' do
|
|
16
|
+
its(:main_event) { should be_a Hashie::Mash }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe '.create_notification' do
|
|
20
|
+
specify { subject.send(:create_notification, :updated).should be_a Hashie::Mash }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '.create_event' do
|
|
24
|
+
specify { subject.send(:create_event, :updated).should be_a Hashie::Mash }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe '.create_notice' do
|
|
28
|
+
specify { subject.send(:create_notice,:updated).should be_a Hashie::Mash }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe '.notify' do
|
|
32
|
+
describe '.with name only' do
|
|
33
|
+
specify { subject.notify(:updated).main_event.type.should == :notice }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe 'name and :error type' do
|
|
37
|
+
specify { subject.notify(:updated, :error).main_event.type.should == :error }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe 'name and unknown type' do
|
|
41
|
+
specify do
|
|
42
|
+
expect { subject.notify(:updated, :unknown) }.to raise_error
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class Parameters
|
|
4
|
+
include Controll::Helper::Params
|
|
5
|
+
|
|
6
|
+
attr_reader :params
|
|
7
|
+
|
|
8
|
+
def initialize params = nil
|
|
9
|
+
@params = params || {name: 'kris', shoe_size: 43, gender: 'male' }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe Controll::Helper::Params do
|
|
14
|
+
|
|
15
|
+
subject { clazz.new }
|
|
16
|
+
let(:clazz) { Parameters }
|
|
17
|
+
|
|
18
|
+
describe '.param_methods *args' do
|
|
19
|
+
before :all do
|
|
20
|
+
clazz.param_methods :name, :shoe_size
|
|
21
|
+
clazz.param_method :gender
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
its(:name) { should == 'kris' }
|
|
25
|
+
its(:shoe_size) { should == 43 }
|
|
26
|
+
its(:gender) { should == 'male' }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class MySweetController
|
|
4
|
+
include Controll::Helper
|
|
5
|
+
|
|
6
|
+
redirect_map :index => %w{success}
|
|
7
|
+
|
|
8
|
+
render_map :show => %w{success}
|
|
9
|
+
|
|
10
|
+
# Mocking!
|
|
11
|
+
def render path
|
|
12
|
+
path
|
|
13
|
+
end
|
|
14
|
+
alias_method :redirect_to, :render
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe Controll::Helper::PathResolver do
|
|
18
|
+
subject { Controll::Helper::PathResolver.new controller }
|
|
19
|
+
|
|
20
|
+
let(:controller) { MySweetController.new }
|
|
21
|
+
|
|
22
|
+
describe '.extract_path' do
|
|
23
|
+
describe ':redirect_map' do
|
|
24
|
+
specify do
|
|
25
|
+
subject.extract_path(:redirect_map).should == 'index'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe ':render_paths' do
|
|
30
|
+
specify do
|
|
31
|
+
subject.extract_path(:render_paths).should == 'show'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe '.resolve_path' do
|
|
37
|
+
describe ':redirect_map' do
|
|
38
|
+
specify do
|
|
39
|
+
subject.resolve_path(:redirect_map).should == 'index'
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe ':render_paths' do
|
|
44
|
+
specify do
|
|
45
|
+
subject.resolve_path(:render_paths).should == 'show'
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|