cells 3.3.10 → 3.4.0.beta1
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/CHANGES +0 -8
- data/Gemfile +4 -1
- data/README.rdoc +91 -107
- data/Rakefile +0 -4
- data/lib/cell.rb +5 -6
- data/lib/{cells/cell → cell}/active_helper.rb +1 -1
- data/lib/cell/base.rb +134 -0
- data/lib/cell/base_methods.rb +100 -0
- data/lib/cell/caching.rb +153 -0
- data/lib/cell/rails.rb +239 -0
- data/lib/cells.rb +25 -3
- data/lib/cells/assertions_helper.rb +1 -1
- data/lib/cells/helpers/capture_helper.rb +3 -3
- data/lib/cells/rails.rb +65 -4
- data/lib/cells/version.rb +3 -1
- data/rails_generators/cell/cell_generator.rb +47 -35
- data/rails_generators/cell/templates/cell.rb +1 -1
- data/rails_generators/cells_install/cells_install_generator.rb +5 -3
- data/rails_generators/erb/cell_generator.rb +20 -0
- data/rails_generators/{cell → erb}/templates/view.html.erb +0 -0
- data/test/active_helper_test.rb +1 -0
- data/test/app/cells/bad_guitarist_cell.rb +2 -0
- data/test/app/cells/bassist_cell.rb +1 -1
- data/test/app/controllers/musician_controller.rb +16 -0
- data/test/assertions_helper_test.rb +8 -18
- data/test/base_methods_test.rb +40 -0
- data/test/cell_generator_test.rb +33 -21
- data/test/helper_test.rb +31 -123
- data/test/rails/caching_test.rb +215 -0
- data/test/rails/capture_test.rb +52 -0
- data/test/rails/cells_test.rb +88 -0
- data/test/rails/integration_test.rb +37 -0
- data/test/rails/render_test.rb +140 -0
- data/test/rails/router_test.rb +74 -0
- data/test/rails/view_test.rb +24 -0
- data/test/test_helper.rb +30 -29
- metadata +68 -133
- data/.gitignore +0 -3
- data/about.yml +0 -7
- data/cells.gemspec +0 -26
- data/lib/cells/cell.rb +0 -16
- data/lib/cells/cell/base.rb +0 -470
- data/lib/cells/cell/caching.rb +0 -163
- data/lib/cells/cell/test_case.rb +0 -158
- data/lib/cells/cell/view.rb +0 -55
- data/lib/cells/rails/action_controller.rb +0 -37
- data/lib/cells/rails/action_view.rb +0 -37
- data/rails/init.rb +0 -44
- data/rails_generators/cells_install/templates/tasks.rake +0 -6
- data/test/app/cells/a/another_state.html.erb +0 -1
- data/test/app/cells/a/existing_view.html.erb +0 -1
- data/test/app/cells/a/inherited_view.html.erb +0 -1
- data/test/app/cells/a/inherited_view.js.erb +0 -1
- data/test/app/cells/a/view_with_locals.html.erb +0 -1
- data/test/app/cells/a/view_with_render_call.html.erb +0 -1
- data/test/app/cells/b/existing_view.html.erb +0 -1
- data/test/app/cells/b/existing_view.js.erb +0 -1
- data/test/app/cells/b/layouts/metal.html.erb +0 -1
- data/test/app/cells/b/view_with_render_call.html.erb +0 -1
- data/test/app/cells/bassist/jam.html.erb +0 -3
- data/test/app/cells/bassist/play.html.erb +0 -1
- data/test/app/cells/cells_test_one/renamed_instance_view.html.erb +0 -1
- data/test/app/cells/cells_test_one/super_state.html.erb +0 -1
- data/test/app/cells/cells_test_one_cell.rb +0 -20
- data/test/app/cells/cells_test_two_cell.rb +0 -4
- data/test/app/cells/helper_using/state_using_application_helper.html.erb +0 -3
- data/test/app/cells/helper_using/state_with_automatic_helper_invocation.html.erb +0 -3
- data/test/app/cells/helper_using/state_with_helper_invocation.html.erb +0 -3
- data/test/app/cells/helper_using/state_with_helper_method_invocation.html.erb +0 -3
- data/test/app/cells/layouts/metal.html.erb +0 -1
- data/test/app/cells/my_child/hello.html.erb +0 -1
- data/test/app/cells/my_mother/bye.html.erb +0 -1
- data/test/app/cells/my_mother/hello.html.erb +0 -1
- data/test/app/cells/my_test/_broken_partial.html.erb +0 -1
- data/test/app/cells/my_test/_partial.html.erb +0 -1
- data/test/app/cells/my_test/state_with_instance_var.html.erb +0 -1
- data/test/app/cells/my_test/state_with_link_to.html.erb +0 -3
- data/test/app/cells/my_test/state_with_not_included_helper_method.html.erb +0 -8
- data/test/app/cells/my_test/view_containing_broken_partial.html.erb +0 -3
- data/test/app/cells/my_test/view_containing_nonexistant_partial.html.erb +0 -3
- data/test/app/cells/my_test/view_containing_partial.html.erb +0 -3
- data/test/app/cells/my_test/view_containing_partial_without_cell_name.html.erb +0 -3
- data/test/app/cells/my_test/view_in_local_test_views_dir.html.erb +0 -1
- data/test/app/cells/my_test/view_with_explicit_english_translation.en.html.erb +0 -1
- data/test/app/cells/my_test/view_with_explicit_english_translation.html.erb +0 -1
- data/test/app/cells/my_test/view_with_instance_var.html.erb +0 -4
- data/test/app/cells/really_module/nested/happy_state.html.erb +0 -1
- data/test/app/cells/really_module/nested_cell.rb +0 -11
- data/test/app/cells/simple/two_templates_state.html.mytpl +0 -1
- data/test/app/cells/simple_cell.rb +0 -7
- data/test/app/cells/test/beep.html.erb +0 -1
- data/test/app/cells/test/state_invoking_capture.html.erb +0 -7
- data/test/app/cells/test/state_invoking_content_for.html.erb +0 -7
- data/test/app/cells/test/state_invoking_content_for_twice.html.erb +0 -9
- data/test/app/cells/test/state_with_not_included_helper_method.html.erb +0 -8
- data/test/app/cells/two_helpers_including/state_using_another_helper.html.erb +0 -3
- data/test/bugs_test.rb +0 -23
- data/test/caching_test.rb +0 -270
- data/test/capture_helper_test.rb +0 -59
- data/test/cells_test.rb +0 -352
- data/test/rails_test.rb +0 -35
- data/test/render_test.rb +0 -305
- data/test/test_case_test.rb +0 -106
data/rails/init.rb
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
require 'cells'
|
|
3
|
-
|
|
4
|
-
# Tell *Rails* to load files in path:
|
|
5
|
-
#
|
|
6
|
-
# * +app/cells+
|
|
7
|
-
#
|
|
8
|
-
dep = ::ActiveSupport::Dependencies
|
|
9
|
-
|
|
10
|
-
if dep.respond_to?(:autoload_paths)
|
|
11
|
-
dep.autoload_paths << Rails.root.join(*%w[app cells])
|
|
12
|
-
else
|
|
13
|
-
dep.load_paths << Rails.root.join(*%w[app cells])
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# Rails initialization hook.
|
|
17
|
-
if defined?(Rails)
|
|
18
|
-
Rails.configuration.after_initialize do
|
|
19
|
-
initializer.loaded_plugins.each do |plugin|
|
|
20
|
-
engine_cells_dir = File.join(plugin.directory, *%w[app cells])
|
|
21
|
-
|
|
22
|
-
if plugin.engine? && File.exists?(engine_cells_dir)
|
|
23
|
-
# propagate the view- and code path of this engine-cell:
|
|
24
|
-
::Cell::Base.view_paths << engine_cells_dir
|
|
25
|
-
if dep.respond_to?(:autoload_paths)
|
|
26
|
-
dep.autoload_paths << engine_cells_dir
|
|
27
|
-
else
|
|
28
|
-
dep.load_paths << engine_cells_dir
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# if a path is in +load_once_path+ it won't be reloaded between requests.
|
|
32
|
-
unless config.reload_plugins?
|
|
33
|
-
if dep.respond_to?(:autoload_once_paths)
|
|
34
|
-
dep.autoload_once_paths << engine_cells_dir
|
|
35
|
-
else
|
|
36
|
-
dep.load_once_paths << engine_cells_dir
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
else
|
|
43
|
-
puts "[cells:] NOTE: Rails environment not available. Running isolated."
|
|
44
|
-
end
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
A/another_state/<%= @a %>,<%= @b %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
A/existing_view/<%= @a %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
A/inherited_view/<%= @a %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
A/inherited_view/<%= @a %>/js
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
A/view_with_locals/<%= @a %>/<%= name %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
A/view_with_render_call/<%= @a %>:<%= render :view => :existing_view %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
B/existing_view/<%= @b %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
B/existing_view/<%= @b %>/js
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
B-Metal:<%= @content_for_layout %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
B/view_with_render_call/<%= @a %>:<%= render :view => :inherited_view %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Doo
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<p id="renamedInstanceView" />
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<p id="superStateView"><%= @my_class %></p>
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
class CellsTestOneCell < ::Cell::Base
|
|
4
|
-
def super_state
|
|
5
|
-
@my_class = self.class.to_s
|
|
6
|
-
return
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def instance_view
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def view_for_state(state)
|
|
13
|
-
if state.to_s == 'instance_view'
|
|
14
|
-
return 'cells_test_one/renamed_instance_view'
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def state_with_no_view
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Metal:<%= @content_for_layout %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div id="childHello"><%= @message %></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div id="motherBye"><%= @message %></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div id="motherHello"><%= @message %></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<%= broken_assignment %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div id="partial" />
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<%= @my_ivar %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div id="localView" />
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div id="explicitEnglishTranslation" />
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div id="defaultTranslation" />
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<div id="happyStateView"></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Written using my own spiffy templating system
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<h1>beep!</h1>
|
data/test/bugs_test.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
require File.join(File.dirname(__FILE__), 'test_helper')
|
|
3
|
-
|
|
4
|
-
class MyTestCell < ::Cell::Base
|
|
5
|
-
def state_with_instance_var
|
|
6
|
-
@my_ivar = 'value from cell'
|
|
7
|
-
render
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
class BugsTest < ActionController::TestCase
|
|
12
|
-
def test_controller_overriding_cell_ivars
|
|
13
|
-
@controller.class_eval do
|
|
14
|
-
attr_accessor :my_ivar
|
|
15
|
-
end
|
|
16
|
-
@controller.my_ivar = 'value from controller'
|
|
17
|
-
|
|
18
|
-
cell = MyTestCell.new(@controller)
|
|
19
|
-
c = cell.render_state(:state_with_instance_var)
|
|
20
|
-
|
|
21
|
-
assert_equal 'value from cell', c
|
|
22
|
-
end
|
|
23
|
-
end
|
data/test/caching_test.rb
DELETED
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
require File.join(File.dirname(__FILE__), *%w[test_helper])
|
|
3
|
-
|
|
4
|
-
class CachingCell < ::Cell::Base
|
|
5
|
-
cache :cached_state
|
|
6
|
-
|
|
7
|
-
def cached_state
|
|
8
|
-
count = controller.session[:cache_count]
|
|
9
|
-
count ||= 0
|
|
10
|
-
count += 1
|
|
11
|
-
"#{count} should remain the same forever!"
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def not_cached_state
|
|
15
|
-
"i'm really static"
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
cache :versioned_cached_state, Proc.new { |cell|
|
|
19
|
-
if (v = cell.session[:version]) > 0
|
|
20
|
-
{:version => v}
|
|
21
|
-
else
|
|
22
|
-
{:version => 0}
|
|
23
|
-
end
|
|
24
|
-
}
|
|
25
|
-
def versioned_cached_state
|
|
26
|
-
"#{session[:version].inspect} should change every third call!"
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def my_version_proc
|
|
30
|
-
if (v = session[:version]) > 0
|
|
31
|
-
{:version => v}
|
|
32
|
-
else
|
|
33
|
-
{:version => 0}
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# def cached_state_with_symbol_proc
|
|
38
|
-
# end
|
|
39
|
-
|
|
40
|
-
cache :cheers
|
|
41
|
-
def cheers
|
|
42
|
-
'cheers!'
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
cache :another_state
|
|
46
|
-
def another_state
|
|
47
|
-
@opts[:str]
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
class AnotherCachingCell < ::Cell::Base
|
|
52
|
-
cache :cheers
|
|
53
|
-
def cheers
|
|
54
|
-
'prost!'
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def another_state
|
|
58
|
-
@opts[:str]
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
class CachingTest < ActiveSupport::TestCase
|
|
63
|
-
def setup
|
|
64
|
-
super
|
|
65
|
-
@controller.session = {}
|
|
66
|
-
@cc = CachingCell.new(@controller)
|
|
67
|
-
@c2 = AnotherCachingCell.new(@controller)
|
|
68
|
-
|
|
69
|
-
@old_action_controller_cache_store = ::ActionController::Base.cache_store
|
|
70
|
-
@old_action_controller_perform_caching = ::ActionController::Base.perform_caching
|
|
71
|
-
::ActionController::Base.cache_store = :memory_store
|
|
72
|
-
::ActionController::Base.perform_caching = true
|
|
73
|
-
|
|
74
|
-
### FIXME: sorry for that, but we need to force caching. avoid #alias_method_chain.
|
|
75
|
-
Cell::Base.alias_method_chain :render_state, :caching unless Cell::Base.method_defined? :render_state_without_caching
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def teardown
|
|
79
|
-
::ActionController::Base.cache_store = @old_action_controller_cache_store
|
|
80
|
-
::ActionController::Base.perform_caching = @old_action_controller_perform_caching
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def test_state_cached?
|
|
84
|
-
assert @cc.state_cached?(:cached_state)
|
|
85
|
-
assert_not @cc.state_cached?(:not_cached_state)
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def test_cache_without_options
|
|
89
|
-
# :cached_state is cached without any options:
|
|
90
|
-
assert_nil @cc.version_procs[:cached_state]
|
|
91
|
-
assert_nil @cc.version_procs[:not_cached_state]
|
|
92
|
-
|
|
93
|
-
# cache_options must at least return an empty hash for a cached state:
|
|
94
|
-
assert_equal ({}), @cc.cache_options[:cached_state]
|
|
95
|
-
assert_nil @cc.cache_options[:not_cached_state]
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def test_cache_with_proc_only
|
|
99
|
-
CachingCell.class_eval do
|
|
100
|
-
cache :my_state, Proc.new {}
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
assert_kind_of Proc, @cc.version_procs[:my_state]
|
|
104
|
-
assert_equal ({}), @cc.cache_options[:my_state]
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def test_cache_with_proc_and_cache_options
|
|
108
|
-
CachingCell.class_eval do
|
|
109
|
-
cache :my_state, Proc.new{}, {:expires_in => 10.seconds}
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
assert_kind_of Proc, @cc.version_procs[:my_state]
|
|
113
|
-
assert_equal ({:expires_in => 10.seconds}), @cc.cache_options[:my_state]
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def test_cache_with_cache_options_only
|
|
117
|
-
CachingCell.class_eval do
|
|
118
|
-
cache :my_state, :expires_in => 10.seconds
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
assert @cc.version_procs.has_key?(:my_state)
|
|
122
|
-
assert_nil @cc.version_procs[:my_state]
|
|
123
|
-
assert_equal ({:expires_in => 10.seconds}), @cc.cache_options[:my_state]
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
def test_if_caching_works
|
|
127
|
-
c = @cc.render_state(:cached_state)
|
|
128
|
-
assert_equal "1 should remain the same forever!", c
|
|
129
|
-
|
|
130
|
-
c = @cc.render_state(:cached_state)
|
|
131
|
-
assert_equal "1 should remain the same forever!", c, ":cached_state was invoked again"
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def test_cache_key
|
|
135
|
-
assert_equal "cells/caching/some_state", @cc.cache_key(:some_state)
|
|
136
|
-
assert_equal @cc.cache_key(:some_state), ::Cell::Base.cache_key_for(:caching, :some_state)
|
|
137
|
-
assert_equal "cells/caching/some_state/param=9", @cc.cache_key(:some_state, :param => 9)
|
|
138
|
-
assert_equal "cells/caching/some_state/a=1/b=2", @cc.cache_key(:some_state, :b => 2, :a => 1)
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
def test_render_state_without_caching
|
|
142
|
-
c = @cc.render_state(:not_cached_state)
|
|
143
|
-
assert_equal "i'm really static", c
|
|
144
|
-
|
|
145
|
-
c = @cc.render_state(:not_cached_state)
|
|
146
|
-
assert_equal "i'm really static", c
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
def test_caching_with_version_proc
|
|
150
|
-
@controller.session[:version] = 0
|
|
151
|
-
# render state, as it's not cached:
|
|
152
|
-
c = @cc.render_state(:versioned_cached_state)
|
|
153
|
-
assert_equal '0 should change every third call!', c
|
|
154
|
-
|
|
155
|
-
@controller.session[:version] = -1
|
|
156
|
-
c = @cc.render_state(:versioned_cached_state)
|
|
157
|
-
assert_equal '0 should change every third call!', c
|
|
158
|
-
|
|
159
|
-
@controller.session[:version] = 1
|
|
160
|
-
c = @cc.render_state(:versioned_cached_state)
|
|
161
|
-
assert_equal '1 should change every third call!', c
|
|
162
|
-
|
|
163
|
-
@controller.session[:version] = 2
|
|
164
|
-
c = @cc.render_state(:versioned_cached_state)
|
|
165
|
-
assert_equal '2 should change every third call!', c
|
|
166
|
-
|
|
167
|
-
@controller.session[:version] = 3
|
|
168
|
-
c = @cc.render_state(:versioned_cached_state)
|
|
169
|
-
assert_equal '3 should change every third call!', c
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
def test_caching_with_instance_version_proc
|
|
173
|
-
CachingCell.class_eval do
|
|
174
|
-
cache :versioned_cached_state, :my_version_proc
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
@controller.session[:version] = 0
|
|
178
|
-
c = @cc.render_state(:versioned_cached_state)
|
|
179
|
-
assert_equal '0 should change every third call!', c
|
|
180
|
-
|
|
181
|
-
@controller.session[:version] = 1
|
|
182
|
-
c = @cc.render_state(:versioned_cached_state)
|
|
183
|
-
assert_equal '1 should change every third call!', c
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
def test_caching_with_two_same_named_states
|
|
187
|
-
c = @cc.render_state(:cheers)
|
|
188
|
-
assert_equal 'cheers!', c
|
|
189
|
-
|
|
190
|
-
c = @c2.render_state(:cheers)
|
|
191
|
-
assert_equal 'prost!', c
|
|
192
|
-
|
|
193
|
-
c = @cc.render_state(:cheers)
|
|
194
|
-
assert_equal 'cheers!', c
|
|
195
|
-
|
|
196
|
-
c = @c2.render_state(:cheers)
|
|
197
|
-
assert_equal 'prost!', c
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
def test_caching_one_of_two_same_named_states
|
|
201
|
-
### DISCUSS with drogus: the problem was that CachingCell and AnotherCachingCell keep
|
|
202
|
-
### overwriting their version_procs, wasn't it? why don't we test that with different
|
|
203
|
-
### version_procs in each cell?
|
|
204
|
-
@cc = CachingCell.new(@controller, :str => 'foo1')
|
|
205
|
-
c = @cc.render_state(:another_state)
|
|
206
|
-
assert_equal 'foo1',c
|
|
207
|
-
|
|
208
|
-
@c2 = AnotherCachingCell.new(@controller, :str => 'foo2')
|
|
209
|
-
c = @c2.render_state(:another_state)
|
|
210
|
-
assert_equal 'foo2', c
|
|
211
|
-
|
|
212
|
-
@cc = CachingCell.new(@controller, :str => 'bar1')
|
|
213
|
-
c = @cc.render_state(:another_state)
|
|
214
|
-
assert_equal 'foo1', c
|
|
215
|
-
|
|
216
|
-
@c2 = AnotherCachingCell.new(@controller, :str => 'bar2')
|
|
217
|
-
c = @c2.render_state(:another_state)
|
|
218
|
-
assert_equal 'bar2', c
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
def test_expire_cache_key
|
|
222
|
-
key = @cc.cache_key(:cached_state)
|
|
223
|
-
@cc.render_state(:cached_state)
|
|
224
|
-
assert ::Cell::Base.cache_store.read(key)
|
|
225
|
-
|
|
226
|
-
::Cell::Base.expire_cache_key(key)
|
|
227
|
-
assert_not ::Cell::Base.cache_store.read(key)
|
|
228
|
-
|
|
229
|
-
# test via ActionController::expire_cell_state, which is called from Sweepers.
|
|
230
|
-
@cc.render_state(:cached_state)
|
|
231
|
-
assert ::Cell::Base.cache_store.read(key)
|
|
232
|
-
|
|
233
|
-
@controller.expire_cell_state(:caching, :cached_state)
|
|
234
|
-
assert_not ::Cell::Base.cache_store.read(key)
|
|
235
|
-
|
|
236
|
-
# ..and additionally test if passing cache key args works:
|
|
237
|
-
key = @cc.cache_key(:cached_state, :more => :yes)
|
|
238
|
-
assert ::Cell::Base.cache_store.write(key, 'test content')
|
|
239
|
-
|
|
240
|
-
@controller.expire_cell_state(:caching, :cached_state, :more => :yes)
|
|
241
|
-
assert_not ::Cell::Base.cache_store.read(key)
|
|
242
|
-
end
|
|
243
|
-
|
|
244
|
-
def test_find_family_view_for_state_with_caching
|
|
245
|
-
# test environment: --------------------------------------
|
|
246
|
-
assert_equal ({}), ACell.state2view_cache
|
|
247
|
-
|
|
248
|
-
cell = ACell.new(@controller)
|
|
249
|
-
cell.class.instance_eval do
|
|
250
|
-
def cache_configured?
|
|
251
|
-
false
|
|
252
|
-
end
|
|
253
|
-
end
|
|
254
|
-
cell.render_state :existing_view
|
|
255
|
-
# in development/test environment, no view name caching should happen,
|
|
256
|
-
# if perform_caching is false.
|
|
257
|
-
assert_equal ({}), ACell.state2view_cache
|
|
258
|
-
|
|
259
|
-
# production environment: --------------------------------
|
|
260
|
-
cell = ACell.new(@controller)
|
|
261
|
-
cell.class.instance_eval do
|
|
262
|
-
def cache_configured?
|
|
263
|
-
true
|
|
264
|
-
end
|
|
265
|
-
end
|
|
266
|
-
|
|
267
|
-
cell.render_state :existing_view
|
|
268
|
-
assert ACell.state2view_cache.has_key?("existing_view/html")
|
|
269
|
-
end
|
|
270
|
-
end
|