controll 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +253 -93
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/controll.gemspec +121 -84
- data/lib/controll/assistant/param_assistant.rb +23 -0
- data/lib/controll/assistant/session_assistant.rb +23 -0
- data/lib/controll/assistant.rb +9 -7
- data/lib/controll/commander.rb +16 -3
- data/lib/controll/enabler/macros.rb +75 -0
- data/lib/controll/enabler/maps.rb +15 -0
- data/lib/controll/enabler/notify.rb +43 -0
- data/lib/controll/enabler/path_handler.rb +49 -0
- data/lib/controll/enabler/path_resolver.rb +47 -0
- data/lib/controll/enabler.rb +49 -0
- data/lib/controll/engine.rb +9 -0
- data/lib/controll/errors.rb +4 -1
- data/lib/controll/event/helper.rb +20 -0
- data/lib/controll/{helper/event_matcher.rb → event/matcher.rb} +3 -3
- data/lib/controll/event.rb +60 -0
- data/lib/controll/events.rb +48 -0
- data/lib/controll/executor/base.rb +3 -7
- data/lib/controll/executor/controlled.rb +36 -0
- data/lib/controll/executor/delegator.rb +6 -0
- data/lib/controll/executor.rb +8 -1
- data/lib/controll/flow/action/base.rb +30 -0
- data/lib/controll/flow/action/fallback.rb +25 -0
- data/lib/controll/flow/action/path_action.rb +24 -0
- data/lib/controll/flow/action.rb +7 -0
- data/lib/controll/flow/action_mapper/base.rb +13 -0
- data/lib/controll/flow/action_mapper/complex.rb +52 -0
- data/lib/controll/flow/action_mapper/simple.rb +54 -0
- data/lib/controll/flow/action_mapper.rb +7 -0
- data/lib/controll/flow/errors.rb +16 -0
- data/lib/controll/flow/event_mapper/path_finder.rb +36 -0
- data/lib/controll/flow/event_mapper/util.rb +43 -0
- data/lib/controll/flow/event_mapper.rb +6 -0
- data/lib/controll/flow/master/executor.rb +57 -0
- data/lib/controll/flow/master/macros.rb +66 -0
- data/lib/controll/flow/master.rb +70 -0
- data/lib/controll/flow.rb +15 -0
- data/lib/controll/focused/enabler.rb +31 -0
- data/lib/controll/helper.rb +0 -94
- data/lib/controll/macros.rb +12 -0
- data/lib/controll/notify/base.rb +22 -43
- data/lib/controll/notify/flash.rb +3 -3
- data/lib/controll/notify/macros.rb +57 -0
- data/lib/controll/notify/message/handler.rb +36 -0
- data/lib/controll/notify/message/resolver.rb +28 -0
- data/lib/controll/notify/message/translator.rb +45 -0
- data/lib/controll/notify/message.rb +25 -0
- data/lib/controll/notify/typed.rb +13 -22
- data/lib/controll/notify.rb +11 -4
- data/lib/controll.rb +8 -2
- data/lib/generators/controll/assistant_generator.rb +27 -0
- data/lib/generators/controll/executor_generator.rb +23 -0
- data/lib/generators/controll/flow_handler_generator.rb +21 -0
- data/lib/generators/controll/notifier_generator.rb +21 -0
- data/lib/generators/controll/setup_generator.rb +37 -0
- data/lib/generators/controll/templates/assistant.tt +10 -0
- data/lib/generators/controll/templates/commander.tt +15 -0
- data/lib/generators/controll/templates/executor.tt +14 -0
- data/lib/generators/controll/templates/flow_handler.tt +26 -0
- data/lib/generators/controll/templates/notifier.tt +31 -0
- data/spec/acceptance/app_test.rb +1 -1
- data/spec/controll/assistant/param_assistant_spec.rb +31 -0
- data/spec/controll/assistant/session_assistant_spec.rb +31 -0
- data/spec/controll/assistant_spec.rb +26 -0
- data/spec/controll/command_spec.rb +4 -4
- data/spec/controll/enabler/macros_spec.rb +76 -0
- data/spec/controll/enabler/maps_spec.rb +31 -0
- data/spec/controll/{helper → enabler}/notify_spec.rb +7 -17
- data/spec/controll/enabler/path_handler_spec.rb +24 -0
- data/spec/controll/enabler/path_resolver_spec.rb +87 -0
- data/spec/controll/enabler_spec.rb +30 -0
- data/spec/controll/event/helper_spec.rb +33 -0
- data/spec/controll/{helper/event_matcher_spec.rb → event/matcher_spec.rb} +4 -3
- data/spec/controll/event_spec.rb +66 -0
- data/spec/controll/events_spec.rb +23 -0
- data/spec/controll/executor/controlled_spec.rb +36 -0
- data/spec/controll/executor/{notificator_spec.rb → delegator_spec.rb} +4 -4
- data/spec/controll/flow/action_mapper/complex_spec.rb +102 -0
- data/spec/controll/flow/action_mapper/fallback_spec.rb +34 -0
- data/spec/controll/{flow_handler/render_spec.rb → flow/action_mapper/simple_spec.rb} +25 -22
- data/spec/controll/{flow_handler/redirect/action_spec.rb → flow/event_mapper/path_finder_spec.rb} +10 -10
- data/spec/controll/{flow_handler/redirect/mapper_spec.rb → flow/event_mapper/util_spec.rb} +9 -9
- data/spec/controll/flow/master/executor_spec.rb +56 -0
- data/spec/{app/app/models/.gitkeep → controll/flow/master/macros_spec.rb} +0 -0
- data/spec/controll/flow/master_spec.rb +157 -0
- data/spec/controll/notify/base_spec.rb +6 -12
- data/spec/controll/notify/message/handler_spec.rb +27 -0
- data/spec/controll/notify/message/resolver_spec.rb +53 -0
- data/spec/controll/notify/message/translator_spec.rb +46 -0
- data/spec/controll/notify/message_spec.rb +4 -0
- data/spec/controll/notify/{message_handler.rb → services_notifier.rb} +3 -5
- data/spec/controll/notify/typed_spec.rb +2 -2
- data/spec/{app → controll_app}/.gitignore +0 -0
- data/spec/{app → controll_app}/Gemfile +0 -0
- data/spec/{app → controll_app}/Gemfile.lock +0 -0
- data/spec/{app → controll_app}/README.rdoc +0 -0
- data/spec/{app → controll_app}/Rakefile +0 -0
- data/spec/controll_app/app/controll/commanders/services_commander.rb +5 -0
- data/spec/controll_app/app/controll/executors/services_executor.rb +4 -0
- data/spec/controll_app/app/controll/flows/create_services.rb +9 -0
- data/spec/controll_app/app/controll/notifiers/services_notifier.rb +9 -0
- data/spec/{app → controll_app}/app/controllers/application_controller.rb +0 -1
- data/spec/controll_app/app/controllers/services_controller.rb +8 -0
- data/spec/{app/lib/assets → controll_app/app/models}/.gitkeep +0 -0
- data/spec/{app → controll_app}/app/models/post.rb +0 -0
- data/spec/{app → controll_app}/app/views/layouts/application.html.erb +0 -0
- data/spec/{app → controll_app}/app/views/posts/_form.html.erb +0 -0
- data/spec/{app → controll_app}/app/views/posts/edit.html.erb +0 -0
- data/spec/{app → controll_app}/app/views/posts/index.html.erb +0 -0
- data/spec/{app → controll_app}/app/views/posts/new.html.erb +0 -0
- data/spec/{app → controll_app}/app/views/posts/show.html.erb +0 -0
- data/spec/{app → controll_app}/config/application.rb +1 -1
- data/spec/{app → controll_app}/config/boot.rb +0 -0
- data/spec/{app → controll_app}/config/environment.rb +0 -0
- data/spec/{app → controll_app}/config/environments/development.rb +0 -0
- data/spec/{app → controll_app}/config/environments/test.rb +0 -0
- data/spec/{app → controll_app}/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/{app → controll_app}/config/initializers/inflections.rb +0 -0
- data/spec/{app → controll_app}/config/initializers/mime_types.rb +0 -0
- data/spec/{app → controll_app}/config/initializers/secret_token.rb +0 -0
- data/spec/{app → controll_app}/config/initializers/session_store.rb +0 -0
- data/spec/{app → controll_app}/config/locales/en.yml +0 -0
- data/spec/controll_app/config/routes.rb +5 -0
- data/spec/{app → controll_app}/config.ru +0 -0
- data/spec/{app → controll_app}/db/seeds.rb +0 -0
- data/spec/{app/lib/tasks → controll_app/log}/.gitkeep +0 -0
- data/spec/{app → controll_app}/public/404.html +0 -0
- data/spec/{app → controll_app}/public/422.html +0 -0
- data/spec/{app → controll_app}/public/500.html +0 -0
- data/spec/{app → controll_app}/public/favicon.ico +0 -0
- data/spec/{app → controll_app}/public/index.html +0 -0
- data/spec/{app → controll_app}/public/javascripts/application.js +0 -0
- data/spec/{app → controll_app}/public/robots.txt +0 -0
- data/spec/{app → controll_app}/public/stylesheets/application.css +0 -0
- metadata +122 -85
- data/lib/controll/executor/notificator.rb +0 -12
- data/lib/controll/flow_handler/base.rb +0 -19
- data/lib/controll/flow_handler/control.rb +0 -85
- data/lib/controll/flow_handler/errors.rb +0 -5
- data/lib/controll/flow_handler/event_helper.rb +0 -18
- data/lib/controll/flow_handler/redirect/action.rb +0 -45
- data/lib/controll/flow_handler/redirect/mapper.rb +0 -41
- data/lib/controll/flow_handler/redirect.rb +0 -51
- data/lib/controll/flow_handler/render.rb +0 -51
- data/lib/controll/flow_handler.rb +0 -11
- data/lib/controll/helper/notify.rb +0 -74
- data/lib/controll/helper/path_resolver.rb +0 -45
- data/spec/app/app/controllers/posts_controller.rb +0 -52
- data/spec/app/config/routes.rb +0 -62
- data/spec/app/log/.gitkeep +0 -0
- data/spec/app/script/rails +0 -6
- data/spec/app/spec/controllers/posts_controller_spec.rb +0 -59
- data/spec/app/spec/isolated_spec_helper.rb +0 -6
- data/spec/app/spec/spec_helper.rb +0 -5
- data/spec/app/spec/unit/controllers/posts_controller_isolated_spec.rb +0 -63
- data/spec/app/spec/unit/controllers/posts_controller_spec.rb +0 -59
- data/spec/app/test/functional/.gitkeep +0 -0
- data/spec/app/test/functional/posts_controller_test.rb +0 -67
- data/spec/app/test/isolated_test_helper.rb +0 -7
- data/spec/app/test/test_helper.rb +0 -6
- data/spec/app/test/unit/.gitkeep +0 -0
- data/spec/app/test/unit/controllers/posts_controller_isolated_test.rb +0 -71
- data/spec/app/test/unit/controllers/posts_controller_test.rb +0 -67
- 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 +0 -5
- data/spec/controll/flow_handler/control_spec.rb +0 -159
- data/spec/controll/flow_handler/redirect_spec.rb +0 -93
- data/spec/controll/helper/path_resolver_spec.rb +0 -49
- data/spec/controll/helper_spec.rb +0 -108
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'isolated_spec_helper'
|
2
|
-
require APP_ROOT + '/controllers/application_controller'
|
3
|
-
require APP_ROOT + '/controllers/posts_controller'
|
4
|
-
require APP_ROOT + '/models/post'
|
5
|
-
|
6
|
-
describe PostsController do
|
7
|
-
include FocusedController::RSpecHelper
|
8
|
-
stub_url :post, :posts
|
9
|
-
|
10
|
-
before do
|
11
|
-
@post = Post.create(:title => 'Hello', :body => 'Omg')
|
12
|
-
end
|
13
|
-
|
14
|
-
describe PostsController::Index do
|
15
|
-
it "should get index" do
|
16
|
-
req
|
17
|
-
response.should be_success
|
18
|
-
subject.posts.should_not be(:nil)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe PostsController::New do
|
23
|
-
it "should get new" do
|
24
|
-
req
|
25
|
-
response.should be_success
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe PostsController::Create do
|
30
|
-
it "should create post" do
|
31
|
-
expect { req :post => @post.attributes }.to change(Post, :count).by(1)
|
32
|
-
response.should redirect_to(post_url(subject.post))
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe PostsController::Show do
|
37
|
-
it "should show post" do
|
38
|
-
req :id => @post.id
|
39
|
-
response.should be_success
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
describe PostsController::Edit do
|
44
|
-
it "should get edit" do
|
45
|
-
req :id => @post.id
|
46
|
-
response.should be_success
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe PostsController::Update do
|
51
|
-
it "should update post" do
|
52
|
-
req :id => @post.id
|
53
|
-
response.should redirect_to(post_url(subject.post))
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
describe PostsController::Destroy do
|
58
|
-
it "should destroy post" do
|
59
|
-
expect { req :id => @post.id }.to change(Post, :count).by(-1)
|
60
|
-
response.should redirect_to(posts_url)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe PostsController do
|
4
|
-
include FocusedController::RSpecHelper
|
5
|
-
|
6
|
-
before do
|
7
|
-
@post = Post.create(:title => 'Hello', :body => 'Omg')
|
8
|
-
end
|
9
|
-
|
10
|
-
describe PostsController::Index do
|
11
|
-
it "should get index" do
|
12
|
-
req
|
13
|
-
response.should be_success
|
14
|
-
subject.posts.should_not be(:nil)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe PostsController::New do
|
19
|
-
it "should get new" do
|
20
|
-
req
|
21
|
-
response.should be_success
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe PostsController::Create do
|
26
|
-
it "should create post" do
|
27
|
-
expect { req :post => @post.attributes }.to change(Post, :count).by(1)
|
28
|
-
response.should redirect_to(post_path(subject.post))
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe PostsController::Show do
|
33
|
-
it "should show post" do
|
34
|
-
req :id => @post.id
|
35
|
-
response.should be_success
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe PostsController::Edit do
|
40
|
-
it "should get edit" do
|
41
|
-
req :id => @post.id
|
42
|
-
response.should be_success
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe PostsController::Update do
|
47
|
-
it "should update post" do
|
48
|
-
req :id => @post.id
|
49
|
-
response.should redirect_to(post_path(subject.post))
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe PostsController::Destroy do
|
54
|
-
it "should destroy post" do
|
55
|
-
expect { req :id => @post.id }.to change(Post, :count).by(-1)
|
56
|
-
response.should redirect_to(posts_path)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
File without changes
|
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module PostsController
|
4
|
-
class TestCase < ActionController::TestCase
|
5
|
-
include FocusedController::FunctionalTestHelper
|
6
|
-
|
7
|
-
setup do
|
8
|
-
@post = Post.create(:title => 'Hello', :body => 'Omg')
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class IndexTest < TestCase
|
13
|
-
test "should get index" do
|
14
|
-
get
|
15
|
-
assert_response :success
|
16
|
-
assert_not_nil @controller.posts
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class NewTest < TestCase
|
21
|
-
test "should get new" do
|
22
|
-
get
|
23
|
-
assert_response :success
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
class CreateTest < TestCase
|
28
|
-
test "should create post" do
|
29
|
-
assert_difference('Post.count') do
|
30
|
-
post :post => @post.attributes
|
31
|
-
end
|
32
|
-
|
33
|
-
assert_redirected_to post_path(@controller.post)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
class ShowTest < TestCase
|
38
|
-
test "should show post" do
|
39
|
-
get :id => @post.id
|
40
|
-
assert_response :success
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
class EditTest < TestCase
|
45
|
-
test "should get edit" do
|
46
|
-
get :id => @post.id
|
47
|
-
assert_response :success
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class UpdateTest < TestCase
|
52
|
-
test "should update post" do
|
53
|
-
put :id => @post.id, :post => @post.attributes
|
54
|
-
assert_redirected_to post_path(@controller.post)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
class DestroyTest < TestCase
|
59
|
-
test "should destroy post" do
|
60
|
-
assert_difference('Post.count', -1) do
|
61
|
-
delete :id => @post.id
|
62
|
-
end
|
63
|
-
|
64
|
-
assert_redirected_to posts_path
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
data/spec/app/test/unit/.gitkeep
DELETED
File without changes
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'isolated_test_helper'
|
2
|
-
require APP_ROOT + '/controllers/application_controller'
|
3
|
-
require APP_ROOT + '/controllers/posts_controller'
|
4
|
-
require APP_ROOT + '/models/post'
|
5
|
-
|
6
|
-
module PostsController
|
7
|
-
class TestCase < ActiveSupport::TestCase
|
8
|
-
include FocusedController::TestHelper
|
9
|
-
stub_url :post, :posts
|
10
|
-
|
11
|
-
setup do
|
12
|
-
@post = Post.create(:title => 'Hello', :body => 'Omg')
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
class IndexTest < TestCase
|
17
|
-
test "should get index" do
|
18
|
-
req
|
19
|
-
assert_response :success
|
20
|
-
assert_not_nil controller.posts
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
class NewTest < TestCase
|
25
|
-
test "should get new" do
|
26
|
-
req
|
27
|
-
assert_response :success
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
class CreateTest < TestCase
|
32
|
-
test "should create post" do
|
33
|
-
assert_difference('Post.count') do
|
34
|
-
req :post => @post.attributes
|
35
|
-
end
|
36
|
-
|
37
|
-
assert_redirected_to post_url(controller.post)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
class ShowTest < TestCase
|
42
|
-
test "should show post" do
|
43
|
-
req :id => @post.id
|
44
|
-
assert_response :success
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
class EditTest < TestCase
|
49
|
-
test "should get edit" do
|
50
|
-
req :id => @post.id
|
51
|
-
assert_response :success
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
class UpdateTest < TestCase
|
56
|
-
test "should update post" do
|
57
|
-
req :id => @post.id
|
58
|
-
assert_redirected_to post_url(controller.post)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
class DestroyTest < TestCase
|
63
|
-
test "should destroy post" do
|
64
|
-
assert_difference('Post.count', -1) do
|
65
|
-
req :id => @post.id
|
66
|
-
end
|
67
|
-
|
68
|
-
assert_redirected_to posts_url
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module PostsController
|
4
|
-
class TestCase < ActiveSupport::TestCase
|
5
|
-
include FocusedController::TestHelper
|
6
|
-
|
7
|
-
setup do
|
8
|
-
@post = Post.create(:title => 'Hello', :body => 'Omg')
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class IndexTest < TestCase
|
13
|
-
test "should get index" do
|
14
|
-
req
|
15
|
-
assert_response :success
|
16
|
-
assert_not_nil controller.posts
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class NewTest < TestCase
|
21
|
-
test "should get new" do
|
22
|
-
req
|
23
|
-
assert_response :success
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
class CreateTest < TestCase
|
28
|
-
test "should create post" do
|
29
|
-
assert_difference('Post.count') do
|
30
|
-
req :post => @post.attributes
|
31
|
-
end
|
32
|
-
|
33
|
-
assert_redirected_to post_path(controller.post)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
class ShowTest < TestCase
|
38
|
-
test "should show post" do
|
39
|
-
req :id => @post.id
|
40
|
-
assert_response :success
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
class EditTest < TestCase
|
45
|
-
test "should get edit" do
|
46
|
-
req :id => @post.id
|
47
|
-
assert_response :success
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class UpdateTest < TestCase
|
52
|
-
test "should update post" do
|
53
|
-
req :id => @post.id
|
54
|
-
assert_redirected_to post_path(controller.post)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
class DestroyTest < TestCase
|
59
|
-
test "should destroy post" do
|
60
|
-
assert_difference('Post.count', -1) do
|
61
|
-
req :id => @post.id
|
62
|
-
end
|
63
|
-
|
64
|
-
assert_redirected_to posts_path
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,159 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module MyController
|
4
|
-
class Update
|
5
|
-
def render path
|
6
|
-
send(path) if path
|
7
|
-
end
|
8
|
-
|
9
|
-
def default
|
10
|
-
'default'
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
class EmptyEventFlowHandler < Controll::FlowHandler::Control
|
16
|
-
def event
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class UpdateEventWithoutHandlerMapping < Controll::FlowHandler::Control
|
21
|
-
def event
|
22
|
-
:update
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class UpdateEventFlowHandler < Controll::FlowHandler::Control
|
27
|
-
def event
|
28
|
-
:update
|
29
|
-
end
|
30
|
-
|
31
|
-
class Render < Controll::FlowHandler::Render
|
32
|
-
set_events :update
|
33
|
-
set_default_path 'default'
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
class UpdateEventNoMatchFlowHandler < Controll::FlowHandler::Control
|
38
|
-
def event
|
39
|
-
:update
|
40
|
-
end
|
41
|
-
|
42
|
-
class Render < Controll::FlowHandler::Render
|
43
|
-
set_events :create
|
44
|
-
set_default_path '/default'
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
describe Controll::FlowHandler::Control do
|
51
|
-
context 'use directly without sublclassing' do
|
52
|
-
subject { flow_handler.new controller }
|
53
|
-
|
54
|
-
let(:flow_handler) { Controll::FlowHandler::Control }
|
55
|
-
let(:controller) { MyController::Update.new }
|
56
|
-
|
57
|
-
describe '.initialize' do
|
58
|
-
specify do
|
59
|
-
subject.controller.should == controller
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
describe '.execute' do
|
64
|
-
specify do
|
65
|
-
expect { subject.execute }.to_not raise_error
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context 'A Control FlowHandler with empty #event method' do
|
71
|
-
subject { flow_handler.new controller }
|
72
|
-
|
73
|
-
let(:flow_handler) { EmptyEventFlowHandler }
|
74
|
-
let(:controller) { MyController::Update.new }
|
75
|
-
|
76
|
-
describe '.initialize' do
|
77
|
-
specify do
|
78
|
-
subject.controller.should == controller
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe '.execute' do
|
83
|
-
specify do
|
84
|
-
expect { subject.execute }.to_not raise_error(NotImplementedError)
|
85
|
-
end
|
86
|
-
|
87
|
-
# since event returns nil
|
88
|
-
specify do
|
89
|
-
expect { subject.execute }.to_not raise_error
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
context 'A Control FlowHandler where #event returns :update notice event' do
|
95
|
-
subject { flow_handler.new controller }
|
96
|
-
|
97
|
-
let(:flow_handler) { UpdateEventWithoutHandlerMapping }
|
98
|
-
let(:controller) { MyController::Update.new }
|
99
|
-
|
100
|
-
describe '.initialize' do
|
101
|
-
specify do
|
102
|
-
subject.controller.should == controller
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
describe '.execute' do
|
107
|
-
# since event returns nil
|
108
|
-
specify do
|
109
|
-
expect { subject.execute }.to_not raise_error
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
context 'A Control FlowHandler where #event returns :update notice event and has a Render class with matching mapping' do
|
115
|
-
subject { flow_handler.new controller }
|
116
|
-
|
117
|
-
let(:flow_handler) { UpdateEventFlowHandler }
|
118
|
-
let(:controller) { MyController::Update.new }
|
119
|
-
|
120
|
-
describe '.initialize' do
|
121
|
-
specify do
|
122
|
-
subject.controller.should == controller
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
describe '.execute' do
|
127
|
-
# since event returns nil
|
128
|
-
specify do
|
129
|
-
expect { subject.execute }.to_not raise_error(Controll::FlowHandler::Control::ActionEventError)
|
130
|
-
end
|
131
|
-
|
132
|
-
specify do
|
133
|
-
subject.execute
|
134
|
-
subject.executed?.should be_true
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
context 'A Control FlowHandler where #event returns :update notice event and has a Render class with NO matching mapping' do
|
140
|
-
subject { flow_handler.new controller }
|
141
|
-
|
142
|
-
let(:flow_handler) { UpdateEventNoMatchFlowHandler }
|
143
|
-
let(:controller) { MyController::Update.new }
|
144
|
-
|
145
|
-
describe '.initialize' do
|
146
|
-
specify do
|
147
|
-
subject.controller.should == controller
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
describe '.execute' do
|
152
|
-
# since event returns nil
|
153
|
-
specify do
|
154
|
-
expect { subject.execute }.to_not raise_error
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
end
|
@@ -1,93 +0,0 @@
|
|
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
|
@@ -1,49 +0,0 @@
|
|
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
|