decidim-dev 0.28.5 → 0.29.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/packs/stylesheets/decidim/dev/_accessibility.scss +1 -1
- data/app/packs/stylesheets/decidim/dev/_bullet.scss +4 -0
- data/app/packs/stylesheets/decidim/dev/_rack_profiler.scss +4 -0
- data/app/packs/stylesheets/decidim/dev.scss +2 -0
- data/config/locales/eu.yml +3 -3
- data/config/locales/sv.yml +8 -13
- data/config/rubocop/disabled.yml +60 -0
- data/config/rubocop/performance.yml +154 -0
- data/config/rubocop/rspec.yml +7 -2
- data/config/rubocop/ruby.yml +5 -5
- data/decidim-dev.gemspec +12 -9
- data/lib/decidim/dev/assets/assemblies.json +1 -34
- data/lib/decidim/dev/assets/assemblies_with_null.json +1 -2
- data/lib/decidim/dev/assets/participatory_processes.json +1 -34
- data/lib/decidim/dev/assets/participatory_processes_with_null.json +0 -1
- data/lib/decidim/dev/assets/participatory_text.md +0 -2
- data/lib/decidim/dev/component.rb +2 -3
- data/lib/decidim/dev/dummy_translator.rb +1 -1
- data/lib/decidim/dev/engine.rb +11 -0
- data/lib/decidim/dev/test/map_server.rb +125 -0
- data/lib/decidim/dev/test/rspec_support/attachment_helpers.rb +3 -1
- data/lib/decidim/dev/test/rspec_support/autocomplete_select.rb +2 -2
- data/lib/decidim/dev/test/rspec_support/bullet.rb +4 -0
- data/lib/decidim/dev/test/rspec_support/capybara.rb +18 -8
- data/lib/decidim/dev/test/rspec_support/cell_matchers.rb +1 -1
- data/lib/decidim/dev/test/rspec_support/component_context.rb +1 -1
- data/lib/decidim/dev/test/rspec_support/data_consent.rb +6 -6
- data/lib/decidim/dev/test/rspec_support/datepicker_date_fill.rb +25 -0
- data/lib/decidim/dev/test/rspec_support/datepicker_time_fill.rb +23 -0
- data/lib/decidim/dev/test/rspec_support/dynamic_attach.rb +2 -2
- data/lib/decidim/dev/test/rspec_support/geocoder.rb +8 -72
- data/lib/decidim/dev/test/rspec_support/helpers.rb +4 -4
- data/lib/decidim/dev/test/rspec_support/tom_select.rb +1 -1
- data/lib/decidim/dev/test/rspec_support/translation_helpers.rb +5 -5
- data/lib/decidim/dev/test/rspec_support/warden.rb +0 -1
- data/lib/decidim/dev/test/rspec_support/webmock.rb +7 -1
- data/lib/decidim/dev/test/rspec_support/wicked_pdf_assets_mock.rb +2 -2
- data/lib/decidim/dev/test/spec_helper.rb +2 -8
- data/lib/decidim/dev/version.rb +1 -1
- data/lib/decidim/dev.rb +0 -10
- data/lib/decidim-dev.rb +2 -0
- data/lib/tasks/lighthouse_report.rake +1 -1
- data/rubocop-decidim.yml +6 -0
- metadata +85 -44
- data/app/permissions/decidim/dev/permissions.rb +0 -22
- data/config/locales/bn-BD.yml +0 -1
- data/config/locales/bs-BA.yml +0 -9
- data/lib/decidim/dev/assets/invalid_extension.log +0 -1
- data/lib/decidim/dev/assets/odt_file_reported_as.pdf +0 -0
- data/lib/decidim/dev/auth_engine.rb +0 -33
- data/lib/decidim/dev/test/rspec_support/activestorage_matchers.rb +0 -148
- /data/app/views/decidim/dummy_resource/{_linked_dummys.html.erb → _linked_dummies.html.erb} +0 -0
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.
|
4
|
+
version: 0.29.0.rc1
|
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:
|
13
|
+
date: 2024-07-16 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.
|
35
|
+
version: 0.29.0.rc1
|
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.
|
42
|
+
version: 0.29.0.rc1
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: factory_bot_rails
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -74,14 +74,14 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
77
|
+
version: 7.1.6
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version:
|
84
|
+
version: 7.1.6
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: byebug
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,20 +130,20 @@ dependencies:
|
|
130
130
|
requirements:
|
131
131
|
- - "~>"
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: '1.
|
133
|
+
version: '1.16'
|
134
134
|
- - ">="
|
135
135
|
- !ruby/object:Gem::Version
|
136
|
-
version: 1.
|
136
|
+
version: 1.16.2
|
137
137
|
type: :runtime
|
138
138
|
prerelease: false
|
139
139
|
version_requirements: !ruby/object:Gem::Requirement
|
140
140
|
requirements:
|
141
141
|
- - "~>"
|
142
142
|
- !ruby/object:Gem::Version
|
143
|
-
version: '1.
|
143
|
+
version: '1.16'
|
144
144
|
- - ">="
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: 1.
|
146
|
+
version: 1.16.2
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: parallel_tests
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -282,14 +282,42 @@ dependencies:
|
|
282
282
|
requirements:
|
283
283
|
- - "~>"
|
284
284
|
- !ruby/object:Gem::Version
|
285
|
-
version: 1.
|
285
|
+
version: 1.65.0
|
286
286
|
type: :runtime
|
287
287
|
prerelease: false
|
288
288
|
version_requirements: !ruby/object:Gem::Requirement
|
289
289
|
requirements:
|
290
290
|
- - "~>"
|
291
291
|
- !ruby/object:Gem::Version
|
292
|
-
version: 1.
|
292
|
+
version: 1.65.0
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: rubocop-capybara
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - "~>"
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '2.21'
|
300
|
+
type: :runtime
|
301
|
+
prerelease: false
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
303
|
+
requirements:
|
304
|
+
- - "~>"
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: '2.21'
|
307
|
+
- !ruby/object:Gem::Dependency
|
308
|
+
name: rubocop-factory_bot
|
309
|
+
requirement: !ruby/object:Gem::Requirement
|
310
|
+
requirements:
|
311
|
+
- - "~>"
|
312
|
+
- !ruby/object:Gem::Version
|
313
|
+
version: '2.26'
|
314
|
+
type: :runtime
|
315
|
+
prerelease: false
|
316
|
+
version_requirements: !ruby/object:Gem::Requirement
|
317
|
+
requirements:
|
318
|
+
- - "~>"
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '2.26'
|
293
321
|
- !ruby/object:Gem::Dependency
|
294
322
|
name: rubocop-faker
|
295
323
|
requirement: !ruby/object:Gem::Requirement
|
@@ -304,104 +332,118 @@ dependencies:
|
|
304
332
|
- - "~>"
|
305
333
|
- !ruby/object:Gem::Version
|
306
334
|
version: '1.1'
|
335
|
+
- !ruby/object:Gem::Dependency
|
336
|
+
name: rubocop-performance
|
337
|
+
requirement: !ruby/object:Gem::Requirement
|
338
|
+
requirements:
|
339
|
+
- - "~>"
|
340
|
+
- !ruby/object:Gem::Version
|
341
|
+
version: '1.21'
|
342
|
+
type: :runtime
|
343
|
+
prerelease: false
|
344
|
+
version_requirements: !ruby/object:Gem::Requirement
|
345
|
+
requirements:
|
346
|
+
- - "~>"
|
347
|
+
- !ruby/object:Gem::Version
|
348
|
+
version: '1.21'
|
307
349
|
- !ruby/object:Gem::Dependency
|
308
350
|
name: rubocop-rails
|
309
351
|
requirement: !ruby/object:Gem::Requirement
|
310
352
|
requirements:
|
311
353
|
- - "~>"
|
312
354
|
- !ruby/object:Gem::Version
|
313
|
-
version: '2.
|
355
|
+
version: '2.25'
|
314
356
|
type: :runtime
|
315
357
|
prerelease: false
|
316
358
|
version_requirements: !ruby/object:Gem::Requirement
|
317
359
|
requirements:
|
318
360
|
- - "~>"
|
319
361
|
- !ruby/object:Gem::Version
|
320
|
-
version: '2.
|
362
|
+
version: '2.25'
|
321
363
|
- !ruby/object:Gem::Dependency
|
322
364
|
name: rubocop-rspec
|
323
365
|
requirement: !ruby/object:Gem::Requirement
|
324
366
|
requirements:
|
325
367
|
- - "~>"
|
326
368
|
- !ruby/object:Gem::Version
|
327
|
-
version: '
|
369
|
+
version: '3.0'
|
328
370
|
type: :runtime
|
329
371
|
prerelease: false
|
330
372
|
version_requirements: !ruby/object:Gem::Requirement
|
331
373
|
requirements:
|
332
374
|
- - "~>"
|
333
375
|
- !ruby/object:Gem::Version
|
334
|
-
version: '
|
376
|
+
version: '3.0'
|
335
377
|
- !ruby/object:Gem::Dependency
|
336
|
-
name:
|
378
|
+
name: rubocop-rspec_rails
|
337
379
|
requirement: !ruby/object:Gem::Requirement
|
338
380
|
requirements:
|
339
381
|
- - "~>"
|
340
382
|
- !ruby/object:Gem::Version
|
341
|
-
version: '
|
383
|
+
version: '2.30'
|
342
384
|
type: :runtime
|
343
385
|
prerelease: false
|
344
386
|
version_requirements: !ruby/object:Gem::Requirement
|
345
387
|
requirements:
|
346
388
|
- - "~>"
|
347
389
|
- !ruby/object:Gem::Version
|
348
|
-
version: '
|
390
|
+
version: '2.30'
|
349
391
|
- !ruby/object:Gem::Dependency
|
350
|
-
name:
|
392
|
+
name: rubocop-rubycw
|
351
393
|
requirement: !ruby/object:Gem::Requirement
|
352
394
|
requirements:
|
353
395
|
- - "~>"
|
354
396
|
- !ruby/object:Gem::Version
|
355
|
-
version: 0.
|
397
|
+
version: '0.1'
|
356
398
|
type: :runtime
|
357
399
|
prerelease: false
|
358
400
|
version_requirements: !ruby/object:Gem::Requirement
|
359
401
|
requirements:
|
360
402
|
- - "~>"
|
361
403
|
- !ruby/object:Gem::Version
|
362
|
-
version: 0.
|
404
|
+
version: '0.1'
|
363
405
|
- !ruby/object:Gem::Dependency
|
364
|
-
name:
|
406
|
+
name: selenium-webdriver
|
365
407
|
requirement: !ruby/object:Gem::Requirement
|
366
408
|
requirements:
|
367
409
|
- - "~>"
|
368
410
|
- !ruby/object:Gem::Version
|
369
|
-
version:
|
411
|
+
version: '4.9'
|
370
412
|
type: :runtime
|
371
413
|
prerelease: false
|
372
414
|
version_requirements: !ruby/object:Gem::Requirement
|
373
415
|
requirements:
|
374
416
|
- - "~>"
|
375
417
|
- !ruby/object:Gem::Version
|
376
|
-
version:
|
418
|
+
version: '4.9'
|
377
419
|
- !ruby/object:Gem::Dependency
|
378
|
-
name:
|
420
|
+
name: simplecov
|
379
421
|
requirement: !ruby/object:Gem::Requirement
|
380
422
|
requirements:
|
381
423
|
- - "~>"
|
382
424
|
- !ruby/object:Gem::Version
|
383
|
-
version:
|
425
|
+
version: 0.22.0
|
384
426
|
type: :runtime
|
385
427
|
prerelease: false
|
386
428
|
version_requirements: !ruby/object:Gem::Requirement
|
387
429
|
requirements:
|
388
430
|
- - "~>"
|
389
431
|
- !ruby/object:Gem::Version
|
390
|
-
version:
|
432
|
+
version: 0.22.0
|
391
433
|
- !ruby/object:Gem::Dependency
|
392
|
-
name:
|
434
|
+
name: simplecov-cobertura
|
393
435
|
requirement: !ruby/object:Gem::Requirement
|
394
436
|
requirements:
|
395
437
|
- - "~>"
|
396
438
|
- !ruby/object:Gem::Version
|
397
|
-
version:
|
439
|
+
version: 2.1.0
|
398
440
|
type: :runtime
|
399
441
|
prerelease: false
|
400
442
|
version_requirements: !ruby/object:Gem::Requirement
|
401
443
|
requirements:
|
402
444
|
- - "~>"
|
403
445
|
- !ruby/object:Gem::Version
|
404
|
-
version:
|
446
|
+
version: 2.1.0
|
405
447
|
- !ruby/object:Gem::Dependency
|
406
448
|
name: w3c_rspec_validators
|
407
449
|
requirement: !ruby/object:Gem::Requirement
|
@@ -474,21 +516,20 @@ files:
|
|
474
516
|
- app/packs/src/decidim/dev/test/custom_map_factory.js
|
475
517
|
- app/packs/stylesheets/decidim/dev.scss
|
476
518
|
- app/packs/stylesheets/decidim/dev/_accessibility.scss
|
519
|
+
- app/packs/stylesheets/decidim/dev/_bullet.scss
|
477
520
|
- app/packs/stylesheets/decidim/dev/_map.scss
|
478
|
-
- app/
|
521
|
+
- app/packs/stylesheets/decidim/dev/_rack_profiler.scss
|
479
522
|
- app/presenters/decidim/dev/official_author_presenter.rb
|
480
523
|
- app/serializers/decidim/dev/dummy_serializer.rb
|
481
524
|
- app/views/decidim/dev/dummy_resources/foo.html.erb
|
482
525
|
- app/views/decidim/dev/dummy_resources/show.html.erb
|
483
|
-
- app/views/decidim/dummy_resource/
|
526
|
+
- app/views/decidim/dummy_resource/_linked_dummies.html.erb
|
484
527
|
- config/assets.rb
|
485
528
|
- config/locales/am-ET.yml
|
486
529
|
- config/locales/ar-SA.yml
|
487
530
|
- config/locales/ar.yml
|
488
531
|
- config/locales/bg-BG.yml
|
489
532
|
- config/locales/bg.yml
|
490
|
-
- config/locales/bn-BD.yml
|
491
|
-
- config/locales/bs-BA.yml
|
492
533
|
- config/locales/ca.yml
|
493
534
|
- config/locales/cs-CZ.yml
|
494
535
|
- config/locales/cs.yml
|
@@ -566,6 +607,7 @@ files:
|
|
566
607
|
- config/locales/zh-TW.yml
|
567
608
|
- config/rubocop/disabled.yml
|
568
609
|
- config/rubocop/faker.yml
|
610
|
+
- config/rubocop/performance.yml
|
569
611
|
- config/rubocop/rails.yml
|
570
612
|
- config/rubocop/rspec.yml
|
571
613
|
- config/rubocop/ruby.yml
|
@@ -606,11 +648,9 @@ files:
|
|
606
648
|
- lib/decidim/dev/assets/import_voting_census_with_ballot_styles.csv
|
607
649
|
- lib/decidim/dev/assets/import_voting_census_without_headers.csv
|
608
650
|
- lib/decidim/dev/assets/invalid.jpeg
|
609
|
-
- lib/decidim/dev/assets/invalid_extension.log
|
610
651
|
- lib/decidim/dev/assets/iso-8859-15.md
|
611
652
|
- lib/decidim/dev/assets/logo.png
|
612
653
|
- lib/decidim/dev/assets/malicious.jpg
|
613
|
-
- lib/decidim/dev/assets/odt_file_reported_as.pdf
|
614
654
|
- lib/decidim/dev/assets/participatory_processes.json
|
615
655
|
- lib/decidim/dev/assets/participatory_processes_with_null.json
|
616
656
|
- lib/decidim/dev/assets/participatory_text.md
|
@@ -626,7 +666,6 @@ files:
|
|
626
666
|
- lib/decidim/dev/assets/ssl-key.pem
|
627
667
|
- lib/decidim/dev/assets/test_excel.xlsx
|
628
668
|
- lib/decidim/dev/assets/verify_user_groups.csv
|
629
|
-
- lib/decidim/dev/auth_engine.rb
|
630
669
|
- lib/decidim/dev/common_rake.rb
|
631
670
|
- lib/decidim/dev/component.rb
|
632
671
|
- lib/decidim/dev/dummy_translator.rb
|
@@ -637,11 +676,11 @@ files:
|
|
637
676
|
- lib/decidim/dev/test/base_spec_helper.rb
|
638
677
|
- lib/decidim/dev/test/factories.rb
|
639
678
|
- lib/decidim/dev/test/form_to_param_shared_examples.rb
|
679
|
+
- lib/decidim/dev/test/map_server.rb
|
640
680
|
- lib/decidim/dev/test/promoted_participatory_processes_shared_examples.rb
|
641
681
|
- lib/decidim/dev/test/rspec_support/accessibility_examples.rb
|
642
682
|
- lib/decidim/dev/test/rspec_support/action_mailer.rb
|
643
683
|
- lib/decidim/dev/test/rspec_support/active_job.rb
|
644
|
-
- lib/decidim/dev/test/rspec_support/activestorage_matchers.rb
|
645
684
|
- lib/decidim/dev/test/rspec_support/attachment_helpers.rb
|
646
685
|
- lib/decidim/dev/test/rspec_support/authorization.rb
|
647
686
|
- lib/decidim/dev/test/rspec_support/autocomplete_select.rb
|
@@ -657,6 +696,8 @@ files:
|
|
657
696
|
- lib/decidim/dev/test/rspec_support/content_processing.rb
|
658
697
|
- lib/decidim/dev/test/rspec_support/controller_example_group.rb
|
659
698
|
- lib/decidim/dev/test/rspec_support/data_consent.rb
|
699
|
+
- lib/decidim/dev/test/rspec_support/datepicker_date_fill.rb
|
700
|
+
- lib/decidim/dev/test/rspec_support/datepicker_time_fill.rb
|
660
701
|
- lib/decidim/dev/test/rspec_support/decidim_sanitization.rb
|
661
702
|
- lib/decidim/dev/test/rspec_support/dynamic_attach.rb
|
662
703
|
- lib/decidim/dev/test/rspec_support/editor_context.rb
|
@@ -697,7 +738,7 @@ files:
|
|
697
738
|
- rubocop-decidim.yml
|
698
739
|
homepage: https://decidim.org
|
699
740
|
licenses:
|
700
|
-
- AGPL-3.0
|
741
|
+
- AGPL-3.0
|
701
742
|
metadata:
|
702
743
|
bug_tracker_uri: https://github.com/decidim/decidim/issues
|
703
744
|
documentation_uri: https://docs.decidim.org/
|
@@ -712,14 +753,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
712
753
|
requirements:
|
713
754
|
- - "~>"
|
714
755
|
- !ruby/object:Gem::Version
|
715
|
-
version: 3.
|
756
|
+
version: 3.2.0
|
716
757
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
717
758
|
requirements:
|
718
|
-
- - "
|
759
|
+
- - ">"
|
719
760
|
- !ruby/object:Gem::Version
|
720
|
-
version:
|
761
|
+
version: 1.3.1
|
721
762
|
requirements: []
|
722
|
-
rubygems_version: 3.
|
763
|
+
rubygems_version: 3.4.10
|
723
764
|
signing_key:
|
724
765
|
specification_version: 4
|
725
766
|
summary: Decidim dev tools
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module Dev
|
5
|
-
class Permissions < Decidim::DefaultPermissions
|
6
|
-
def permissions
|
7
|
-
return permission_action unless user
|
8
|
-
|
9
|
-
return permission_action if permission_action.scope != :public
|
10
|
-
|
11
|
-
toggle_allow(!dummy_resource.hidden? && dummy_resource.published?) if permission_action.subject == :dummy_resource
|
12
|
-
permission_action
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def dummy_resource
|
18
|
-
context[:dummy_resource] = context.fetch(:dummy_resource, nil) || context.fetch(:resource, nil)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
data/config/locales/bn-BD.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
bn:
|
data/config/locales/bs-BA.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
FooBar
|
Binary file
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "decidim/dev/needs_development_tools"
|
4
|
-
|
5
|
-
module Decidim
|
6
|
-
module Dev
|
7
|
-
# Example engine overriding the core authentication routes.
|
8
|
-
class AuthEngine < ::Rails::Engine
|
9
|
-
isolate_namespace Decidim::Dev
|
10
|
-
engine_name "decidim_dev_auth"
|
11
|
-
|
12
|
-
routes do
|
13
|
-
devise_scope :user do
|
14
|
-
match(
|
15
|
-
"/users/auth/test/callback",
|
16
|
-
to: "omniauth_callbacks#dev_callback",
|
17
|
-
as: "user_test_omniauth_authorize",
|
18
|
-
via: [:get, :post]
|
19
|
-
)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
initializer "decidim_dev_auth.mount_test_routes", before: :add_routing_paths do
|
24
|
-
next unless Rails.env.test?
|
25
|
-
|
26
|
-
# Required for overriding the callback route.
|
27
|
-
Decidim::Core::Engine.routes.prepend do
|
28
|
-
mount Decidim::Dev::AuthEngine => "/"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,148 +0,0 @@
|
|
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
|
File without changes
|