rad_core 0.2.6 → 0.2.7

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.
Files changed (167) hide show
  1. data/Rakefile +2 -2
  2. data/bin/rad +20 -25
  3. data/lib/components/config.rb +1 -1
  4. data/lib/components/configurators.rb +2 -2
  5. data/lib/components/controller.rb +2 -2
  6. data/lib/components/conveyors.rb +2 -2
  7. data/lib/components/environment.rb +1 -1
  8. data/lib/components/environment.yml +28 -28
  9. data/lib/components/flash.rb +1 -1
  10. data/lib/components/html.rb +1 -1
  11. data/lib/components/http.rb +1 -1
  12. data/lib/components/http.yml +1 -1
  13. data/lib/components/logger.rb +2 -2
  14. data/lib/components/mailer.rb +2 -2
  15. data/lib/components/remote.rb +1 -1
  16. data/lib/components/router.rb +3 -3
  17. data/lib/components/template.rb +2 -2
  18. data/lib/components/web.rb +3 -3
  19. data/lib/rad.rb +1 -1
  20. data/lib/rad/_support/active_support.rb +7 -7
  21. data/lib/rad/_support/active_support/locales/ru/actionview.yml +8 -8
  22. data/lib/rad/_support/active_support/locales/ru/activesupport.yml +4 -4
  23. data/lib/rad/_support/active_support/locales/ru/datetime.yml +5 -5
  24. data/lib/rad/_support/active_support/time.rb +2 -2
  25. data/lib/rad/_support/addressable.rb +6 -6
  26. data/lib/rad/_support/class_loader.rb +1 -1
  27. data/lib/rad/_support/extensions.rb +5 -5
  28. data/lib/rad/_support/filters.rb +13 -13
  29. data/lib/rad/_support/hacks_and_fixes.rb +5 -5
  30. data/lib/rad/_support/mime.rb +4 -4
  31. data/lib/rad/_support/module.rb +11 -11
  32. data/lib/rad/_support/require.rb +5 -5
  33. data/lib/rad/_support/rson.rb +4 -4
  34. data/lib/rad/_support/string.rb +9 -9
  35. data/lib/rad/cli/helper.rb +5 -5
  36. data/lib/rad/configurators/_require.rb +2 -2
  37. data/lib/rad/configurators/abstract.rb +5 -5
  38. data/lib/rad/configurators/web.rb +8 -8
  39. data/lib/rad/controller/_abstract.rb +15 -14
  40. data/lib/rad/controller/_abstract/miscellaneous.rb +5 -5
  41. data/lib/rad/controller/_abstract/render.rb +40 -40
  42. data/lib/rad/controller/_abstract/responder.rb +1 -1
  43. data/lib/rad/controller/_context.rb +1 -1
  44. data/lib/rad/controller/_http.rb +11 -11
  45. data/lib/rad/controller/_require.rb +6 -6
  46. data/lib/rad/controller/processors/controller_caller.rb +3 -3
  47. data/lib/rad/controller/processors/controller_error_handling.rb +14 -14
  48. data/lib/rad/controller/processors/controller_logger.rb +1 -1
  49. data/lib/rad/conveyors/_conveyor.rb +9 -9
  50. data/lib/rad/conveyors/_conveyors.rb +4 -4
  51. data/lib/rad/conveyors/_params.rb +5 -5
  52. data/lib/rad/conveyors/_processor.rb +2 -2
  53. data/lib/rad/conveyors/_workspace.rb +5 -5
  54. data/lib/rad/conveyors/processors/conveyor_logger.rb +3 -3
  55. data/lib/rad/environment/_config.rb +4 -4
  56. data/lib/rad/environment/_environment.rb +10 -10
  57. data/lib/rad/environment/_files_helper.rb +5 -5
  58. data/lib/rad/environment/_logger.rb +9 -9
  59. data/lib/rad/environment/_require.rb +4 -4
  60. data/lib/rad/gems.rb +14 -14
  61. data/lib/rad/html/_flash.rb +5 -5
  62. data/lib/rad/html/_helpers/basic_html_helper.rb +12 -12
  63. data/lib/rad/html/_helpers/form_helper.rb +19 -19
  64. data/lib/rad/html/_helpers/javascript_helper.rb +6 -6
  65. data/lib/rad/html/_helpers/model_helper.rb +17 -17
  66. data/lib/rad/html/_require.rb +1 -1
  67. data/lib/rad/html/processors/prepare_flash.rb +3 -3
  68. data/lib/rad/html/processors/scoped_params.rb +4 -4
  69. data/lib/rad/http/_http.rb +4 -4
  70. data/lib/rad/http/_http_adapter.rb +5 -5
  71. data/lib/rad/http/_request.rb +11 -11
  72. data/lib/rad/http/_require.rb +8 -8
  73. data/lib/rad/http/_response.rb +5 -5
  74. data/lib/rad/http/_support/rack/fixes.rb +3 -3
  75. data/lib/rad/http/_support/rack/rack_adapter.rb +5 -5
  76. data/lib/rad/http/processors/evaluate_format.rb +4 -4
  77. data/lib/rad/http/processors/http_logger.rb +3 -3
  78. data/lib/rad/http/processors/http_writer.rb +7 -7
  79. data/lib/rad/http/processors/prepare_params.rb +5 -5
  80. data/lib/rad/mailer/_letter.rb +1 -1
  81. data/lib/rad/mailer/_mailer.rb +1 -1
  82. data/lib/rad/mailer/_mailer_controller.rb +6 -6
  83. data/lib/rad/mailer/_require.rb +1 -1
  84. data/lib/rad/mailer/processors/letter_builder.rb +6 -6
  85. data/lib/rad/profiles/mailer.rb +2 -2
  86. data/lib/rad/profiles/web.rb +13 -13
  87. data/lib/rad/remote/processors/remote_caller.rb +10 -10
  88. data/lib/rad/remote/processors/remote_logger.rb +1 -1
  89. data/lib/rad/router/_abstract_router.rb +9 -9
  90. data/lib/rad/router/_alias_router.rb +34 -34
  91. data/lib/rad/router/_basic_router.rb +12 -12
  92. data/lib/rad/router/_configurator.rb +6 -6
  93. data/lib/rad/router/_core_routing_helper.rb +4 -4
  94. data/lib/rad/router/_object_router.rb +45 -45
  95. data/lib/rad/router/_require.rb +8 -8
  96. data/lib/rad/router/_restful_router.rb +25 -25
  97. data/lib/rad/router/_router.rb +78 -78
  98. data/lib/rad/router/_simple_router.rb +5 -5
  99. data/lib/rad/router/processors/router.rb +6 -6
  100. data/lib/rad/spec/controller.rb +9 -9
  101. data/lib/rad/spec/environment.rb +7 -7
  102. data/lib/rad/spec/http.rb +2 -2
  103. data/lib/rad/spec/http_controller.rb +22 -22
  104. data/lib/rad/spec/mailer.rb +4 -4
  105. data/lib/rad/spec/remote.rb +1 -1
  106. data/lib/rad/spec/router.rb +4 -4
  107. data/lib/rad/spec/template.rb +2 -2
  108. data/lib/rad/tasks.rb +2 -2
  109. data/lib/rad/template/_context.rb +15 -15
  110. data/lib/rad/template/_relative_path_resolver.rb +1 -1
  111. data/lib/rad/template/_support/tilt.rb +17 -17
  112. data/lib/rad/template/_support/tilt_fixes.rb +3 -3
  113. data/lib/rad/template/_template.rb +47 -47
  114. data/lib/rad/web/_ajax_helper.rb +4 -4
  115. data/lib/rad/web/_controller_miscellaneous_helper.rb +5 -5
  116. data/lib/rad/web/_ensure_no_www.rb +5 -5
  117. data/lib/rad/web/_protect_from_forgery.rb +18 -18
  118. data/lib/rad/web/_require.rb +7 -7
  119. data/lib/rad/web/_router/abstract_routing_helper.rb +4 -4
  120. data/lib/rad/web/_router/controller_routing_helper.rb +15 -15
  121. data/lib/rad/web/_router/view_routing_helper.rb +12 -12
  122. data/readme.md +5 -5
  123. data/spec/controller/abstract_spec.rb +29 -29
  124. data/spec/controller/context_spec.rb +32 -32
  125. data/spec/controller/error_handling_spec.rb +31 -31
  126. data/spec/controller/helper_spec.rb +13 -13
  127. data/spec/controller/http_spec.rb +32 -32
  128. data/spec/controller/render_spec.rb +59 -59
  129. data/spec/conveyors/conveyors_spec.rb +32 -32
  130. data/spec/environment/config_spec.rb +6 -6
  131. data/spec/environment/environment_spec.rb +7 -7
  132. data/spec/environment/minimal_app_spec.rb +4 -4
  133. data/spec/environment/standard_app_spec.rb +10 -10
  134. data/spec/html/basic_html_helper_spec.rb +6 -6
  135. data/spec/html/form_helper_spec.rb +5 -5
  136. data/spec/html/javascript_helper_spec.rb +4 -4
  137. data/spec/html/model_helper_spec.rb +12 -12
  138. data/spec/html/scoped_params_spec.rb +2 -2
  139. data/spec/html/spec_helper.rb +3 -3
  140. data/spec/http/http_spec.rb +9 -9
  141. data/spec/http/miscellaneous_spec.rb +2 -2
  142. data/spec/mailer/mail_controller_spec.rb +23 -23
  143. data/spec/remote/remote_spec.rb +26 -26
  144. data/spec/router/alias_router_spec.rb +22 -22
  145. data/spec/router/basic_router_spec.rb +8 -8
  146. data/spec/router/configurator_spec.rb +4 -4
  147. data/spec/router/integration_spec.rb +17 -17
  148. data/spec/router/object_router_spec.rb +47 -47
  149. data/spec/router/persistent_params_spec.rb +18 -18
  150. data/spec/router/restful_router_spec.rb +39 -39
  151. data/spec/router/router_spec.rb +37 -37
  152. data/spec/router/routing_helper_spec.rb +18 -18
  153. data/spec/support/filters_spec.rb +11 -13
  154. data/spec/template/template_spec.rb +43 -45
  155. data/spec/template/template_spec/views/layout/content_for/content.erb +3 -1
  156. data/spec/template/template_spec/views/layout/content_for/layout.erb +1 -1
  157. data/spec/template/tilt_spec.rb +24 -24
  158. data/spec/web/basic_spec.rb +25 -25
  159. data/spec/web/controller_routing_helper_spec.rb +26 -26
  160. data/spec/web/flash_spec.rb +31 -31
  161. data/spec/web/protect_from_forgery_spec.rb +44 -44
  162. data/spec/web/spec_helper_spec.rb +16 -16
  163. data/spec/web/view_routing_helper_spec.rb +31 -31
  164. metadata +46 -49
  165. data/lib/rad/_support/callbacks.rb +0 -166
  166. data/lib/rad/_support/ruby_ext_with_active_support.rb +0 -4
  167. data/spec/support/callbacks_spec.rb +0 -157
@@ -2,13 +2,13 @@ require 'spec_helper'
2
2
 
3
3
  describe "Remote Basic" do
4
4
  isolate :conveyors
5
-
5
+
6
6
  before do
7
7
  rad.conveyors.services do |ss|
8
8
  ss.use Rad::Remote::Processors::RemoteCaller, :content
9
9
  end
10
10
  end
11
-
11
+
12
12
  old_mode = rad.mode
13
13
  after :all do
14
14
  remove_constants %w(
@@ -16,73 +16,73 @@ describe "Remote Basic" do
16
16
  JsonErrorSpec
17
17
  UnregisteredReturnValueSpec
18
18
  )
19
-
19
+
20
20
  rad.mode = old_mode, true
21
21
  end
22
-
22
+
23
23
  it "basic" do
24
24
  class BasicSpec
25
25
  inherit Rad::Remote::RemoteController
26
-
26
+
27
27
  def call
28
28
  {result: 'some result'}
29
29
  end
30
30
  end
31
-
31
+
32
32
  workspace = rcall BasicSpec, :call, format: 'json'
33
-
33
+
34
34
  workspace.delete(:remote_object).should be_a(BasicSpec)
35
- expected_result = {
35
+ expected_result = {
36
36
  params: {format: 'json'},
37
-
38
- class: BasicSpec,
39
- method_name: :call,
40
-
37
+
38
+ class: BasicSpec,
39
+ method_name: :call,
40
+
41
41
  remote_result: {result: "some result"},
42
42
  content: %({"result":"some result"})
43
43
  }
44
44
  workspace.to_h(true).subset(expected_result.keys).should == expected_result
45
45
  end
46
-
46
+
47
47
  describe "error handling should behave different in :production, :development and :test modes" do
48
- it "error in :development mode" do
48
+ it "error in :development mode" do
49
49
  class JsonErrorSpec
50
50
  inherit Rad::Remote::RemoteController
51
-
51
+
52
52
  def call_with_error
53
53
  raise 'some error'
54
54
  end
55
55
  end
56
-
56
+
57
57
  rad.mode = :development, true
58
-
58
+
59
59
  workspace = rcall JsonErrorSpec, 'call_with_error', format: 'json'
60
-
60
+
61
61
  workspace.delete(:remote_object).should be_a(JsonErrorSpec)
62
62
  workspace.include?(:remote_result).should be_false
63
63
  expected_result = {
64
64
  params: {format: 'json'},
65
-
66
- class: JsonErrorSpec,
67
- method_name: "call_with_error",
68
-
65
+
66
+ class: JsonErrorSpec,
67
+ method_name: "call_with_error",
68
+
69
69
  content: %({"error":"some error"})
70
70
  }
71
71
  workspace.to_h.subset(expected_result.keys).should == expected_result
72
72
  end
73
73
  end
74
-
74
+
75
75
  it "should be able to protect methods from GET request"
76
-
76
+
77
77
  it "should not allow unregistered object types be used as return value" do
78
78
  class UnregisteredReturnValueSpec
79
79
  inherit Rad::Remote::RemoteController
80
-
80
+
81
81
  def call
82
82
  Object.new
83
83
  end
84
84
  end
85
-
85
+
86
86
  lambda{
87
87
  rcall UnregisteredReturnValueSpec, 'call', format: 'json'
88
88
  }.should raise_error(/You can't use object of type 'Object' as Remote's return value!/)
@@ -5,91 +5,91 @@ describe "AliasRouter" do
5
5
  class SomeController
6
6
  end
7
7
  end
8
-
8
+
9
9
  after :all do
10
10
  remove_constants %w(SomeController)
11
11
  end
12
-
12
+
13
13
  before do
14
14
  @router = Rad::Router::AliasRouter.new
15
15
  end
16
-
16
+
17
17
  it "encode / decode" do
18
18
  @router.add '/login', class_name: 'SomeController', method: :login
19
19
 
20
20
  @router.encode(SomeController, :login, {}).should == ["/login", {}]
21
- @router.encode_method('login_path', false).should == [SomeController, :login]
21
+ @router.encode_method('login_path', false).should == [SomeController, :login]
22
22
  @router.decode("/login", {}).should == [SomeController, :login, {}]
23
23
  end
24
-
24
+
25
25
  it "should differentiate aliases with similar path elements" do
26
26
  @router.add '/login', class_name: 'SomeController', method: :login
27
27
  @router.add '/login/twitter', class_name: 'SomeController', method: :twitter
28
-
28
+
29
29
  @router.encode(SomeController, :login, {}).should == ["/login", {}]
30
30
  @router.decode("/login", {}).should == [SomeController, :login, {}]
31
-
31
+
32
32
  @router.encode(SomeController, :twitter, {}).should == ["/login/twitter", {}]
33
33
  @router.decode("/login/twitter", {}).should == [SomeController, :twitter, {}]
34
34
  end
35
-
35
+
36
36
  it "input validation" do
37
37
  lambda{@router.add :login, class_name: 'SomeController', method: :login}.should raise_error(/\//)
38
38
  lambda{@router.add '/login', class_name: 'SomeController'}.should raise_error(/method/)
39
- lambda{@router.add '/login', method: :login}.should raise_error(/class/)
39
+ lambda{@router.add '/login', method: :login}.should raise_error(/class/)
40
40
  lambda{@router.add '/login', class_name: 'SomeController', method: :login, invalid: 'value'}.should raise_error(/unknown/)
41
41
  lambda{@router.add '/login', class_name: 'SomeController', method: :login, url_root: 'users'}.should raise_error(/\//)
42
42
  end
43
-
43
+
44
44
  it "should use :url_root" do
45
45
  @router.add '/login', class_name: 'SomeController', method: :login, url_root: '/space'
46
-
46
+
47
47
  @router.encode(SomeController, :login, {}).should == ["/login", {url_root: '/space'}]
48
48
  @router.decode("/space/login", {}).should == [SomeController, :login, {}]
49
- end
50
-
49
+ end
50
+
51
51
  it "should return nil if route unknown" do
52
52
  @router.encode(SomeController, :unknown, {}).should be_nil
53
53
  @router.encode_method(:unknown_path, false).should be_nil
54
54
  @router.decode("/login", {}).should be_nil
55
55
  end
56
-
56
+
57
57
  it 'root alias' do
58
58
  @router.add '/', class_name: 'SomeController', method: :home
59
59
 
60
60
  @router.encode(SomeController, :home, {}).should == ["/", {}]
61
61
  @router.decode("/", {}).should == [SomeController, :home, {}]
62
-
62
+
63
63
  # should not support url_root
64
64
  -> {@router.add '/', class_name: 'SomeController', method: :home, url_root: '/space'}.should raise_error(/url_root/)
65
65
  end
66
-
66
+
67
67
  describe "prefixes" do
68
68
  it "basics" do
69
69
  @router.add '/statistics', class_name: 'SomeController', method: :statistics, prefix: [:l, :space]
70
-
70
+
71
71
  @router.encode(SomeController, :statistics, l: 'en', space: 'personal').should == ["/en/personal/statistics", {}]
72
72
  @router.encode_method("statistics_path", false).should == [SomeController, :statistics]
73
73
  @router.decode("/en/personal/statistics", {}).should == [SomeController, :statistics, {l: 'en', space: 'personal'}]
74
74
  end
75
-
75
+
76
76
  it "should also works with path with slashes" do
77
77
  @router.add '/blogs/show', class_name: 'SomeController', method: :show, prefix: [:l, :space]
78
-
78
+
79
79
  @router.encode(SomeController, :show, l: 'en', space: 'personal').should == ["/en/personal/blogs/show", {}]
80
80
  @router.decode("/en/personal/blogs/show", {}).should == [SomeController, :show, {l: 'en', space: 'personal'}]
81
81
  end
82
-
82
+
83
83
  it "should raise error if prefixes not provided" do
84
84
  @router.add '/login', class_name: 'SomeController', method: :login, prefix: :l
85
85
 
86
86
  lambda{@router.encode(SomeController, :login, {})}.should raise_error(/prefix/)
87
87
  lambda{@router.decode('/login', {})}.should raise_error(/prefix/)
88
88
  end
89
-
89
+
90
90
  it "should works with :url_root" do
91
91
  @router.add '/blogs/show', class_name: 'SomeController', method: :show, prefix: :l, url_root: '/users'
92
-
92
+
93
93
  @router.encode(SomeController, :show, l: 'en').should == ["/en/blogs/show", {url_root: '/users'}]
94
94
  @router.decode("/users/en/blogs/show", {}).should == [SomeController, :show, {l: 'en'}]
95
95
  end
@@ -4,36 +4,36 @@ describe "RedirectRouter" do
4
4
  before do
5
5
  @router = Rad::Router::BasicRouter.new
6
6
  end
7
-
7
+
8
8
  it "skip" do
9
9
  @router.skip(/\/fs/)
10
-
10
+
11
11
  halt = catch :halt do
12
12
  @router.decode("/users/all", {})
13
13
  nil
14
14
  end
15
15
  halt.should be_nil
16
-
16
+
17
17
  halt = catch :halt do
18
18
  @router.decode("/fs/user/avatar", {})
19
19
  nil
20
20
  end
21
21
  halt.should_not be_nil
22
22
  end
23
-
24
- it "redirect" do
23
+
24
+ it "redirect" do
25
25
  workspace = Rad::Conveyors::Workspace.new
26
26
  workspace.response = Rad::Http::Response.new
27
27
  @router.stub!(:workspace).and_return(workspace)
28
-
28
+
29
29
  @router.redirect(/^\/([^\/]+)$/, "/\\1/Items")
30
-
30
+
31
31
  halt = catch :halt do
32
32
  @router.decode("/default/Items", {})
33
33
  nil
34
34
  end
35
35
  halt.should be_nil
36
-
36
+
37
37
  halt = catch :halt do
38
38
  @router.decode("/default", {})
39
39
  nil
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Configurator" do
3
+ describe "Configurator" do
4
4
  before do
5
5
  @basic_router = Rad::Router::BasicRouter.new
6
6
  @router = Rad::Router.new(:class, [
@@ -8,14 +8,14 @@ describe "Configurator" do
8
8
  ])
9
9
  Rad::Router::Configurator.stub(:router).and_return(@router)
10
10
  end
11
-
11
+
12
12
  it "named routes" do
13
13
  rad.router.configure do |config|
14
14
  config.stub(:router).and_return(@router)
15
-
15
+
16
16
  config.skip(/^\/favicon/)
17
17
  end
18
-
18
+
19
19
  @basic_router.skip_routes.size.should > 0
20
20
  end
21
21
  end
@@ -1,47 +1,47 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Remote Basic" do
4
- before :all do
3
+ describe "Remote Basic" do
4
+ before :all do
5
5
  class ::AnRemote
6
6
  def call; end
7
7
  end
8
- end
9
-
8
+ end
9
+
10
10
  isolate :conveyors, :router
11
-
11
+
12
12
  after :all do
13
13
  remove_constants %w(AnRemote)
14
14
  end
15
-
15
+
16
16
  before do
17
17
  rad.conveyors.web.use Rad::Router::Processors::Router, :class_variable, :method_variable
18
18
  rad.router.routers = [
19
19
  [:simple_router, Rad::Router::SimpleRouter.new]
20
20
  ]
21
21
  end
22
-
23
- def call_router path, params
22
+
23
+ def call_router path, params
24
24
  rad.conveyors.web.call path: path, params: Rad::Conveyors::Params.new(params)
25
25
  end
26
-
27
- it "basic" do
26
+
27
+ it "basic" do
28
28
  workspace = call_router '/an_remote/call', format: 'json'
29
-
30
- expected_result = {
31
- path: "/an_remote/call",
29
+
30
+ expected_result = {
31
+ path: "/an_remote/call",
32
32
  params: {format: 'json'},
33
-
34
- class_variable: AnRemote,
33
+
34
+ class_variable: AnRemote,
35
35
  method_variable: :call
36
36
  }
37
37
  workspace.to_h(true).subset(expected_result.keys).should == expected_result
38
38
  end
39
-
39
+
40
40
  it "params must be casted to string" do
41
41
  workspace = call_router '/an_remote/call', a: 'b'
42
42
  workspace.params.to_h.subset(:a).should == {a: 'b'}
43
43
  end
44
-
44
+
45
45
  it "default router should raise error if route is invalid" do
46
46
  lambda{call_router '/invalid/call', format: 'json'}.should raise_error(/uninitialized constant Invalid/)
47
47
  end
@@ -1,26 +1,26 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "ObjectRouter" do
3
+ describe "ObjectRouter" do
4
4
  before :all do
5
5
  class ::Blogs
6
6
  # Object methods
7
7
  def show; end
8
8
  def update; end
9
-
9
+
10
10
  # Singleton methods
11
11
  def all; end
12
12
  def some; end
13
- end
13
+ end
14
14
  end
15
-
15
+
16
16
  after :all do
17
17
  remove_constants %w(Blogs)
18
18
  end
19
-
19
+
20
20
  before do
21
21
  @router = Rad::Router::ObjectRouter.new
22
22
  end
23
-
23
+
24
24
  describe 'Singleton Resource' do
25
25
  before do
26
26
  @router.configure(
@@ -30,23 +30,23 @@ describe "ObjectRouter" do
30
30
  id_to_class: -> id, params {nil}
31
31
  )
32
32
  end
33
-
33
+
34
34
  it "basic" do
35
35
  @router.encode(Blogs, :some, {}).should == ["/Blogs/some", {}]
36
36
  @router.encode_method('some_blog_path', false).should == [Blogs, :some]
37
37
  @router.encode_method('some_blogs_path', false).should == [Blogs, :some]
38
38
  @router.decode("/Blogs/some", {}).should == [Blogs, :some, {}]
39
39
  end
40
-
40
+
41
41
  it "by default should use :all method if the method not explicitly specified" do
42
42
  @router.encode(Blogs, :all, {}).should == ["/Blogs", {}]
43
43
  @router.encode(Blogs, nil, {}).should == ["/Blogs", {}]
44
44
  @router.encode_method('blog_path', false).should == [Blogs, :all]
45
45
  @router.encode_method('blogs_path', false).should == [Blogs, :all]
46
46
  @router.decode("/Blogs", {}).should == [Blogs, :all, {}]
47
- end
47
+ end
48
48
  end
49
-
49
+
50
50
  describe "Object Resource" do
51
51
  before do
52
52
  @router.configure(
@@ -55,30 +55,30 @@ describe "ObjectRouter" do
55
55
  resource_to_class: -> resource {resource.constantize}
56
56
  )
57
57
  end
58
-
58
+
59
59
  # TODO3 remove also class from :encode, use:
60
- #
60
+ #
61
61
  # @router.encode('about', :update, view: 'full').should == ["/about/update", {view: 'full'}]
62
62
  # @router.encode_method('update_path').should == [:update]
63
- #
64
- it "basic" do
63
+ #
64
+ it "basic" do
65
65
  @router.encode(Blogs, :update, id: 'about', view: 'full').should == ["/about/update", {view: 'full'}]
66
66
  @router.encode_method('update_path', true).should == [Blogs, :update]
67
67
  @router.decode("/about/update", {view: 'full'}).should == [Blogs, :update, {id: 'about', view: 'full'}]
68
- end
69
-
68
+ end
69
+
70
70
  it "by default should use :show method if the method not explicitly specified" do
71
71
  @router.encode(Blogs, :show, id: 'about', view: 'full').should == ["/about", {view: 'full'}]
72
72
  @router.encode(Blogs, nil, id: 'about', view: 'full').should == ["/about", {view: 'full'}]
73
73
  @router.encode_method('path', true).should == [Blogs, :show]
74
74
  @router.decode("/about", {view: 'full'}).should == [Blogs, :show, {id: 'about', view: 'full'}]
75
75
  end
76
-
76
+
77
77
  it "should raise error if :class for :id is not resolved" do
78
78
  lambda{@router.decode("/non-existing-id", {view: 'full'})}.should raise_error(/no class for .* id/)
79
79
  end
80
80
  end
81
-
81
+
82
82
  describe "prefixes" do
83
83
  before do
84
84
  @common_options = {
@@ -88,95 +88,95 @@ describe "ObjectRouter" do
88
88
  id_to_class: -> id, params {id == 'about' ? Blogs : nil}
89
89
  }
90
90
  end
91
-
91
+
92
92
  it "class resource" do
93
93
  @router.configure @common_options.merge(prefix: [:l, :space])
94
-
94
+
95
95
  @router.encode(Blogs, :some, l: 'en', space: 'personal').should == ["/en/personal/Blogs/some", {}]
96
96
  @router.encode(Blogs, :all, l: 'en', space: 'personal').should == ["/en/personal/Blogs", {}]
97
97
  @router.decode("/en/personal/Blogs/some", {}).should == [Blogs, :some, {l: 'en', space: 'personal'}]
98
98
  @router.decode("/en/personal/Blogs", {}).should == [Blogs, :all, {l: 'en', space: 'personal'}]
99
99
  end
100
-
100
+
101
101
  it "object resource" do
102
102
  @router.configure @common_options.merge(prefix: [:l, :space])
103
-
103
+
104
104
  @router.encode(Blogs, :update, id: 'about', l: 'en', space: 'personal').should == ["/en/personal/about/update", {}]
105
105
  @router.encode(Blogs, nil, id: 'about', l: 'en', space: 'personal').should == ["/en/personal/about", {}]
106
106
  @router.decode("/en/personal/about/update", {}).should == [Blogs, :update, {id: 'about', l: 'en', space: 'personal'}]
107
107
  @router.decode("/en/personal/about", {}).should == [Blogs, :show, {id: 'about', l: 'en', space: 'personal'}]
108
108
  end
109
-
110
- it "should raise error if prefixes not provided" do
109
+
110
+ it "should raise error if prefixes not provided" do
111
111
  @router.configure @common_options.merge(prefix: :l)
112
-
113
- lambda{@router.encode(Blogs, :some, {})}.should raise_error(/prefix/)
114
- lambda{@router.encode(Blogs, :all, {})}.should raise_error(/prefix/)
112
+
113
+ lambda{@router.encode(Blogs, :some, {})}.should raise_error(/prefix/)
114
+ lambda{@router.encode(Blogs, :all, {})}.should raise_error(/prefix/)
115
115
  lambda{@router.decode('/Blogs/some', {})}.should raise_error(/no class for .* id/)
116
116
  lambda{@router.decode('/Blogs', {})}.should raise_error(/invalid 'size' of path/)
117
-
118
-
119
- lambda{@router.encode(Blogs, :update, id: 'about')}.should raise_error(/prefix/)
120
- lambda{@router.encode(Blogs, :show, id: 'about')}.should raise_error(/prefix/)
117
+
118
+
119
+ lambda{@router.encode(Blogs, :update, id: 'about')}.should raise_error(/prefix/)
120
+ lambda{@router.encode(Blogs, :show, id: 'about')}.should raise_error(/prefix/)
121
121
  lambda{@router.decode('/about/update', {})}.should raise_error(/no class for .* id/)
122
122
  lambda{@router.decode('/about', {})}.should raise_error(/invalid 'size' of path/)
123
123
  end
124
-
124
+
125
125
  it "should works with :url_root" do
126
126
  @router.configure @common_options.merge(prefix: [:l], url_root: '/users')
127
-
127
+
128
128
  @router.encode(Blogs, :some, l: 'en').should == ["/en/Blogs/some", {url_root: '/users'}]
129
129
  @router.decode("/users/en/Blogs/some", {}).should == [Blogs, :some, {l: 'en'}]
130
-
130
+
131
131
  @router.encode(Blogs, :update, id: 'about', l: 'en').should == ["/en/about/update", {url_root: '/users'}]
132
132
  @router.decode("/users/en/about/update", {}).should == [Blogs, :update, {id: 'about', l: 'en'}]
133
133
  end
134
134
  end
135
-
136
- describe "miscellaneous check" do
135
+
136
+ describe "miscellaneous check" do
137
137
  before{@common_options = {default_class_name: 'Blogs'}}
138
-
138
+
139
139
  # it "should raise if :id and not default class " do
140
140
  # @router.configure @common_options
141
141
  # lambda{@router.encode(Blogs, :some, id: 'about')}.should raise_error(/:id can't be used with :class/)
142
142
  # end
143
-
143
+
144
144
  it "should return nil if resource name is not in plural form" do
145
145
  @router.configure @common_options
146
146
  lambda{@router.decode('/Blog/some', {})}.should raise_error(/resource must be in plural form/)
147
147
  end
148
-
148
+
149
149
  it "object id should not start with capital letter" do
150
- @router.configure @common_options
150
+ @router.configure @common_options
151
151
  lambda{@router.encode(Blogs, :some, {id: 'About'})}.should raise_error(/capital/)
152
152
  end
153
-
153
+
154
154
  it "resource name should be uppercased" do
155
155
  @router.configure @common_options.merge(class_to_resource: -> klass {'blogs'})
156
156
  lambda{@router.encode(Blogs, :some, {})}.should raise_error(/capital/)
157
157
  end
158
-
158
+
159
159
  it "should not be allowed to called twice" do
160
160
  @router.configure @common_options
161
161
  lambda{@router.configure @common_options}.should raise_error(/twice/)
162
162
  end
163
-
164
- it "should allow only plural form in resource names" do
163
+
164
+ it "should allow only plural form in resource names" do
165
165
  @router.configure @common_options.merge(class_to_resource: -> klass {'Blog'})
166
166
  lambda{@router.encode(Blogs, :some, {})}.should raise_error(/plural/)
167
167
  end
168
-
168
+
169
169
  it "shouldn't allow slashes in resource name" do
170
170
  @router.configure @common_options.merge(class_to_resource: -> klass {'Site/Blog'})
171
171
  lambda{@router.encode(Blogs, :some, {})}.should raise_error(/\//)
172
172
  end
173
-
173
+
174
174
  # it "should correctly works with unknown routes" do
175
175
  # @router.encode(Blogs, :show, {}).should be_nil
176
176
  # @router.encode_method('show_blog_path').should be_nil
177
177
  # @router.encode_method('show_blogs_path').should be_nil
178
178
  # @router.decode("/Blogs/show", {}).should be_nil
179
- #
179
+ #
180
180
  # @router.encode(Blogs, :show, id: 'about', view: 'full').should be_nil
181
181
  # @router.encode_method('show_blog_path').should be_nil
182
182
  # @router.encode_method('show_blogs_path').should be_nil