render_turbo_stream 0.1.43 → 0.1.45
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +17 -11
- data/app/views/render_turbo_stream_partials.html.erb +1 -1
- data/app/views/render_turbo_stream_partials.turbo_stream.erb +3 -3
- data/lib/render_turbo_stream/test/request_helpers.rb +2 -2
- data/lib/render_turbo_stream/version.rb +1 -1
- data/lib/render_turbo_stream.rb +11 -15
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30eb2a0495b25d67ff59b2194b7b54cf20c8d0f813ade47a6809616d13231ba3
|
4
|
+
data.tar.gz: a934e1be22f6610a10fd16ce642a5601d8ef11224bfd1a9d70f1f1d471a83d71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c12cc64cbf409f74a7bf8f2faf6c6aa63fbe063a0bca4d8ec5939fea06b77011f873633e71daa44d6ef518f70686e382a115ac9c0da6b426413fb8665486c770
|
7
|
+
data.tar.gz: e6f689292afcc93064d1a67ee5d13a1bcd68a85cfb2b21a600624e5224585c4d5db7d6b21232ee30716924d5de82255ed321cab0a8ccf0d65c048aa7c9228325
|
data/README.md
CHANGED
@@ -32,11 +32,11 @@ spec/rails_helper.rb
|
|
32
32
|
|
33
33
|
```ruby
|
34
34
|
RSpec.configure do |config|
|
35
|
-
config.include RenderTurboStream::
|
35
|
+
config.include RenderTurboStream::Test::RequestHelpers, type: :request
|
36
36
|
end
|
37
37
|
```
|
38
38
|
|
39
|
-
Redirection
|
39
|
+
**Redirection**
|
40
40
|
|
41
41
|
For redirection to work, you must follow the installation steps
|
42
42
|
from [turbo_power](https://github.com/marcoroth/turbo_power).
|
@@ -122,18 +122,24 @@ RSpec.describe "Articles", type: :request do
|
|
122
122
|
expect(partials_log.join('')).to include('Article could not be created')
|
123
123
|
expect(partials_log.join('')).to include('layouts/flash')
|
124
124
|
|
125
|
-
|
126
|
-
#=> 2 partials in total: form, flash, no matter how many times each is rendered (example «flash»: a flash partial can be rendered several times)
|
125
|
+
# THERE ARE 3 COUNTS
|
127
126
|
|
128
|
-
|
129
|
-
|
130
|
-
expect(
|
131
|
-
#=> id is the ID that turbo-stream pointed to (for replace/append/... an item)
|
127
|
+
# A) Number of partials: "form" and "flash" are 2 partials
|
128
|
+
|
129
|
+
expect(partials_count).to eq(2)
|
132
130
|
|
133
|
-
|
134
|
-
|
131
|
+
# B) Total count of responses per partial (1 => is default)
|
132
|
+
|
133
|
+
expect(partial_response_count('articles/form', total: 1, id: 'form')).to be_truthy
|
134
|
+
# id is the html id to which turbo-stream is pointing.
|
135
|
+
|
136
|
+
# C) If a block is given: the number of matching responses returned by "partial_response_count".
|
137
|
+
|
138
|
+
expect(partial_response_count('flash'){|r|r.inner_html.include?('Article could not be created')}).to eq(1)
|
139
|
+
# result is either nil (if 0 matched) or a integer >= 1
|
140
|
+
|
141
|
+
expect(partial_response_count('flash'){|r|r.css('div').inner_html.include?('Article could not be created')}).to eq(1)
|
135
142
|
#=> you can use the validators of nokogiri, check: https://nokogiri.org/tutorials/parsing_an_html_xml_document.html
|
136
|
-
#=> if a partial was rendered more than once: at least one response must match
|
137
143
|
end
|
138
144
|
|
139
145
|
end
|
@@ -17,21 +17,21 @@
|
|
17
17
|
<% ctl[:action] = :replace %>
|
18
18
|
<% Rails.logger.debug(" • render-turbo-stream REPLACE => #{info}") %>
|
19
19
|
<%= turbo_stream.replace s[:id] do %>
|
20
|
-
<%= render s[:partial], locals: s[:locals] %>
|
20
|
+
<%= render s[:partial], locals: s[:locals].symbolize_keys %>
|
21
21
|
<% end %>
|
22
22
|
|
23
23
|
<% elsif s[:action].to_sym == :prepend %>
|
24
24
|
<% ctl[:action] = :prepend %>
|
25
25
|
<% Rails.logger.debug(" • render-turbo-stream PREPEND => #{info}") %>
|
26
26
|
<%= turbo_stream.prepend s[:id] do %>
|
27
|
-
<%= render s[:partial], locals: s[:locals] %>
|
27
|
+
<%= render s[:partial], locals: s[:locals].symbolize_keys %>
|
28
28
|
<% end %>
|
29
29
|
|
30
30
|
<% elsif s[:action].to_sym == :append %>
|
31
31
|
<% ctl[:action] = :append %>
|
32
32
|
<% Rails.logger.debug(" • render-turbo-stream APPEND => #{info}") %>
|
33
33
|
<%= turbo_stream.prepend s[:id] do %>
|
34
|
-
<%= render s[:partial], locals: s[:locals] %>
|
34
|
+
<%= render s[:partial], locals: s[:locals].symbolize_keys %>
|
35
35
|
<% end %>
|
36
36
|
|
37
37
|
<% else %>
|
@@ -43,8 +43,8 @@ module RenderTurboStream
|
|
43
43
|
end
|
44
44
|
|
45
45
|
|
46
|
-
def
|
47
|
-
RenderTurboStream::Libs.
|
46
|
+
def partial_response_count(partial, id: nil, total: 1, &block)
|
47
|
+
RenderTurboStream::Libs.partial_response_count(response, partial, id, total, &block )
|
48
48
|
end
|
49
49
|
|
50
50
|
end
|
data/lib/render_turbo_stream.rb
CHANGED
@@ -216,7 +216,7 @@ module RenderTurboStream
|
|
216
216
|
else
|
217
217
|
a['id'] == id
|
218
218
|
end
|
219
|
-
partial_matched
|
219
|
+
partial_matched && (id.present? ? id_matched : true)
|
220
220
|
end
|
221
221
|
|
222
222
|
end
|
@@ -233,26 +233,22 @@ module RenderTurboStream
|
|
233
233
|
part.length
|
234
234
|
end
|
235
235
|
|
236
|
-
def self.
|
236
|
+
def self.partial_response_count(response, partial, id, total, &block)
|
237
237
|
responses = select_responses(response, partial, id)
|
238
|
-
if block_given?
|
239
238
|
|
240
|
-
|
241
|
-
|
242
|
-
|
239
|
+
if total && responses.count != total
|
240
|
+
false
|
241
|
+
elsif block_given?
|
242
|
+
res = responses.select do |r|
|
243
243
|
parsed = Nokogiri::HTML(r['html_response'])
|
244
244
|
r = yield parsed
|
245
|
-
|
246
|
-
end
|
247
|
-
|
248
|
-
|
245
|
+
r.present?
|
246
|
+
end.length
|
247
|
+
(res == 0 ? nil : res)
|
249
248
|
else
|
250
|
-
|
251
|
-
responses.length == count
|
252
|
-
else
|
253
|
-
nil
|
254
|
-
end
|
249
|
+
responses.length
|
255
250
|
end
|
251
|
+
|
256
252
|
end
|
257
253
|
|
258
254
|
end
|