decidim-dev 0.28.2 → 0.28.3
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/config/locales/sv.yml +1 -1
- data/decidim-dev.gemspec +2 -0
- data/lib/decidim/dev/test/rspec_support/activestorage_matchers.rb +148 -0
- data/lib/decidim/dev/test/rspec_support/capybara.rb +1 -0
- data/lib/decidim/dev/test/spec_helper.rb +7 -0
- data/lib/decidim/dev/version.rb +1 -1
- metadata +33 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6b9973be99a2087203195bd53e2d70c217f03e931d9dd65b41131175847f279
|
4
|
+
data.tar.gz: a11250967979f905fc8f477dddae1dcef632895fc3259657dd18b0ccc40883f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a845fc6a1a4228598a8b2c1f4f0b83e269075ad3433ebb9596c17c866650dccf9ddec58f233d3a8e2cdc0ee8232e583206370897c2b585a4b76d8896c2901e9
|
7
|
+
data.tar.gz: 75b487e53ab3b1b30918dc3adae0e3039d280c53963863145fbcdc49a3dc0c345948735cd4e1e9239dc4b2f5c09b3d8a4b8cbe09a775d436ff9980adaefb2a07
|
data/config/locales/sv.yml
CHANGED
data/decidim-dev.gemspec
CHANGED
@@ -58,6 +58,8 @@ Gem::Specification.new do |s|
|
|
58
58
|
s.add_dependency "selenium-webdriver", "~> 4.9"
|
59
59
|
s.add_dependency "simplecov", "~> 0.22.0"
|
60
60
|
s.add_dependency "simplecov-cobertura", "~> 2.1.0"
|
61
|
+
s.add_dependency "spring", "~> 2.0"
|
62
|
+
s.add_dependency "spring-watcher-listen", "~> 2.0"
|
61
63
|
s.add_dependency "w3c_rspec_validators", "~> 0.3.0"
|
62
64
|
s.add_dependency "webmock", "~> 3.18"
|
63
65
|
s.add_dependency "wisper-rspec", "~> 1.0"
|
@@ -0,0 +1,148 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActiveStorageMatchers
|
4
|
+
def be_blob_url(expected)
|
5
|
+
BeBlobUrl.new(expected)
|
6
|
+
end
|
7
|
+
|
8
|
+
def include_blob_urls(*expected)
|
9
|
+
IncludeBlobUrls.new(expected)
|
10
|
+
end
|
11
|
+
|
12
|
+
class BlobMatch
|
13
|
+
BLOB_URL_MATCHERS = {
|
14
|
+
redirect: %r{/rails/active_storage/blobs/redirect/([^/]+)/([^/]+)$},
|
15
|
+
representation: %r{/rails/active_storage/representations/redirect/([^/]+)/([^/]+)/([^/]+)$},
|
16
|
+
disk: %r{/rails/active_storage/disk/([^/]+)/([^/]+)$}
|
17
|
+
}.freeze
|
18
|
+
|
19
|
+
def initialize(url)
|
20
|
+
@url = url
|
21
|
+
end
|
22
|
+
|
23
|
+
def blob
|
24
|
+
return unless key_match
|
25
|
+
|
26
|
+
@blob ||=
|
27
|
+
case url_type
|
28
|
+
when :redirect, :representation
|
29
|
+
ActiveStorage::Blob.find_signed(key_match)
|
30
|
+
when :disk
|
31
|
+
decoded = ActiveStorage.verifier.verified(key_match, purpose: :blob_key)
|
32
|
+
ActiveStorage::Blob.find_by(key: decoded[:key]) if decoded
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def variation
|
37
|
+
return unless variation_match
|
38
|
+
|
39
|
+
blob.representation(variation_match)
|
40
|
+
end
|
41
|
+
|
42
|
+
def key_match
|
43
|
+
return unless match
|
44
|
+
|
45
|
+
match[1]
|
46
|
+
end
|
47
|
+
|
48
|
+
def variation_match
|
49
|
+
return unless match
|
50
|
+
|
51
|
+
match[2] if url_type == :representation
|
52
|
+
end
|
53
|
+
|
54
|
+
def filename_match
|
55
|
+
return unless match
|
56
|
+
|
57
|
+
case url_type
|
58
|
+
when :representation
|
59
|
+
match[3]
|
60
|
+
else
|
61
|
+
match[2]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
attr_reader :url, :url_type
|
68
|
+
|
69
|
+
def match
|
70
|
+
return @match if @url_type
|
71
|
+
|
72
|
+
@url_type = :none
|
73
|
+
@match = nil
|
74
|
+
BLOB_URL_MATCHERS.each do |type, matcher|
|
75
|
+
@match = url.match(matcher)
|
76
|
+
if @match
|
77
|
+
@url_type = type
|
78
|
+
break
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
@match
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
class BeBlobUrl
|
87
|
+
def initialize(expected)
|
88
|
+
@expected = expected
|
89
|
+
end
|
90
|
+
|
91
|
+
def description
|
92
|
+
"be a blob URL"
|
93
|
+
end
|
94
|
+
|
95
|
+
def matches?(actual)
|
96
|
+
@actual = actual
|
97
|
+
match = BlobMatch.new(actual)
|
98
|
+
match.blob == expected
|
99
|
+
end
|
100
|
+
|
101
|
+
def failure_message
|
102
|
+
"expected #{actual} to match blob with ID #{expected.id}"
|
103
|
+
end
|
104
|
+
|
105
|
+
def failure_message_when_negated
|
106
|
+
"expected #{actual} not to match blob with ID #{expected.id}"
|
107
|
+
end
|
108
|
+
|
109
|
+
private
|
110
|
+
|
111
|
+
attr_reader :expected, :actual
|
112
|
+
end
|
113
|
+
|
114
|
+
class IncludeBlobUrls
|
115
|
+
def initialize(expected)
|
116
|
+
@expected = expected
|
117
|
+
end
|
118
|
+
|
119
|
+
def description
|
120
|
+
"include blob URLs"
|
121
|
+
end
|
122
|
+
|
123
|
+
def matches?(actual)
|
124
|
+
@actual = actual
|
125
|
+
|
126
|
+
actual.all? do |url|
|
127
|
+
match = BlobMatch.new(url)
|
128
|
+
expected.include?(match.blob)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def failure_message
|
133
|
+
"expected #{actual.inspect} to match blobs with ID #{expected.map(&:id).join(", ")}"
|
134
|
+
end
|
135
|
+
|
136
|
+
def failure_message_when_negated
|
137
|
+
"expected #{actual.inspect} not to match blobs with ID #{expected.map(&:id).join(", ")}"
|
138
|
+
end
|
139
|
+
|
140
|
+
private
|
141
|
+
|
142
|
+
attr_reader :expected, :actual
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
RSpec.configure do |config|
|
147
|
+
config.include ActiveStorageMatchers
|
148
|
+
end
|
@@ -44,6 +44,7 @@ Capybara.register_driver :headless_chrome do |app|
|
|
44
44
|
options = Selenium::WebDriver::Chrome::Options.new
|
45
45
|
options.args << "--explicitly-allowed-ports=#{Capybara.server_port}"
|
46
46
|
options.args << "--headless=new"
|
47
|
+
options.args << "--disable-search-engine-choice-screen" # Prevents closing the window normally
|
47
48
|
# Do not limit browser resources
|
48
49
|
options.args << "--disable-dev-shm-usage"
|
49
50
|
options.args << "--no-sandbox"
|
@@ -44,4 +44,11 @@ RSpec.configure do |config|
|
|
44
44
|
"img-src": %w(https://via.placeholder.com)
|
45
45
|
}
|
46
46
|
end
|
47
|
+
|
48
|
+
config.before do
|
49
|
+
# Ensure that the current host is not set for any spec in order to test that
|
50
|
+
# the automatic current host definition is working correctly in all
|
51
|
+
# situations.
|
52
|
+
ActiveStorage::Current.host = ""
|
53
|
+
end
|
47
54
|
end
|
data/lib/decidim/dev/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-dev
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.28.
|
4
|
+
version: 0.28.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2024-
|
13
|
+
date: 2024-09-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: capybara
|
@@ -32,14 +32,14 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - '='
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 0.28.
|
35
|
+
version: 0.28.3
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - '='
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.28.
|
42
|
+
version: 0.28.3
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: factory_bot_rails
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -374,6 +374,34 @@ dependencies:
|
|
374
374
|
- - "~>"
|
375
375
|
- !ruby/object:Gem::Version
|
376
376
|
version: 2.1.0
|
377
|
+
- !ruby/object:Gem::Dependency
|
378
|
+
name: spring
|
379
|
+
requirement: !ruby/object:Gem::Requirement
|
380
|
+
requirements:
|
381
|
+
- - "~>"
|
382
|
+
- !ruby/object:Gem::Version
|
383
|
+
version: '2.0'
|
384
|
+
type: :runtime
|
385
|
+
prerelease: false
|
386
|
+
version_requirements: !ruby/object:Gem::Requirement
|
387
|
+
requirements:
|
388
|
+
- - "~>"
|
389
|
+
- !ruby/object:Gem::Version
|
390
|
+
version: '2.0'
|
391
|
+
- !ruby/object:Gem::Dependency
|
392
|
+
name: spring-watcher-listen
|
393
|
+
requirement: !ruby/object:Gem::Requirement
|
394
|
+
requirements:
|
395
|
+
- - "~>"
|
396
|
+
- !ruby/object:Gem::Version
|
397
|
+
version: '2.0'
|
398
|
+
type: :runtime
|
399
|
+
prerelease: false
|
400
|
+
version_requirements: !ruby/object:Gem::Requirement
|
401
|
+
requirements:
|
402
|
+
- - "~>"
|
403
|
+
- !ruby/object:Gem::Version
|
404
|
+
version: '2.0'
|
377
405
|
- !ruby/object:Gem::Dependency
|
378
406
|
name: w3c_rspec_validators
|
379
407
|
requirement: !ruby/object:Gem::Requirement
|
@@ -607,6 +635,7 @@ files:
|
|
607
635
|
- lib/decidim/dev/test/rspec_support/accessibility_examples.rb
|
608
636
|
- lib/decidim/dev/test/rspec_support/action_mailer.rb
|
609
637
|
- lib/decidim/dev/test/rspec_support/active_job.rb
|
638
|
+
- lib/decidim/dev/test/rspec_support/activestorage_matchers.rb
|
610
639
|
- lib/decidim/dev/test/rspec_support/attachment_helpers.rb
|
611
640
|
- lib/decidim/dev/test/rspec_support/authorization.rb
|
612
641
|
- lib/decidim/dev/test/rspec_support/autocomplete_select.rb
|