render_turbo_stream 0.1.40 → 0.1.41

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1d7e23e79f3d7f68a39cd3b9163020515231012283068dd777ed5544f8ad5db
4
- data.tar.gz: 38428bc23917c1c9ea1643381a2034605b5ece0ab69f8768297e2f876e3e6720
3
+ metadata.gz: 9094ebe69f34f4acb61696aff5741b6d1eecaf934b17662bd81d6e5dda8533f9
4
+ data.tar.gz: b2a90bca1d9489b59a2de3cc4522b35f9ea81298f55472582adfa597a2a5a553
5
5
  SHA512:
6
- metadata.gz: 5a1f7456bd103ce669d356d8c7abd9af013cd7c38cb25c34d5bd5e3461343ede8ead6f271dfbaec69ef42aaac22f34f481dadac2ce04303cfa8f446ea8bada72
7
- data.tar.gz: d247dd8be9882db553478062ba937757e5e657264f4a49eab8d642c363cc54eeeca1933290548503c7c6a0a4f38a75409c596e7c03f152a4d019a7ec5047f527
6
+ metadata.gz: c486823d9469018277398ee19ab7b95291ad0ed607e0abc6e01d1c1497358e2befca6f4ded2e6272ec86005e07c8eef9de2c66078a3c301300eaafb3d18ed0cb
7
+ data.tar.gz: a4e3e4cb03a640d6f64b4c4efee892e539c0c5dfd34074be5ee5d0fc6dc259f5707a86cca36fd5e7cfcfdf93cddba91cc4e96b9e209c084eec1d3ab806fcf257
data/README.md CHANGED
@@ -122,37 +122,14 @@ RSpec.describe "Articles", type: :request do
122
122
 
123
123
  post articles_path(params: invalid_params)
124
124
 
125
- # ----- BASIC -----
126
-
127
- # Exactly which partials were rendered to which ids
128
- expect(
129
- partials_once(
130
- { partial: 'layouts/flash', id: 'flash-box' },
131
- { partial: 'articles/form', id: 'form' })
132
- ).to be_truthy
133
-
134
- # ----- MORE OPTIONS -----
135
-
136
- # partial_response (singular) returns false unless partial responded exactly one time, otherwise the content in nokogiri format: https://nokogiri.org/tutorials/searching_a_xml_html_document.html#basic-searching
137
- r = partial_response(id: 'flash-box')
138
- expect(r.css('div.text-content').first.inner_html).to include('Article could not be created')
139
-
140
- # same, but based on path by which partial is rendered to
141
- r = partial_response(partial: 'layouts/flash')
142
- expect(r.css('div.text-content').first.inner_html).to include('Article could not be created')
143
-
144
- # COUNTS
145
-
146
- # Check how many times a specific ID has been responded to.
147
- expect(partials_responses(id: 'flash-box').length).to eq(1)
148
-
149
- # Same with partials
150
- expect(partials_responses(partial: 'layouts/flash').length).to eq(1)
151
-
152
125
  # partials_log: developer information about what the renderer did, and strings to copy and paste into test commands
153
126
  expect(partials_log.join('')).to include('Article could not be created')
154
127
  expect(partials_log.join('')).to include('layouts/flash')
155
128
 
129
+ expect(partials_count).to eq(2) #=> 2 partials (form and a flash) are rendered
130
+ expect(assert_partials('layouts/flash', id: 'flash-box')).to be_truthy #=> expect flash to render exact one time to html-id 'flash-box' by turbo-stream
131
+ expect(assert_partials('articles/form', id: 'form')).to be_truthy #=> expect flash to render exact one time to html-id 'form' by turbo-stream
132
+
156
133
  end
157
134
  end
158
135
  ```
@@ -15,18 +15,44 @@ module RenderTurboStream
15
15
  # like partial_response, but returns an array with length of how many times partial was rendered
16
16
  #
17
17
 
18
- def partials_responses(id: nil, partial: nil)
19
- ary = partials_attributes
18
+ # def partials_responses(id: nil, partial: nil)
19
+ # ary = partials_attributes
20
+ # if id && partial
21
+ # res = ary.select { |a| a['partial'] == partial && a['id'] == id }
22
+ # elsif id
23
+ # res = ary.select { |a| a['id'] == id }
24
+ # elsif partial
25
+ # res = ary.select { |a| a['partial'] == partial }
26
+ # else
27
+ # raise 'missing parameter'
28
+ # end
29
+ # res.map { |r| Nokogiri::HTML(r['html_response']) }
30
+ # end
31
+
32
+ # if no count given: expects exactly one match
33
+
34
+ def assert_partials(partial, id: nil, count: 1, &block)
35
+ partials = partials_attributes
20
36
  if id && partial
21
- res = ary.select { |a| a['partial'] == partial && a['id'] == id }
37
+ part = partials.select { |a| a['partial'] == partial && a['id'] == id }
22
38
  elsif id
23
- res = ary.select { |a| a['id'] == id }
39
+ part = partials.select { |a| a['id'] == id }
24
40
  elsif partial
25
- res = ary.select { |a| a['partial'] == partial }
41
+ part = partials.select { |a| a['partial'] == partial }
26
42
  else
27
43
  raise 'missing parameter'
28
44
  end
29
- res.map { |r| Nokogiri::HTML(r['html_response']) }
45
+ if block_given?
46
+ part.each do |r|
47
+ noko = Nokogiri::HTML(r['html_response'])
48
+ end
49
+ else
50
+ if count
51
+ part.length == count
52
+ else
53
+ part.length
54
+ end
55
+ end
30
56
  end
31
57
 
32
58
  # count of rendered partials
@@ -34,13 +60,14 @@ module RenderTurboStream
34
60
  # doesnt check how often a specific partial is rendered
35
61
 
36
62
  def partials_count
37
- partials = []
63
+ part = []
38
64
  partials_attributes.each do |p|
39
- unless partials.include?(p[:partial])
40
- partials.push(p[:partial])
65
+ _p = p['partial']
66
+ unless part.include?(_p)
67
+ part.push(_p)
41
68
  end
42
69
  end
43
- partials.length
70
+ part.length
44
71
  end
45
72
 
46
73
  # returns an array of hashes with the attributes used to call partials and the response (html as string) from the partial.
@@ -1,3 +1,3 @@
1
1
  module RenderTurboStream
2
- VERSION = "0.1.40"
2
+ VERSION = "0.1.41"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: render_turbo_stream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.40
4
+ version: 0.1.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - christian