cells 3.4.1 → 3.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,9 +2,9 @@ source :gemcutter
2
2
  gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3' # needed in router_test, whatever.
3
3
 
4
4
  #gem "rails" , :path => "/home/nick/projects/rails"
5
- gem "rails" #, :git => "http://github.com/rails/rails.git"
5
+ gem "rails", '3.0.0' #, :git => "http://github.com/rails/rails.git"
6
6
  gem "haml"
7
7
 
8
8
  group :test do
9
9
  gem "shoulda"
10
- end
10
+ end
data/Gemfile.lock CHANGED
@@ -33,9 +33,9 @@ GEM
33
33
  builder (2.1.2)
34
34
  erubis (2.6.6)
35
35
  abstract (>= 1.0.0)
36
- haml (3.0.15)
36
+ haml (3.0.21)
37
37
  i18n (0.4.1)
38
- mail (2.2.5)
38
+ mail (2.2.6.1)
39
39
  activesupport (>= 2.3.6)
40
40
  mime-types
41
41
  treetop (>= 1.4.5)
@@ -44,7 +44,7 @@ GEM
44
44
  rack (1.2.1)
45
45
  rack-mount (0.6.13)
46
46
  rack (>= 1.0.0)
47
- rack-test (0.5.4)
47
+ rack-test (0.5.6)
48
48
  rack (>= 1.0)
49
49
  rails (3.0.0)
50
50
  actionmailer (= 3.0.0)
@@ -62,7 +62,7 @@ GEM
62
62
  rake (0.8.7)
63
63
  shoulda (2.11.3)
64
64
  sqlite3-ruby (1.2.5)
65
- thor (0.14.0)
65
+ thor (0.14.3)
66
66
  treetop (1.4.8)
67
67
  polyglot (>= 0.3.1)
68
68
  tzinfo (0.3.23)
@@ -72,6 +72,6 @@ PLATFORMS
72
72
 
73
73
  DEPENDENCIES
74
74
  haml
75
- rails
75
+ rails (= 3.0.0)
76
76
  shoulda
77
77
  sqlite3-ruby (= 1.2.5)
data/README.rdoc CHANGED
@@ -22,7 +22,7 @@ Rails 3:
22
22
 
23
23
  Rails 2.3:
24
24
 
25
- gem install cells -v 3.3.4
25
+ gem install cells -v 3.3.5
26
26
 
27
27
 
28
28
  == Generate
@@ -129,6 +129,12 @@ Run your tests with
129
129
 
130
130
  That's easy, clean and strongly improves your component-driven software quality. How'd you do that with partials?
131
131
 
132
+ === Rails 2.3 note
133
+
134
+ In order to copy the cells rake tasks to your app, run
135
+
136
+ $ script/generate cells_install
137
+
132
138
 
133
139
  == More features
134
140
 
data/lib/cell/rails.rb CHANGED
@@ -19,28 +19,27 @@ module Cell
19
19
  end
20
20
 
21
21
 
22
+ class MissingTemplate < ActionView::ActionViewError
23
+ def initialize(message, possible_paths)
24
+ super(message + " and possible paths #{possible_paths}")
25
+ end
26
+ end
27
+
28
+
22
29
  module Rendering
23
30
  # Invoke the state method for +state+ which usually renders something nice.
24
31
  def render_state(state)
25
- dispatch(state, parent_controller.request)
32
+ process(state)
26
33
  end
27
34
  end
28
35
 
29
36
 
30
37
  module Metal
31
- def dispatch(name, request)
32
- @_request = request
33
- @_env = request.env
34
- @_env['action_controller.instance'] = self
35
- process(name)
36
- end
37
-
38
38
  def params
39
39
  @_params ||= request.parameters # DISCUSS: let rails helper access @controller.params!
40
40
  end
41
41
 
42
- delegate :request, :to => :parent_controller
43
- delegate :config, :to => :parent_controller
42
+ attr_internal :request
44
43
  delegate :session, :to => :parent_controller
45
44
  end
46
45
 
@@ -56,8 +55,10 @@ module Cell
56
55
  abstract!
57
56
 
58
57
 
59
- def initialize(parent_controller=nil, options={})
58
+ def initialize(parent_controller, options={})
60
59
  @parent_controller = parent_controller
60
+ @_request = parent_controller.request # DISCUSS: save request only?
61
+ @_config = parent_controller.config.dup
61
62
  @opts = @options = options
62
63
  end
63
64
 
@@ -129,17 +130,18 @@ module Cell
129
130
 
130
131
  # Climbs up the inheritance chain, looking for a view for the current +state+.
131
132
  def find_family_view_for_state(state)
132
- missing_template_exception = nil
133
-
134
- possible_paths_for_state(state).each do |template_path|
133
+ exception = nil
134
+ possible_paths = possible_paths_for_state(state)
135
+
136
+ possible_paths.each do |template_path|
135
137
  begin
136
138
  template = find_template(template_path)
137
139
  return template if template
138
- rescue ::ActionView::MissingTemplate => missing_template_exception
140
+ rescue ::ActionView::MissingTemplate => exception
139
141
  end
140
142
  end
141
143
 
142
- raise missing_template_exception
144
+ raise MissingTemplate.new(exception.message, possible_paths)
143
145
  end
144
146
 
145
147
  # Renders the view belonging to the given state. Will raise ActionView::MissingTemplate
@@ -158,7 +160,7 @@ module Cell
158
160
  end
159
161
 
160
162
  opts = sanitize_render_options(opts)
161
- render_to_string(opts)
163
+ render_to_string(opts).html_safe # ActionView::Template::Text doesn't do that for us.
162
164
  end
163
165
 
164
166
  # Defaultize the passed options from #render.
data/lib/cells.rb CHANGED
@@ -63,7 +63,7 @@ require 'action_controller'
63
63
  require 'cell'
64
64
  require 'cells/rails'
65
65
  require 'cell/rails'
66
- require 'cell/test_case' if Rails.env == "test"
66
+ require 'cell/test_case' if Object.const_defined?("Rails") and Rails.env == "test"
67
67
 
68
68
  module Cells
69
69
  # Any config should be placed here using +mattr_accessor+.
data/lib/cells/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Cells
2
- VERSION = '3.4.1'
2
+ VERSION = '3.4.2'
3
3
  end
@@ -27,6 +27,14 @@ class RailsCellsTest < ActiveSupport::TestCase
27
27
  end
28
28
  end
29
29
 
30
+ should "respond to #request" do
31
+ assert_equal @request, cell(:bassist).request
32
+ end
33
+
34
+ should "respond to #config" do
35
+ assert_equal({}, cell(:bassist).config)
36
+ end
37
+
30
38
 
31
39
  context "invoking defaultize_render_options_for" do
32
40
  should "set default values" do
@@ -34,6 +34,16 @@ class RailsIntegrationTest < ActionController::TestCase
34
34
  get 'skills', :note => "D"
35
35
  assert_equal "That's a D", @response.body
36
36
  end
37
+
38
+ should "respond to #config" do
39
+ BassistCell.class_eval do
40
+ def listen
41
+ render :view => 'contact_form' # form_tag internally calls config.allow_forgery_protection
42
+ end
43
+ end
44
+ get 'skills'
45
+ assert_equal "<form accept-charset=\"UTF-8\" action=\"musician/index\" method=\"post\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"&#x2713;\" /></div>\n", @response.body
46
+ end
37
47
  end
38
48
 
39
49
  end
@@ -13,15 +13,11 @@ class RailsRenderTest < ActiveSupport::TestCase
13
13
  assert_equal "Doo", render_cell(:bassist, :play)
14
14
  end
15
15
 
16
- should "also render alternative engines" do
16
+ should "also render alternative engines, like haml" do
17
17
  BassistCell.class_eval do
18
- def sing; @xm = Builder::XmlMarkup.new; render; end
18
+ def sing; render; end
19
19
  end
20
- assert_equal "", render_cell(:bassist, :sing) ### FIXME: where's the rendered xml?
21
- end
22
-
23
- should "accept the :template_format option" do
24
-
20
+ assert_equal "<h1>Laaa</h1>\n", render_cell(:bassist, :sing)
25
21
  end
26
22
 
27
23
  should "accept the :nothing option" do
@@ -44,6 +40,7 @@ class RailsRenderTest < ActiveSupport::TestCase
44
40
  def sing; render :text => "Shoobie"; end
45
41
  end
46
42
  assert_equal "Shoobie", render_cell(:bassist, :sing)
43
+ assert render_cell(:bassist, :sing).html_safe?
47
44
  end
48
45
 
49
46
  should "accept the :inline option" do
@@ -85,8 +82,18 @@ class RailsRenderTest < ActiveSupport::TestCase
85
82
  assert_raises ActionView::MissingTemplate do
86
83
  render_cell(:bassist, :groove)
87
84
  end
85
+ end
86
+
87
+ should "raise an error for a non-existent template" do
88
+ BadGuitaristCell.class_eval do
89
+ def groove; render; end
90
+ end
88
91
 
89
- ### TODO: test error message sanity.
92
+ e = assert_raise Cell::Rails::MissingTemplate do
93
+ render_cell(:bad_guitarist, :groove)
94
+ end
95
+
96
+ assert_equal "Missing template cell/rails/groove with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml, :haml], :formats=>[:html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=>[:en, :en]} in view paths \"/home/nick/projects/cells/app/cells\", \"/home/nick/projects/cells/app/cells/layouts\", \"/home/nick/projects/cells/test/app/cells\", \"/home/nick/projects/cells/test/app/cells/layouts\" and possible paths [\"bad_guitarist/groove\", \"bassist/groove\", \"cell/rails/groove\"]", e.message
90
97
  end
91
98
 
92
99
  should "render instance variables from the cell" do
@@ -101,23 +108,23 @@ class RailsRenderTest < ActiveSupport::TestCase
101
108
  should "allow subsequent calls to render in the rendered view" do
102
109
  BassistCell.class_eval do
103
110
  def jam; @chords = [:a, :c]; render; end
104
- def play; render; end
111
+ def sing; render; end
105
112
  end
106
- assert_equal "Doo\nDoo\n", render_cell(:bassist, :jam)
113
+ assert_equal "<h1>Laaa</h1>\n\n<h1>Laaa</h1>\n\n", render_cell(:bassist, :jam)
107
114
  end
108
115
 
109
116
  should "allow multiple calls to render" do
110
117
  BassistCell.class_eval do
111
- def play; render + render + render; end
118
+ def sing; render + render + render; end
112
119
  end
113
- assert_equal "DooDooDoo", render_cell(:bassist, :play)
120
+ assert_equal "<h1>Laaa</h1>\n<h1>Laaa</h1>\n<h1>Laaa</h1>\n", render_cell(:bassist, :sing)
114
121
  end
115
122
 
116
-
117
-
118
-
119
123
  # inheriting
120
124
  should "inherit play.html.erb from BassistCell" do
125
+ BassistCell.class_eval do
126
+ def play; render; end
127
+ end
121
128
  assert_equal "Doo", render_cell(:bad_guitarist, :play)
122
129
  end
123
130
  end
@@ -1,5 +1,5 @@
1
1
  module ApplicationTests
2
- class RouterTest < ActionController::TestCase#Test::Unit::TestCase
2
+ class RouterTest < ActionController::TestCase
3
3
  tests MusicianController
4
4
 
5
5
  context "A Rails app" do
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 3
7
7
  - 4
8
- - 1
9
- version: 3.4.1
8
+ - 2
9
+ version: 3.4.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Nick Sutterer
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-04 00:00:00 +02:00
17
+ date: 2010-10-11 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies: []
20
20