render_turbo_stream 0.1.39 → 0.1.41

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ab1bc2e64e1c8b702db49bb7d0e23b6624d6e017f8f619c2dbfacba0c532598
4
- data.tar.gz: 33431e1a09d659c6b531c21970e03d556671c27b06af3ba93d477130fc5997b8
3
+ metadata.gz: 9094ebe69f34f4acb61696aff5741b6d1eecaf934b17662bd81d6e5dda8533f9
4
+ data.tar.gz: b2a90bca1d9489b59a2de3cc4522b35f9ea81298f55472582adfa597a2a5a553
5
5
  SHA512:
6
- metadata.gz: 6b36a34b7c9eb520d03abab8eeb27c55f9f18538940278acf9d6db5e79747a71897499ed85d3fa4162cf542b1de638eb7d816dd52fa300245aee5d812bb7baaf
7
- data.tar.gz: e1ea9eab5c37f8aab1e8336119df9dae2fa0bc7761cf18a918e242d00c02a1e14645875aaeef91e096242e16cd53e7eba698161b02a5fdc91e684b706423f12d
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
- # partials_log: developer info for what the renderer has done and strings for copy and paste into test commands
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,62 +15,59 @@ 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']) }
30
- end
31
-
32
- # without arguments: returns array of strings of paths by which partials that are exactly one time rendered, for example: ['articles/form'].
33
- # if arguments provided: compares with result and returns boolean
34
- # examples:
35
- # partials_once('articles/flash_box') => check flash-box is exactly one time rendered and no others
36
- # partials_once({partial: 'articles/flash_box', id: 'flash-box'}) => check flash-box is exactly one time rendered
37
- # partials_once({partial: 'articles/flash_box', id: 'flash-box'}) => check flash-box is exactly one time rendered to id 'flash-box'
38
- def partials_once(*args)
39
- ary = partials_attributes
40
- paths = []
41
- paths_once = []
42
- ary.each do |a|
43
- if paths.include?(a['partial'])
44
- paths_once.delete(a['partial'])
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
45
52
  else
46
- paths.push(a['partial'])
47
- paths_once.push(a['partial'])
53
+ part.length
48
54
  end
49
55
  end
50
- if args.present?
51
- paths_once
52
- if args.length == paths_once.length
53
- res = true
54
- args.each do |a|
55
- if a.is_a?(String) && !paths_once.include?(a)
56
- res = false
57
- elsif a.is_a?(Hash)
58
- _a = a.symbolize_keys
59
- if !paths_once.include?(_a[:partial])
60
- res = false
61
- elsif _a.key?(:id)
62
- r = ary.select { |a| a['partial'] == _a[:partial] }.first
63
- res = r['id'] == _a[:id]
64
- end
65
- end
66
- end
67
- res
68
- else
69
- false
56
+ end
57
+
58
+ # count of rendered partials
59
+ # count rendering different partials (example: «customer/form»)
60
+ # doesnt check how often a specific partial is rendered
61
+
62
+ def partials_count
63
+ part = []
64
+ partials_attributes.each do |p|
65
+ _p = p['partial']
66
+ unless part.include?(_p)
67
+ part.push(_p)
70
68
  end
71
- else
72
- paths_once
73
69
  end
70
+ part.length
74
71
  end
75
72
 
76
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.39"
2
+ VERSION = "0.1.41"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: render_turbo_stream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.39
4
+ version: 0.1.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - christian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-19 00:00:00.000000000 Z
11
+ date: 2023-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails