prototype-rails 4.0.0 → 4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +20 -0
- data/{README → README.md} +12 -0
- data/Rakefile +2 -0
- data/lib/prototype-rails/on_load_action_view.rb +5 -3
- metadata +15 -46
- data/test/assert_select_test.rb +0 -457
- data/test/controller/caching_test.rb +0 -43
- data/test/controller/content_type_test.rb +0 -16
- data/test/controller/mime_responds_test.rb +0 -213
- data/test/controller/new_base/content_type_test.rb +0 -19
- data/test/controller/new_base/render_rjs_test.rb +0 -71
- data/test/controller/render_js_test.rb +0 -22
- data/test/fixtures/functional_caching/_partial.erb +0 -3
- data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +0 -6
- data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +0 -1
- data/test/fixtures/old_content_type/render_default_for_rjs.rjs +0 -1
- data/test/fixtures/respond_to/all_types_with_layout.js.rjs +0 -1
- data/test/fixtures/respond_to/layouts/standard.html.erb +0 -1
- data/test/fixtures/respond_to/using_defaults.js.rjs +0 -1
- data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +0 -1
- data/test/fixtures/respond_with/using_resource.js.rjs +0 -1
- data/test/fixtures/test/_one.html.erb +0 -1
- data/test/fixtures/test/_partial.html.erb +0 -1
- data/test/fixtures/test/_partial.js.erb +0 -1
- data/test/fixtures/test/_two.html.erb +0 -1
- data/test/fixtures/test/delete_with_js.rjs +0 -2
- data/test/fixtures/test/enum_rjs_test.rjs +0 -6
- data/test/fixtures/test/greeting.js.rjs +0 -1
- data/test/fixtures/test/render_explicit_html_template.js.rjs +0 -1
- data/test/fixtures/test/render_implicit_html_template.js.rjs +0 -1
- data/test/javascript_helper_test.rb +0 -61
- data/test/lib/abstract_unit.rb +0 -225
- data/test/lib/controller/fake_models.rb +0 -29
- data/test/render_other_test.rb +0 -256
- data/test/template/prototype_helper_test.rb +0 -476
- data/test/template/render_test.rb +0 -24
- data/test/template/scriptaculous_helper_test.rb +0 -86
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
# Don't change '/../temp/' cavalierly or you might hose something you don't want hosed
|
4
|
-
FILE_STORE_PATH = File.expand_path('../../../temp/test_cache', __FILE__)
|
5
|
-
|
6
|
-
class CachingController < ActionController::Base
|
7
|
-
abstract!
|
8
|
-
|
9
|
-
self.cache_store = :file_store, FILE_STORE_PATH
|
10
|
-
end
|
11
|
-
|
12
|
-
class FunctionalCachingController < CachingController
|
13
|
-
def js_fragment_cached_with_partial
|
14
|
-
respond_to do |format|
|
15
|
-
format.js
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def formatted_fragment_cached
|
20
|
-
respond_to do |format|
|
21
|
-
format.js
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class FunctionalFragmentCachingTest < ActionController::TestCase
|
27
|
-
def setup
|
28
|
-
super
|
29
|
-
@store = ActiveSupport::Cache::MemoryStore.new
|
30
|
-
@controller = FunctionalCachingController.new
|
31
|
-
@controller.perform_caching = true
|
32
|
-
@controller.cache_store = @store
|
33
|
-
@request = ActionController::TestRequest.new
|
34
|
-
@response = ActionController::TestResponse.new
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_fragment_caching_in_rjs_partials
|
38
|
-
xhr :get, :js_fragment_cached_with_partial
|
39
|
-
assert_response :success
|
40
|
-
assert_match(/Old fragment caching in a partial/, @response.body)
|
41
|
-
assert_match "Old fragment caching in a partial", @store.instance_variable_get('@data').values.first.value
|
42
|
-
end
|
43
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
class OldContentTypeController < ActionController::Base
|
4
|
-
def render_default_for_rjs
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
class ContentTypeTest < ActionController::TestCase
|
9
|
-
tests OldContentTypeController
|
10
|
-
|
11
|
-
def test_default_for_rjs
|
12
|
-
xhr :post, :render_default_for_rjs
|
13
|
-
assert_equal Mime::JS, @response.content_type
|
14
|
-
assert_equal "utf-8", @response.charset
|
15
|
-
end
|
16
|
-
end
|
@@ -1,213 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
require 'controller/fake_models'
|
3
|
-
require 'active_support/core_ext/hash/conversions'
|
4
|
-
|
5
|
-
class RespondToController < ActionController::Base
|
6
|
-
layout :set_layout
|
7
|
-
|
8
|
-
def html_xml_or_rss
|
9
|
-
respond_to do |type|
|
10
|
-
type.html { render :text => "HTML" }
|
11
|
-
type.xml { render :text => "XML" }
|
12
|
-
type.rss { render :text => "RSS" }
|
13
|
-
type.all { render :text => "Nothing" }
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def js_or_html
|
18
|
-
respond_to do |type|
|
19
|
-
type.js { render :text => "JS" }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def json_or_yaml
|
24
|
-
respond_to do |type|
|
25
|
-
type.json { render :text => "JSON" }
|
26
|
-
type.yaml { render :text => "YAML" }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def html_or_xml
|
31
|
-
respond_to do |type|
|
32
|
-
type.html { render :text => "HTML" }
|
33
|
-
type.xml { render :text => "XML" }
|
34
|
-
type.all { render :text => "Nothing" }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def json_xml_or_html
|
39
|
-
respond_to do |type|
|
40
|
-
type.json { render :text => 'JSON' }
|
41
|
-
type.xml { render :xml => 'XML' }
|
42
|
-
type.html { render :text => 'HTML' }
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
|
47
|
-
def forced_xml
|
48
|
-
request.format = :xml
|
49
|
-
|
50
|
-
respond_to do |type|
|
51
|
-
type.html { render :text => "HTML" }
|
52
|
-
type.xml { render :text => "XML" }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def just_xml
|
57
|
-
respond_to do |type|
|
58
|
-
type.xml { render :text => "XML" }
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def using_defaults
|
63
|
-
respond_to do |type|
|
64
|
-
type.js
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def using_defaults_with_type_list
|
69
|
-
respond_to(:js)
|
70
|
-
end
|
71
|
-
|
72
|
-
def made_for_content_type
|
73
|
-
respond_to do |type|
|
74
|
-
type.rss { render :text => "RSS" }
|
75
|
-
type.atom { render :text => "ATOM" }
|
76
|
-
type.all { render :text => "Nothing" }
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def custom_type_handling
|
81
|
-
respond_to do |type|
|
82
|
-
type.html { render :text => "HTML" }
|
83
|
-
type.custom("application/crazy-xml") { render :text => "Crazy XML" }
|
84
|
-
type.all { render :text => "Nothing" }
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
|
89
|
-
def custom_constant_handling
|
90
|
-
respond_to do |type|
|
91
|
-
type.html { render :text => "HTML" }
|
92
|
-
type.mobile { render :text => "Mobile" }
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def custom_constant_handling_without_block
|
97
|
-
respond_to do |type|
|
98
|
-
type.html { render :text => "HTML" }
|
99
|
-
type.mobile
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
def handle_any
|
104
|
-
respond_to do |type|
|
105
|
-
type.html { render :text => "HTML" }
|
106
|
-
type.any(:js, :xml) { render :text => "Either JS or XML" }
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def handle_any_any
|
111
|
-
respond_to do |type|
|
112
|
-
type.html { render :text => 'HTML' }
|
113
|
-
type.any { render :text => 'Whatever you ask for, I got it' }
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
def all_types_with_layout
|
118
|
-
respond_to do |type|
|
119
|
-
type.js
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
|
124
|
-
def iphone_with_html_response_type
|
125
|
-
request.format = :iphone if request.env["HTTP_ACCEPT"] == "text/iphone"
|
126
|
-
|
127
|
-
respond_to do |type|
|
128
|
-
type.html { @type = "Firefox" }
|
129
|
-
type.iphone { @type = "iPhone" }
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
def iphone_with_html_response_type_without_layout
|
134
|
-
request.format = "iphone" if request.env["HTTP_ACCEPT"] == "text/iphone"
|
135
|
-
|
136
|
-
respond_to do |type|
|
137
|
-
type.html { @type = "Firefox"; render :action => "iphone_with_html_response_type" }
|
138
|
-
type.iphone { @type = "iPhone" ; render :action => "iphone_with_html_response_type" }
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
def rescue_action(e)
|
143
|
-
raise
|
144
|
-
end
|
145
|
-
|
146
|
-
protected
|
147
|
-
def set_layout
|
148
|
-
if ["all_types_with_layout", "iphone_with_html_response_type"].include?(action_name)
|
149
|
-
"respond_to/layouts/standard"
|
150
|
-
elsif action_name == "iphone_with_html_response_type_without_layout"
|
151
|
-
"respond_to/layouts/missing"
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
|
157
|
-
class RespondToControllerTest < ActionController::TestCase
|
158
|
-
tests RespondToController
|
159
|
-
|
160
|
-
def test_using_defaults
|
161
|
-
@request.accept = "text/javascript"
|
162
|
-
get :using_defaults
|
163
|
-
assert_equal "text/javascript", @response.content_type
|
164
|
-
assert_equal '$("body").visualEffect("highlight");', @response.body
|
165
|
-
end
|
166
|
-
|
167
|
-
def test_using_defaults_with_type_list
|
168
|
-
@request.accept = "text/javascript"
|
169
|
-
get :using_defaults_with_type_list
|
170
|
-
assert_equal "text/javascript", @response.content_type
|
171
|
-
assert_equal '$("body").visualEffect("highlight");', @response.body
|
172
|
-
end
|
173
|
-
|
174
|
-
def test_rjs_type_skips_layout
|
175
|
-
@request.accept = "text/javascript"
|
176
|
-
get :all_types_with_layout
|
177
|
-
assert_equal 'RJS for all_types_with_layout', @response.body
|
178
|
-
end
|
179
|
-
|
180
|
-
def test_xhr
|
181
|
-
xhr :get, :using_defaults
|
182
|
-
assert_equal '$("body").visualEffect("highlight");', @response.body
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
class RespondWithController < ActionController::Base
|
187
|
-
respond_to :html, :json, :js
|
188
|
-
|
189
|
-
def using_resource
|
190
|
-
respond_with(resource)
|
191
|
-
end
|
192
|
-
protected
|
193
|
-
|
194
|
-
def resource
|
195
|
-
Customer.new("david", request.delete? ? nil : 13)
|
196
|
-
end
|
197
|
-
|
198
|
-
def _render_js(js, options)
|
199
|
-
self.content_type ||= Mime::JS
|
200
|
-
self.response_body = js.respond_to?(:to_js) ? js.to_js : js
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
class RespondWithControllerTest < ActionController::TestCase
|
205
|
-
tests RespondWithController
|
206
|
-
|
207
|
-
def test_using_resource
|
208
|
-
@request.accept = "text/javascript"
|
209
|
-
get :using_resource
|
210
|
-
assert_equal "text/javascript", @response.content_type
|
211
|
-
assert_equal '$("body").visualEffect("highlight");', @response.body
|
212
|
-
end
|
213
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
module ContentType
|
4
|
-
class ImpliedController < ActionController::Base
|
5
|
-
# Template's mime type is used if no content_type is specified
|
6
|
-
|
7
|
-
self.view_paths = [ActionView::FixtureResolver.new(
|
8
|
-
"content_type/implied/i_am_js_rjs.js.rjs" => "page.alert 'hello'"
|
9
|
-
)]
|
10
|
-
end
|
11
|
-
|
12
|
-
class ImpliedContentTypeTest < Rack::TestCase
|
13
|
-
test "sets Content-Type as text/javascript when rendering *.js" do
|
14
|
-
get "/content_type/implied/i_am_js_rjs", "format" => "js"
|
15
|
-
|
16
|
-
assert_header "Content-Type", "text/javascript; charset=utf-8"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
module RenderRjs
|
4
|
-
class BasicController < ActionController::Base
|
5
|
-
layout "application", :only => :index_respond_to
|
6
|
-
|
7
|
-
self.view_paths = [ActionView::FixtureResolver.new(
|
8
|
-
"layouts/application.html.erb" => "",
|
9
|
-
"render_rjs/basic/index.js.rjs" => "page[:customer].replace_html render(:partial => 'customer')",
|
10
|
-
"render_rjs/basic/index_html.js.rjs" => "page[:customer].replace_html :partial => 'customer'",
|
11
|
-
"render_rjs/basic/index_no_js.js.erb" => "<%= render(:partial => 'developer') %>",
|
12
|
-
"render_rjs/basic/_customer.js.erb" => "JS Partial",
|
13
|
-
"render_rjs/basic/_customer.html.erb" => "HTML Partial",
|
14
|
-
"render_rjs/basic/_developer.html.erb" => "HTML Partial",
|
15
|
-
"render_rjs/basic/index_locale.js.rjs" => "page[:customer].replace_html :partial => 'customer'",
|
16
|
-
"render_rjs/basic/_customer.da.html.erb" => "Danish HTML Partial",
|
17
|
-
"render_rjs/basic/_customer.da.js.erb" => "Danish JS Partial"
|
18
|
-
)]
|
19
|
-
|
20
|
-
def index
|
21
|
-
render
|
22
|
-
end
|
23
|
-
|
24
|
-
def index_respond_to
|
25
|
-
respond_to do |format|
|
26
|
-
format.js { render :action => "index_no_js" }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def index_locale
|
31
|
-
self.locale = :da
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
class TestBasic < Rack::TestCase
|
36
|
-
testing BasicController
|
37
|
-
|
38
|
-
def setup
|
39
|
-
@old_locale = I18n.locale
|
40
|
-
end
|
41
|
-
|
42
|
-
def teardown
|
43
|
-
I18n.locale = @old_locale
|
44
|
-
end
|
45
|
-
|
46
|
-
test "rendering a partial in an RJS template should pick the JS template over the HTML one" do
|
47
|
-
get :index, "format" => "js"
|
48
|
-
assert_response("$(\"customer\").update(\"JS Partial\");")
|
49
|
-
end
|
50
|
-
|
51
|
-
test "rendering a partial in an RJS template should pick the HTML one if no JS is available" do
|
52
|
-
get :index_no_js, "format" => "js"
|
53
|
-
assert_response("HTML Partial")
|
54
|
-
end
|
55
|
-
|
56
|
-
test "rendering a partial in an RJS template should pick the HTML one if no JS is available on respond_to" do
|
57
|
-
get :index_respond_to, "format" => "js"
|
58
|
-
assert_response("HTML Partial")
|
59
|
-
end
|
60
|
-
|
61
|
-
test "replacing an element with a partial in an RJS template should pick the HTML template over the JS one" do
|
62
|
-
get :index_html, "format" => "js"
|
63
|
-
assert_response("$(\"customer\").update(\"HTML Partial\");")
|
64
|
-
end
|
65
|
-
|
66
|
-
test "replacing an element with a partial in an RJS template with a locale should pick the localed HTML template" do
|
67
|
-
get :index_locale, "format" => "js"
|
68
|
-
assert_response("$(\"customer\").update(\"Danish HTML Partial\");")
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'abstract_unit'
|
2
|
-
|
3
|
-
class RenderJSTest < ActionController::TestCase
|
4
|
-
class TestController < ActionController::Base
|
5
|
-
protect_from_forgery
|
6
|
-
|
7
|
-
def self.controller_path
|
8
|
-
'test'
|
9
|
-
end
|
10
|
-
|
11
|
-
def greeting
|
12
|
-
# let's just rely on the template
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
tests TestController
|
17
|
-
|
18
|
-
def test_render_with_default_from_accept_header
|
19
|
-
xhr :get, :greeting
|
20
|
-
assert_equal "$(\"body\").visualEffect(\"highlight\");", @response.body
|
21
|
-
end
|
22
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
page.replace_html 'notices', :partial => 'partial'
|
@@ -1 +0,0 @@
|
|
1
|
-
page.alert 'hello world!'
|
@@ -1 +0,0 @@
|
|
1
|
-
page << "RJS for all_types_with_layout"
|
@@ -1 +0,0 @@
|
|
1
|
-
<html><div id="html"><%= yield %></div></html>
|
@@ -1 +0,0 @@
|
|
1
|
-
page[:body].visual_effect :highlight
|
@@ -1 +0,0 @@
|
|
1
|
-
page[:body].visual_effect :highlight
|
@@ -1 +0,0 @@
|
|
1
|
-
page[:body].visual_effect :highlight
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render :partial => "two" %> world
|
@@ -1 +0,0 @@
|
|
1
|
-
partial html
|
@@ -1 +0,0 @@
|
|
1
|
-
partial js
|
@@ -1 +0,0 @@
|
|
1
|
-
Hello
|