rad_core 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,16 +1,16 @@
1
1
  # Sets format for :js as :html and wraps body into <textarea>
2
- # Forms with files can be submitted by ajax only via iframe, and it requires
2
+ # Forms with files can be submitted by ajax only via iframe, and it requires
3
3
  # the response have 'html' encoding and be wrapped into <textarea>
4
4
  class Rad::Web::Processors::AjaxHelper < Rad::Conveyors::Processor
5
5
  def call
6
6
  response = workspace.response.must_be.defined
7
7
  request = workspace.request.must_be.defined
8
-
8
+
9
9
  next_processor.call
10
-
10
+
11
11
  if workspace.params? and workspace.params.format == 'js' and !request.xhr?
12
12
  response.content_type = Mime['html']
13
13
  workspace.content = "<textarea>#{workspace.content}</textarea>"
14
- end
14
+ end
15
15
  end
16
16
  end
@@ -2,16 +2,16 @@ module Rad::ControllerMiscellaneousHelper
2
2
  def reload_page
3
3
  params = workspace.params
4
4
  params.format.must_be.in 'html', 'js'
5
-
6
- keep_flash!
5
+
6
+ keep_flash!
7
7
  if params.format == 'js'
8
8
  workspace.response.set!(
9
- status: :ok,
9
+ status: :ok,
10
10
  content_type: Mime[params.format]
11
11
  )
12
12
  throw :halt, "window.location.reload();"
13
13
  else
14
14
  redirect_to request.env["HTTP_REFERER"]
15
- end
16
- end
15
+ end
16
+ end
17
17
  end
@@ -7,21 +7,21 @@ class Rad::Web::Processors::EnsureNoWww < Rad::Conveyors::Processor
7
7
  else
8
8
  next_processor.call
9
9
  end
10
- end
11
-
10
+ end
11
+
12
12
  protected
13
13
  def uri
14
14
  @uri ||= Uri.parse workspace.request.url
15
15
  end
16
-
16
+
17
17
  def url_with_www?
18
18
  uri.host =~ /^www\./
19
19
  end
20
-
20
+
21
21
  def redirect_without_www
22
22
  uri.host = uri.host.sub(/^www\./, '')
23
23
  url = uri.to_s
24
-
24
+
25
25
  response = workspace.response
26
26
  response.status = 301
27
27
  response.headers['Location'] = url
@@ -1,40 +1,40 @@
1
- #
1
+ #
2
2
  # Processor
3
- #
4
- class Rad::Web::Processors::PrepareAutenticityToken < Rad::Conveyors::Processor
5
- def call
3
+ #
4
+ class Rad::Web::Processors::PrepareAutenticityToken < Rad::Conveyors::Processor
5
+ def call
6
6
  if rad.http.session
7
7
  request = workspace.request.must_be.defined
8
8
  params = workspace.params.must_be.defined
9
-
9
+
10
10
  token = request.session['authenticity_token']
11
11
 
12
12
  if token.blank? and request.get?
13
13
  token = generate_authenticity_token
14
14
  request.session['authenticity_token'] = token
15
- end
15
+ end
16
16
  end
17
-
17
+
18
18
  next_processor.call
19
19
  end
20
20
 
21
-
21
+
22
22
  protected
23
23
  def generate_authenticity_token
24
- ActiveSupport::SecureRandom.base64(32)
24
+ SecureRandom.base64(32)
25
25
  end
26
26
  end
27
27
 
28
28
 
29
- #
29
+ #
30
30
  # Controller
31
- #
31
+ #
32
32
  module Rad::Controller::ForgeryProtector
33
- attr_reader :authenticity_token
33
+ attr_reader :authenticity_token
34
34
  protected
35
35
  def protect_from_forgery
36
- if request.session
37
- sat = request.session['authenticity_token']
36
+ if request.session
37
+ sat = request.session['authenticity_token']
38
38
 
39
39
  raise "invalid authenticity token!" unless \
40
40
  request.get? or
@@ -48,21 +48,21 @@ end
48
48
 
49
49
  Rad::Controller::Http.include Rad::Controller::ForgeryProtector
50
50
 
51
- Rad::Controller::Http::ClassMethods.class_eval do
51
+ Rad::Controller::Http::ClassMethods.class_eval do
52
52
  def protect_from_forgery options = {}
53
53
  before :protect_from_forgery, options
54
54
  end
55
55
  end
56
56
 
57
57
 
58
- #
58
+ #
59
59
  # View
60
- #
60
+ #
61
61
  Rad::Html::FormHelper.class_eval do
62
62
  attr_reader :authenticity_token
63
63
 
64
64
  alias_method :form_tag_without_at, :form_tag
65
- def form_tag *args, &b
65
+ def form_tag *args, &b
66
66
  form_tag_without_at *args do
67
67
  concat(hidden_field_tag('authenticity_token', authenticity_token) + "\n") if authenticity_token
68
68
  b.call if b
@@ -5,11 +5,11 @@ end
5
5
 
6
6
  %w(
7
7
  _controller_miscellaneous_helper
8
-
8
+
9
9
  _router/abstract_routing_helper
10
- _router/view_routing_helper
10
+ _router/view_routing_helper
11
11
  _router/controller_routing_helper
12
-
12
+
13
13
  _ajax_helper
14
14
  _ensure_no_www
15
15
  _protect_from_forgery
@@ -23,12 +23,12 @@ end
23
23
  ].each do |helper|
24
24
  Rad::Template::Context.inherit helper
25
25
  end
26
-
26
+
27
27
  # Controller helpers
28
- [
28
+ [
29
29
  Rad::Html::FlashHelper,
30
- Rad::Router::CoreRoutingHelper, Rad::ControllerRoutingHelper,
31
- Rad::ControllerMiscellaneousHelper
30
+ Rad::Router::CoreRoutingHelper, Rad::ControllerRoutingHelper,
31
+ Rad::ControllerMiscellaneousHelper
32
32
  ].each do |helper|
33
33
  Rad::Controller::Abstract.inherit helper
34
34
  end
@@ -1,8 +1,8 @@
1
1
  module Rad::AbstractRoutingHelper
2
- protected
2
+ protected
3
3
  def special_url key
4
4
  return nil unless (key.is_a?(Symbol) or key.is_a?(String))
5
-
5
+
6
6
  if key == :back
7
7
  workspace.request.env["HTTP_REFERER"] || 'javascript:history.back()'
8
8
  elsif key == '#'
@@ -12,8 +12,8 @@ module Rad::AbstractRoutingHelper
12
12
  else
13
13
  nil
14
14
  end
15
- end
16
-
15
+ end
16
+
17
17
  def keep_flash!
18
18
  rad[:flash].keep! if rad.include? :flash
19
19
  end
@@ -1,11 +1,11 @@
1
1
  module Rad::ControllerRoutingHelper
2
2
  inherit Rad::AbstractRoutingHelper
3
-
3
+
4
4
  module ClassMethods
5
-
6
- #
5
+
6
+ #
7
7
  # persist_params controller filters
8
- #
8
+ #
9
9
  def persist_params *args
10
10
  if args.empty?
11
11
  before :persist_params
@@ -16,10 +16,10 @@ module Rad::ControllerRoutingHelper
16
16
  end
17
17
  end
18
18
  end
19
-
20
- #
19
+
20
+ #
21
21
  # redirect_to
22
- #
22
+ #
23
23
  def redirect_to *args
24
24
  params, response = workspace.params, workspace.response
25
25
  params.format.must_be.in 'html', 'js'
@@ -33,24 +33,24 @@ module Rad::ControllerRoutingHelper
33
33
 
34
34
  content = if params.format == 'js'
35
35
  response.set!(
36
- status: :ok,
36
+ status: :ok,
37
37
  content_type: content_type
38
38
  )
39
-
39
+
40
40
  "window.location = '#{url}';"
41
41
  else
42
42
  response.set!(
43
- status: :redirect,
43
+ status: :redirect,
44
44
  content_type: content_type
45
45
  )
46
- response.headers['Location'] = url
47
-
46
+ response.headers['Location'] = url
47
+
48
48
  %(<html><body>You are being <a href="#{url.html_escape if url}">redirected</a>.</body></html>)
49
49
  end
50
-
50
+
51
51
  # Flash need to know if we using redirect
52
52
  keep_flash!
53
-
53
+
54
54
  throw :halt, content
55
- end
55
+ end
56
56
  end
@@ -1,14 +1,14 @@
1
1
  module Rad::ViewRoutingHelper
2
2
  inherit Rad::AbstractRoutingHelper
3
-
4
- def link_to *args, &block
3
+
4
+ def link_to *args, &block
5
5
  # content
6
6
  content = if block
7
7
  capture(&block)
8
8
  else
9
9
  args.shift
10
10
  end
11
-
11
+
12
12
  # url, html_options
13
13
  if args.first.is_a? String
14
14
  args.size.must_be.in 1..2
@@ -18,38 +18,38 @@ module Rad::ViewRoutingHelper
18
18
  if url = special_url(args.first)
19
19
  args.size.must_be <= 2
20
20
  html_options = args[1] || {}
21
- else
21
+ else
22
22
  html_options = if args[-1].is_a?(Hash) and args[-2].is_a?(Hash)
23
23
  args.pop
24
24
  else
25
25
  {}
26
26
  end
27
-
27
+
28
28
  args << {} unless args[-1].is_a?(Hash)
29
29
  url = url_for(*args)
30
30
  end
31
31
  end
32
-
32
+
33
33
  # add javascript
34
34
  html_options[:href] = url
35
- add_js_link_options! url, html_options
35
+ add_js_link_options! url, html_options
36
36
  tag :a, content, html_options
37
- end
38
-
37
+ end
38
+
39
39
  protected
40
40
  def add_js_link_options! url, html_options
41
41
  remote = html_options.delete(:remote) || rad.html.remote_link_formats.include?(url.marks.format)
42
42
  method = html_options.delete(:method)
43
-
43
+
44
44
  if remote or method
45
45
  action = html_options.delete(:href).must_be.defined
46
46
  html_options[:href] = '#'
47
-
47
+
48
48
  html_options['data-action'] = action
49
49
  html_options['data-remote'] = 'true' if remote
50
50
  html_options['data-method'] = method || 'post'
51
51
  end
52
-
52
+
53
53
  if confirm = html_options.delete(:confirm)
54
54
  html_options['data-confirm'] = confirm
55
55
  end
data/readme.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Rad - Ruby Web Framework
2
2
 
3
- Simple and highly customizable Web Framework encouraging to build an app as a set of cooperating components instead of monolith.
3
+ Simple and highly customizable Web Framework encouraging to build an app as a set of cooperating components instead of monolith.
4
4
  With an architecture heavily inspired by Rails, Spring IoC, JBoss Seam and JEE (but without config burden).
5
5
 
6
6
  You can start instantly using one of predefined profiles, or take a total control over all aspects of environment and completelly modify it according to Your goals (everything is a component, if You don't like the router, controller or views - throw it out and introduce Your own).
7
7
 
8
- Usually, the first thing You want to now about some unknown framework: "where's the demo?" and "where's the sample?".
8
+ Usually, the first thing You want to now about some unknown framework: "where's the demo?" and "where's the sample?".
9
9
 
10
10
  Here's some **sites built with Rad**:
11
11
 
@@ -32,10 +32,10 @@ Here's the classic **sample blog app** [rad-sample.heroku.com](http://rad-sample
32
32
 
33
33
  ## It's small
34
34
 
35
- I would like to mention it one more time - Rad is not a super-specialized framework like Sinatra, it's the universal and full-featured Web Framework, but it's size is small, really small!
36
- Take a look at [code statistics](http://ruby-lang.info/blog/simple-approach-to-measure-the-agility-and-complexi-4mu), find there the 'rad_core' word and compare it's size with others, actually it's even smaller, because the half of code belongs to specs.
35
+ I would like to mention it one more time - Rad is not a super-specialized framework like Sinatra, it's the universal and full-featured Web Framework, but its size is small, really small!
36
+ Take a look at [code statistics](http://ruby-lang.info/blog/simple-approach-to-measure-the-agility-and-complexi-4mu), find there the 'rad_core' word and compare its size with others, actually its even smaller, because the half of code belongs to specs.
37
37
 
38
- I believe **small code size is very important**, it means that the project is easy to understand, easy to refactor and customize and it's agile (by agility I mean high speed of reaction and adoption to changing world environment and requirements).
38
+ I believe **small code size is very important**, it means that the project is easy to understand, easy to refactor and customize and its agile (by agility I mean high speed of reaction and adoption to changing world environment and requirements).
39
39
 
40
40
  ## Why did I make another Rails?
41
41
 
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
  describe "Abstract" do
4
4
  with_view_path "#{spec_dir}/views"
5
5
  with_abstract_controller
6
-
6
+
7
7
  after :all do
8
8
  remove_constants %w(
9
9
  WorkspaceVariablesSpec
@@ -11,47 +11,47 @@ describe "Abstract" do
11
11
  RespondToSpec
12
12
  ViewVariablesSpec
13
13
  OperationsOrderSpec
14
- NoTemplateSpec
14
+ NoTemplateSpec
15
15
  )
16
16
  end
17
-
17
+
18
18
  it "should set workspace variables" do
19
19
  class ::WorkspaceVariablesSpec
20
20
  inherit Rad::Controller::Abstract
21
-
21
+
22
22
  def action; end
23
23
  end
24
-
25
- ccall WorkspaceVariablesSpec, :action
24
+
25
+ ccall WorkspaceVariablesSpec, :action
26
26
 
27
27
  workspace.controller.should be_a(WorkspaceVariablesSpec)
28
28
  response.should respond_to("body=")
29
29
 
30
- expected_result = {
30
+ expected_result = {
31
31
  params: {},
32
-
33
- class: WorkspaceVariablesSpec,
34
- method_name: :action,
32
+
33
+ class: WorkspaceVariablesSpec,
34
+ method_name: :action,
35
35
  action_name: :action
36
36
  }
37
37
  workspace.to_h(true).subset(expected_result.keys).should == expected_result
38
38
  end
39
-
39
+
40
40
  it "should be able to throw :halt in controller or view and that result must be assigned as result" do
41
41
  class ::SpecialResultSpec
42
- inherit Rad::Controller::Abstract
42
+ inherit Rad::Controller::Abstract
43
43
  def action
44
44
  throw :halt, 'some content'
45
- end
45
+ end
46
46
  end
47
-
47
+
48
48
  ccall(SpecialResultSpec, :action).should == "some content"
49
49
  end
50
-
50
+
51
51
  it "respond_to" do
52
52
  class ::RespondToSpec
53
53
  inherit Rad::Controller::Abstract
54
-
54
+
55
55
  def action
56
56
  respond_to do |format|
57
57
  format.html{render inline: 'html'}
@@ -59,21 +59,21 @@ describe "Abstract" do
59
59
  end
60
60
  end
61
61
  end
62
-
62
+
63
63
  ccall(RespondToSpec, :action, format: 'html').should == 'html'
64
64
  ccall(RespondToSpec, :action, format: 'json').should == %({"a":"b"})
65
65
  lambda{ccall(RespondToSpec, :action, format: 'js')}.should raise_error(/can't respond to 'js' format/)
66
66
  end
67
-
67
+
68
68
  it "controller's instance variables must be available in view, and also other variables" do
69
69
  class ::ViewVariablesSpec
70
70
  inherit Rad::Controller::Abstract
71
-
71
+
72
72
  def action
73
73
  @instance_variable = "iv value"
74
74
  end
75
75
  end
76
-
76
+
77
77
  ccall(ViewVariablesSpec, :action, param: 'param value', format: 'html').should == %(\
78
78
  controller: ViewVariablesSpec
79
79
  controller_name: ViewVariablesSpec
@@ -87,15 +87,15 @@ instance_variable: iv value
87
87
  params: param value
88
88
  format: html)
89
89
  end
90
-
90
+
91
91
  it "operations order" do
92
92
  class ::OperationsOrderSpec
93
93
  inherit Rad::Controller::Abstract
94
-
94
+
95
95
  def self.result
96
96
  @result ||= []
97
97
  end
98
-
98
+
99
99
  around do |controller, block|
100
100
  begin
101
101
  OperationsOrderSpec.result << :before
@@ -104,23 +104,23 @@ format: html)
104
104
  OperationsOrderSpec.result << :after
105
105
  end
106
106
  end
107
-
107
+
108
108
  def action
109
109
  OperationsOrderSpec.result << :action
110
110
  end
111
111
  end
112
-
112
+
113
113
  ccall(OperationsOrderSpec, :action)
114
- OperationsOrderSpec.result.should == [:before, :action, :template, :after]
114
+ OperationsOrderSpec.result.should == [:before, :action, :template, :after]
115
115
  end
116
-
116
+
117
117
  it "should render :nothing" do
118
118
  class NoTemplateSpec
119
119
  inherit Rad::Controller::Abstract
120
-
120
+
121
121
  def action; end
122
122
  end
123
-
123
+
124
124
  ccall(NoTemplateSpec, :action).should == ""
125
125
  end
126
126
  end