render_turbo_stream 0.1.20 → 0.1.21
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.
- checksums.yaml +4 -4
- data/README.md +16 -13
- data/app/views/render_turbo_stream_partials.html.erb +20 -5
- data/lib/render_turbo_stream/test_helpers.rb +26 -23
- data/lib/render_turbo_stream/version.rb +1 -1
- 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: 9b84c79cfe97c99b55813d6a22ebcf0267e6dc7ee66b9a6c8bb922c8f5cf812b
|
4
|
+
data.tar.gz: 420971446a65cbda6c141be9c32941ddf991944cbb3c84f9f2eb259cf077c3b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bc0935233cc25323b8f92e12227308d680b24d6ea532786e685c75d6500158d68991dd9babe5d2bc1424ca8c93f43912528cc8a4abac6363c636331d8929fd5
|
7
|
+
data.tar.gz: f2ee4939746a8b7d4dc06df81920e55baa3c5bce6ee26b04778b91e5067ffb846e436fddeed2c4868f9ea9b0ca5876a8f4e29a65f146fc438c362bfbc7c13c05
|
data/README.md
CHANGED
@@ -93,22 +93,25 @@ RSpec.describe "Articles", type: :request do
|
|
93
93
|
let(:invalid_params) { { article: { title: '', desciption: 'abc' } } }
|
94
94
|
it 'create failed' do
|
95
95
|
post articles_path(params: invalid_params)
|
96
|
+
|
96
97
|
expect(response.status).to eq(422)
|
97
|
-
expect(
|
98
|
+
expect(partials_count).to eq(2)
|
98
99
|
|
99
100
|
# .._params means: check the params used to generate the partials.
|
100
|
-
expect(
|
101
|
-
expect(
|
102
|
-
|
103
|
-
expect(
|
104
|
-
expect(
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
expect(
|
111
|
-
|
101
|
+
expect(partials_paths).to include('articles/form', 'layouts/flash')
|
102
|
+
expect(partials_ids).to include('form', 'flash-box')
|
103
|
+
|
104
|
+
expect(partials_params_by_id['flash-box'].length).to eq(1)
|
105
|
+
expect(partials_params_by_id['flash-box'].first['partial']).to eq('layouts/flash')
|
106
|
+
|
107
|
+
expect(partials_html_by_id['flash-box'].length).to eq(1)
|
108
|
+
expect(partials_html_by_id['flash-box'].first).to include('Article could not be created')
|
109
|
+
|
110
|
+
expect(partials_params_by_path['layouts/flash'].length).to eq(1)
|
111
|
+
expect(partials_params_by_path['layouts/flash'].first['partial']).to eq('layouts/flash')
|
112
|
+
|
113
|
+
expect(partials_html_by_path['layouts/flash'].length).to eq(1)
|
114
|
+
expect(partials_html_by_path['layouts/flash'].first).to include('Article could not be created')
|
112
115
|
end
|
113
116
|
end
|
114
117
|
```
|
@@ -1,19 +1,34 @@
|
|
1
1
|
<% partials_count = 0 %>
|
2
2
|
<% rendered_partials = [] %>
|
3
|
-
|
3
|
+
<%# htmls = [] %>
|
4
4
|
<% htmls_by_id = {} %>
|
5
|
+
<% params_by_id = {} %>
|
6
|
+
<% htmls_by_path = {} %>
|
7
|
+
<% params_by_path = {} %>
|
5
8
|
<% streams.each do |s| %>
|
6
9
|
<% html = (render s[:partial], locals: s[:locals], formats: [:html ]) %>
|
7
|
-
|
10
|
+
<%# htmls.push(html) %>
|
8
11
|
<% htmls_by_id[s[:id]] ||= [] %>
|
9
12
|
<% htmls_by_id[s[:id]].push(html) %>
|
13
|
+
<% params_by_id[s[:id]] ||= [] %>
|
14
|
+
<% params_by_id[s[:id]].push(s) %>
|
15
|
+
|
16
|
+
<% htmls_by_path[s[:partial]] ||= [] %>
|
17
|
+
<% htmls_by_path[s[:partial]].push(html) %>
|
18
|
+
<% params_by_path[s[:partial]] ||= [] %>
|
19
|
+
<% params_by_path[s[:partial]].push(s) %>
|
20
|
+
|
10
21
|
<% partials_count += 1 %>
|
11
22
|
<% rendered_partials.push(s[:partial]) %>
|
12
23
|
<% end %>
|
13
24
|
|
25
|
+
<%= content_tag :div, htmls_by_id.to_json, id: 'htmls_by_id' %>
|
26
|
+
<%= content_tag :div, params_by_id.to_json, id: 'params_by_id' %>
|
27
|
+
|
28
|
+
<%= content_tag :div, htmls_by_path.to_json, id: 'htmls_by_path' %>
|
29
|
+
<%= content_tag :div, params_by_path.to_json, id: 'params_by_path' %>
|
14
30
|
|
15
31
|
<%= content_tag :div, check.to_json, id: 'check-json' %>
|
16
|
-
|
17
|
-
<%= content_tag :div, htmls_by_id.to_json, id: 'htmls_by_id' %>
|
32
|
+
<%#= content_tag :div, htmls.to_json, id: 'htmls' %>
|
18
33
|
<%= content_tag :div, rendered_partials.to_json, id: 'rendered-partials' %>
|
19
|
-
|
34
|
+
<%#= content_tag :div, streams.to_json, id: 'streams' %>
|
@@ -1,44 +1,47 @@
|
|
1
1
|
module RenderTurboStream
|
2
2
|
module TestHelpers
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
|
4
|
+
# returns hash of arrays with responded html(as string) contents by ID
|
5
|
+
def partials_html_by_id
|
6
|
+
e = Nokogiri::HTML(response.body).search('#htmls_by_id').first
|
7
|
+
JSON.parse(e.inner_html)
|
6
8
|
end
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
e = Nokogiri::HTML(response.body).search('#htmls').first
|
10
|
+
def partials_params_by_id
|
11
|
+
e = Nokogiri::HTML(response.body).search('#params_by_id').first
|
11
12
|
JSON.parse(e.inner_html)
|
12
13
|
end
|
13
14
|
|
14
|
-
# returns hash of arrays with responded html(as string) contents by
|
15
|
-
def
|
16
|
-
e = Nokogiri::HTML(response.body).search('#
|
15
|
+
# returns hash of arrays with responded html(as string) contents by partial-path
|
16
|
+
def partials_html_by_path
|
17
|
+
e = Nokogiri::HTML(response.body).search('#htmls_by_path').first
|
17
18
|
JSON.parse(e.inner_html)
|
18
19
|
end
|
19
20
|
|
20
|
-
#
|
21
|
-
def
|
22
|
-
e = Nokogiri::HTML(response.body).search('#
|
21
|
+
# returns hash of arrays with params by them rendered partials are called
|
22
|
+
def partials_params_by_path
|
23
|
+
e = Nokogiri::HTML(response.body).search('#params_by_path').first
|
23
24
|
JSON.parse(e.inner_html)
|
24
25
|
end
|
25
26
|
|
26
|
-
#
|
27
|
-
|
28
|
-
|
29
|
-
partials = Nokogiri::HTML(response.body).search('#streams').first
|
30
|
-
h = JSON.parse(partials.inner_html)
|
31
|
-
h.select{|e| e['id'] == id}
|
27
|
+
# count of rendered parials
|
28
|
+
def partials_count
|
29
|
+
partials_paths.length
|
32
30
|
end
|
33
31
|
|
34
|
-
#
|
35
|
-
def
|
36
|
-
|
32
|
+
# array of strings of rendered partial ids
|
33
|
+
def partials_ids
|
34
|
+
e = Nokogiri::HTML(response.body).search('#check-json').first
|
35
|
+
JSON.parse(e.inner_html).keys
|
37
36
|
end
|
38
37
|
|
39
|
-
|
40
|
-
|
38
|
+
# array of strings of paths by them rendered partials are called, example: ['articles/form']
|
39
|
+
def partials_paths
|
40
|
+
e = Nokogiri::HTML(response.body).search('#rendered-partials').first
|
41
|
+
JSON.parse(e.inner_html)
|
41
42
|
end
|
43
|
+
|
44
|
+
# check response status and return redirected_to path
|
42
45
|
def turbo_redirected_to
|
43
46
|
expect(response.status).to eq(302)
|
44
47
|
r = JSON.parse(response.body)
|