decidim-dev 0.8.4 → 0.9.0
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 +5 -5
- data/README.md +4 -4
- data/Rakefile +4 -0
- data/config/locales/ca.yml +11 -1
- data/config/locales/en.yml +11 -0
- data/config/locales/es.yml +11 -1
- data/config/locales/eu.yml +11 -0
- data/config/locales/fi.yml +11 -0
- data/config/locales/fr.yml +11 -0
- data/config/locales/gl.yml +20 -0
- data/config/locales/it.yml +11 -0
- data/config/locales/nl.yml +11 -0
- data/config/locales/pl.yml +11 -0
- data/config/locales/pt-BR.yml +20 -0
- data/config/locales/pt.yml +12 -1
- data/config/locales/ru.yml +13 -2
- data/config/locales/sv.yml +20 -0
- data/config/locales/uk.yml +13 -2
- data/lib/decidim/dev/assets/dni.jpg +0 -0
- data/lib/decidim/dev/test/base_spec_helper.rb +1 -0
- data/lib/decidim/dev/test/rspec_support/action_mailer.rb +1 -3
- data/lib/decidim/dev/test/rspec_support/authorization.rb +1 -0
- data/lib/decidim/dev/test/rspec_support/capybara.rb +18 -16
- data/lib/decidim/dev/test/rspec_support/capybara_scopes_picker.rb +101 -0
- data/lib/decidim/dev/test/rspec_support/comments.rb +1 -1
- data/lib/decidim/dev/test/rspec_support/content_processing.rb +35 -0
- data/lib/decidim/dev/test/rspec_support/feature.rb +10 -0
- data/lib/decidim/dev/test/rspec_support/feature_context.rb +1 -2
- data/lib/decidim/dev/test/rspec_support/helpers.rb +1 -1
- data/lib/decidim/dev/test/rspec_support/warden.rb +2 -2
- data/lib/decidim/dev/test/spec_helper.rb +1 -3
- data/lib/decidim/dev/version.rb +1 -1
- data/lib/tasks/locale_checker.rake +1 -1
- metadata +31 -49
- data/lib/decidim/dev/test/rspec_support/capybara_select2.rb +0 -21
- data/lib/decidim/dev/test/rspec_support/database_cleaner.rb +0 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: c31826791567d8986287675d486e7ffdaac2b052c58365aadf44a70223c789ef
|
|
4
|
+
data.tar.gz: 26a3fdb6c68d20de68763b968a46800b8d02e11bd8b9762107d44ede87362774
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 99217abfc8280bf20fab22dbbf2109b7c3dee8b8281216e052a811ad64b3605d93100a7c57343553f2d753035c3eb2e1ab11001bd22b13a7f327f6383fc768c8
|
|
7
|
+
data.tar.gz: 5d633c5f54a89d0f75401c531abedeef574db211777365739b70231ae0c53eb2cbcbf9cc92397beba51b52a3f46387a894439a01bb0641f107486b60a580392f
|
data/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Decidim::Dev
|
|
2
2
|
|
|
3
|
-
This
|
|
3
|
+
This module allows local development of decidim's features and other features.
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
7
7
|
`decidim-dev` provides some testing utils such as shared contexts, examples, and
|
|
8
|
-
dummy assets or resources that you can use to test your own
|
|
9
|
-
provides a `decidim:generate_external_test_app`
|
|
10
|
-
generate a dummy application to test your
|
|
8
|
+
dummy assets or resources that you can use to test your own modules. It also
|
|
9
|
+
provides a `decidim:generate_external_test_app` rails task that you can use to
|
|
10
|
+
generate a dummy application to test your module.
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
data/Rakefile
CHANGED
data/config/locales/ca.yml
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
---
|
|
2
1
|
ca:
|
|
3
2
|
decidim:
|
|
4
3
|
dummy:
|
|
5
4
|
admin:
|
|
6
5
|
exports:
|
|
7
6
|
dummies: Maniquins
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Prova alt
|
|
10
|
+
dummies_count_medium: Prova mig
|
|
8
11
|
resource_links:
|
|
9
12
|
test_link:
|
|
10
13
|
dummy_resource_dummy: Fictici relacionat
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Bar
|
|
18
|
+
dummies_count_high: Prova alt
|
|
19
|
+
dummies_count_medium: Prova mig
|
|
20
|
+
foo: Foo
|
data/config/locales/en.yml
CHANGED
|
@@ -5,6 +5,17 @@ en:
|
|
|
5
5
|
admin:
|
|
6
6
|
exports:
|
|
7
7
|
dummies: Dummies
|
|
8
|
+
participatory_processes:
|
|
9
|
+
statistics:
|
|
10
|
+
dummies_count_high: Dummies high
|
|
11
|
+
dummies_count_medium: Dummies medium
|
|
8
12
|
resource_links:
|
|
9
13
|
test_link:
|
|
10
14
|
dummy_resource_dummy: Related dummy
|
|
15
|
+
pages:
|
|
16
|
+
home:
|
|
17
|
+
statistics:
|
|
18
|
+
bar: Bar
|
|
19
|
+
dummies_count_high: Dummies high
|
|
20
|
+
dummies_count_medium: Dummies medium
|
|
21
|
+
foo: Foo
|
data/config/locales/es.yml
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
---
|
|
2
1
|
es:
|
|
3
2
|
decidim:
|
|
4
3
|
dummy:
|
|
5
4
|
admin:
|
|
6
5
|
exports:
|
|
7
6
|
dummies: Maniquíes
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Dummies alta
|
|
10
|
+
dummies_count_medium: Dummies media
|
|
8
11
|
resource_links:
|
|
9
12
|
test_link:
|
|
10
13
|
dummy_resource_dummy: Ficticio relacionado
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Bar
|
|
18
|
+
dummies_count_high: Dummies alta
|
|
19
|
+
dummies_count_medium: Dummies media
|
|
20
|
+
foo: Foo
|
data/config/locales/eu.yml
CHANGED
|
@@ -4,6 +4,17 @@ eu:
|
|
|
4
4
|
admin:
|
|
5
5
|
exports:
|
|
6
6
|
dummies: Manikiak
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Dummies altua
|
|
10
|
+
dummies_count_medium: Dummies ertainak
|
|
7
11
|
resource_links:
|
|
8
12
|
test_link:
|
|
9
13
|
dummy_resource_dummy: ' Honi buruzko adibidea '
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Bar
|
|
18
|
+
dummies_count_high: Dummies altua
|
|
19
|
+
dummies_count_medium: Dummies ertainak
|
|
20
|
+
foo: foo
|
data/config/locales/fi.yml
CHANGED
|
@@ -4,6 +4,17 @@ fi:
|
|
|
4
4
|
admin:
|
|
5
5
|
exports:
|
|
6
6
|
dummies: Esimerkkitiedot
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Esimerkkitilastojen korkein arvo
|
|
10
|
+
dummies_count_medium: Esimerkkitilastojen keskimääräinen arvo
|
|
7
11
|
resource_links:
|
|
8
12
|
test_link:
|
|
9
13
|
dummy_resource_dummy: Liittyvät esimerkkitiedot
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Palkki
|
|
18
|
+
dummies_count_high: Esimerkkitilastojen korkein arvo
|
|
19
|
+
dummies_count_medium: Esimerkkitilastojen keskimääräinen arvo
|
|
20
|
+
foo: Foo
|
data/config/locales/fr.yml
CHANGED
|
@@ -4,6 +4,17 @@ fr:
|
|
|
4
4
|
admin:
|
|
5
5
|
exports:
|
|
6
6
|
dummies: Nuls
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Dummies haute
|
|
10
|
+
dummies_count_medium: Dummies moyen
|
|
7
11
|
resource_links:
|
|
8
12
|
test_link:
|
|
9
13
|
dummy_resource_dummy: Référence factice concernée
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Machin
|
|
18
|
+
dummies_count_high: Dummies haute
|
|
19
|
+
dummies_count_medium: Dummies moyen
|
|
20
|
+
foo: Truc
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
gl:
|
|
2
|
+
decidim:
|
|
3
|
+
dummy:
|
|
4
|
+
admin:
|
|
5
|
+
exports:
|
|
6
|
+
dummies: Dummies
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Maniquís de alta
|
|
10
|
+
dummies_count_medium: Dummies medio
|
|
11
|
+
resource_links:
|
|
12
|
+
test_link:
|
|
13
|
+
dummy_resource_dummy: Dummy relacionado
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Bar
|
|
18
|
+
dummies_count_high: Maniquís de alta
|
|
19
|
+
dummies_count_medium: Dummies medio
|
|
20
|
+
foo: Foo
|
data/config/locales/it.yml
CHANGED
|
@@ -4,6 +4,17 @@ it:
|
|
|
4
4
|
admin:
|
|
5
5
|
exports:
|
|
6
6
|
dummies: Risorse Fittizie
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Manichini in alto
|
|
10
|
+
dummies_count_medium: Manichino medio
|
|
7
11
|
resource_links:
|
|
8
12
|
test_link:
|
|
9
13
|
dummy_resource_dummy: Risorse fittizie correlate
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Bar
|
|
18
|
+
dummies_count_high: Manichini in alto
|
|
19
|
+
dummies_count_medium: Manichino medio
|
|
20
|
+
foo: foo
|
data/config/locales/nl.yml
CHANGED
|
@@ -4,6 +4,17 @@ nl:
|
|
|
4
4
|
admin:
|
|
5
5
|
exports:
|
|
6
6
|
dummies: Dummies
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Dummies hoog
|
|
10
|
+
dummies_count_medium: Dummies medium
|
|
7
11
|
resource_links:
|
|
8
12
|
test_link:
|
|
9
13
|
dummy_resource_dummy: Gerelateerde dummy
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Bar
|
|
18
|
+
dummies_count_high: Dummies hoog
|
|
19
|
+
dummies_count_medium: Dummies medium
|
|
20
|
+
foo: Foo
|
data/config/locales/pl.yml
CHANGED
|
@@ -4,6 +4,17 @@ pl:
|
|
|
4
4
|
admin:
|
|
5
5
|
exports:
|
|
6
6
|
dummies: Manekiny
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Atrapy wysokie
|
|
10
|
+
dummies_count_medium: Średni manekin
|
|
7
11
|
resource_links:
|
|
8
12
|
test_link:
|
|
9
13
|
dummy_resource_dummy: Podobne manekina
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Bar
|
|
18
|
+
dummies_count_high: Atrapy wysokie
|
|
19
|
+
dummies_count_medium: Średni manekin
|
|
20
|
+
foo: bla
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
pt-BR:
|
|
2
|
+
decidim:
|
|
3
|
+
dummy:
|
|
4
|
+
admin:
|
|
5
|
+
exports:
|
|
6
|
+
dummies: Manequim
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Dummies alta
|
|
10
|
+
dummies_count_medium: Dummies médio
|
|
11
|
+
resource_links:
|
|
12
|
+
test_link:
|
|
13
|
+
dummy_resource_dummy: Manequim relacionado
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Barra
|
|
18
|
+
dummies_count_high: Dummies alta
|
|
19
|
+
dummies_count_medium: Dummies médio
|
|
20
|
+
foo: Foo
|
data/config/locales/pt.yml
CHANGED
|
@@ -3,7 +3,18 @@ pt:
|
|
|
3
3
|
dummy:
|
|
4
4
|
admin:
|
|
5
5
|
exports:
|
|
6
|
-
dummies:
|
|
6
|
+
dummies: Manequim
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Dummies alta
|
|
10
|
+
dummies_count_medium: Dummies médio
|
|
7
11
|
resource_links:
|
|
8
12
|
test_link:
|
|
9
13
|
dummy_resource_dummy: Manequim relacionado
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Barra
|
|
18
|
+
dummies_count_high: Dummies alta
|
|
19
|
+
dummies_count_medium: Dummies médio
|
|
20
|
+
foo: Foo
|
data/config/locales/ru.yml
CHANGED
|
@@ -3,7 +3,18 @@ ru:
|
|
|
3
3
|
dummy:
|
|
4
4
|
admin:
|
|
5
5
|
exports:
|
|
6
|
-
dummies:
|
|
6
|
+
dummies: Примеры сохранения
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Пример наибольшего количества
|
|
10
|
+
dummies_count_medium: Пример среднего количества
|
|
7
11
|
resource_links:
|
|
8
12
|
test_link:
|
|
9
|
-
dummy_resource_dummy:
|
|
13
|
+
dummy_resource_dummy: Пример соотносящегося ресурса
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Пример переменной 1
|
|
18
|
+
dummies_count_high: Пример наибольшего количества
|
|
19
|
+
dummies_count_medium: Пример среднего количества
|
|
20
|
+
foo: Пример переменной 2
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
sv:
|
|
2
|
+
decidim:
|
|
3
|
+
dummy:
|
|
4
|
+
admin:
|
|
5
|
+
exports:
|
|
6
|
+
dummies: Dummies
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Dummies höga
|
|
10
|
+
dummies_count_medium: Dummies medium
|
|
11
|
+
resource_links:
|
|
12
|
+
test_link:
|
|
13
|
+
dummy_resource_dummy: Relaterad dummy
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Bar
|
|
18
|
+
dummies_count_high: Dummies höga
|
|
19
|
+
dummies_count_medium: Dummies medium
|
|
20
|
+
foo: foo
|
data/config/locales/uk.yml
CHANGED
|
@@ -3,7 +3,18 @@ uk:
|
|
|
3
3
|
dummy:
|
|
4
4
|
admin:
|
|
5
5
|
exports:
|
|
6
|
-
dummies:
|
|
6
|
+
dummies: Приклади збереження
|
|
7
|
+
participatory_processes:
|
|
8
|
+
statistics:
|
|
9
|
+
dummies_count_high: Приклад найвищої кількості
|
|
10
|
+
dummies_count_medium: Приклад середньої кількості
|
|
7
11
|
resource_links:
|
|
8
12
|
test_link:
|
|
9
|
-
dummy_resource_dummy:
|
|
13
|
+
dummy_resource_dummy: Приклад пов'язаного ресурсу
|
|
14
|
+
pages:
|
|
15
|
+
home:
|
|
16
|
+
statistics:
|
|
17
|
+
bar: Приклад змінної 1
|
|
18
|
+
dummies_count_high: Приклад найвищої кількості
|
|
19
|
+
dummies_count_medium: Приклад середньої кількості
|
|
20
|
+
foo: Приклад змінної 2
|
|
Binary file
|
|
@@ -42,9 +42,7 @@ module MailerHelpers
|
|
|
42
42
|
options[:max_attempts] ||= 3
|
|
43
43
|
attempts = 0
|
|
44
44
|
loop do
|
|
45
|
-
if attempts >= options[:max_attempts]
|
|
46
|
-
raise StandardError, "An email with subject containing '#{options[:subject]}' wasn't sent.'"
|
|
47
|
-
end
|
|
45
|
+
raise StandardError, "An email with subject containing '#{options[:subject]}' wasn't sent.'" if attempts >= options[:max_attempts]
|
|
48
46
|
|
|
49
47
|
return if last_email&.subject&.include? options[:subject]
|
|
50
48
|
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "selenium-webdriver"
|
|
4
|
-
require "capybara-screenshot/rspec"
|
|
5
4
|
|
|
6
5
|
module Decidim
|
|
7
6
|
# Helpers meant to be used only during capybara test runs.
|
|
8
7
|
module CapybaraTestHelpers
|
|
9
8
|
def switch_to_host(host = "lvh.me")
|
|
10
|
-
unless /lvh\.me$/.match?(host)
|
|
11
|
-
raise "Can't switch to a custom host unless it really exists. Use `whatever.lvh.me` as a workaround."
|
|
12
|
-
end
|
|
9
|
+
raise "Can't switch to a custom host unless it really exists. Use `whatever.lvh.me` as a workaround." unless /lvh\.me$/.match?(host)
|
|
13
10
|
|
|
14
11
|
app_host = (host ? "http://#{host}" : nil)
|
|
15
12
|
Capybara.app_host = app_host
|
|
@@ -46,30 +43,35 @@ module Capybara
|
|
|
46
43
|
def wait_for_pending_requests
|
|
47
44
|
Timeout.timeout(120) { sleep(0.01) while pending_requests? }
|
|
48
45
|
rescue Timeout::Error
|
|
49
|
-
raise "Requests did not finish in
|
|
46
|
+
raise "Requests did not finish in 120 seconds"
|
|
50
47
|
end
|
|
51
48
|
end
|
|
52
49
|
end
|
|
53
50
|
|
|
54
|
-
Capybara::Screenshot.prune_strategy = :keep_last_run
|
|
55
|
-
Capybara::Screenshot::RSpec.add_link_to_screenshot_for_failed_examples = true
|
|
56
|
-
|
|
57
|
-
Capybara::Screenshot.register_driver(:headless_chrome) do |driver, path|
|
|
58
|
-
driver.browser.save_screenshot(path)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
51
|
Capybara.configure do |config|
|
|
62
52
|
config.always_include_port = true
|
|
63
|
-
config.default_driver = :headless_chrome
|
|
64
53
|
end
|
|
65
54
|
|
|
66
55
|
Capybara.asset_host = "http://localhost:3000"
|
|
67
56
|
|
|
68
57
|
RSpec.configure do |config|
|
|
69
|
-
config.before :each, type: :
|
|
70
|
-
|
|
58
|
+
config.before :each, type: :system do
|
|
59
|
+
driven_by(:headless_chrome)
|
|
71
60
|
switch_to_default_host
|
|
72
61
|
end
|
|
73
62
|
|
|
74
|
-
config.
|
|
63
|
+
config.before :each, driver: :rack_test do
|
|
64
|
+
driven_by(:rack_test)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
config.around :each, :slow do |example|
|
|
68
|
+
max_wait_time_for_slow_specs = 7
|
|
69
|
+
|
|
70
|
+
using_wait_time(max_wait_time_for_slow_specs) do
|
|
71
|
+
example.run
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
config.include Decidim::CapybaraTestHelpers, type: :system
|
|
76
|
+
config.include Devise::Test::IntegrationHelpers, type: :system
|
|
75
77
|
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Capybara
|
|
4
|
+
module ScopesPicker
|
|
5
|
+
def scopes_picker_find(id, multiple: nil, global_value: "")
|
|
6
|
+
Struct.new(:data_picker, :global_value).new(data_picker_find(id, multiple: multiple), global_value)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
RSpec::Matchers.define :have_scope_picked do |expected|
|
|
10
|
+
match do |scope_picker|
|
|
11
|
+
data_picker = scope_picker.data_picker
|
|
12
|
+
scope_name = expected ? translated(expected.name) : I18n.t("decidim.scopes.global")
|
|
13
|
+
expect(data_picker).to have_selector(".picker-values div input[value='#{expected&.id || scope_picker.global_value}']", visible: false)
|
|
14
|
+
expect(data_picker).to have_selector(:xpath, "//div[contains(@class,'picker-values')]/div/a[text()[contains(.,'#{scope_name}')]]")
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
RSpec::Matchers.define :have_scope_not_picked do |expected|
|
|
19
|
+
match do |scope_picker|
|
|
20
|
+
data_picker = scope_picker.data_picker
|
|
21
|
+
scope_name = expected ? translated(expected.name) : I18n.t("decidim.scopes.global")
|
|
22
|
+
expect(data_picker).not_to have_selector(".picker-values div input[value='#{expected&.id || scope_picker.global_value}']", visible: false)
|
|
23
|
+
expect(data_picker).not_to have_selector(:xpath, "//div[contains(@class,'picker-values')]/div/a[text()[contains(.,'#{scope_name}')]]")
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def scope_pick(scope_picker, scope)
|
|
28
|
+
data_picker = scope_picker.data_picker
|
|
29
|
+
# use scope_repick to change single scope picker selected scope
|
|
30
|
+
expect(data_picker).to have_selector(".picker-values:empty", visible: false) if data_picker.has_css?(".picker-single")
|
|
31
|
+
|
|
32
|
+
expect(data_picker).to have_selector(".picker-prompt")
|
|
33
|
+
data_picker.find(".picker-prompt").click
|
|
34
|
+
|
|
35
|
+
scope_picker_browse_scopes(scope.part_of_scopes) if scope
|
|
36
|
+
scope_picker_pick_current
|
|
37
|
+
|
|
38
|
+
expect(scope_picker).to have_scope_picked(scope)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def scope_repick(scope_picker, old_scope, new_scope)
|
|
42
|
+
data_picker = scope_picker.data_picker
|
|
43
|
+
|
|
44
|
+
expect(data_picker).to have_selector(".picker-values div input[value='#{old_scope&.id || scope_picker.global_value}']", visible: false)
|
|
45
|
+
data_picker.find(:xpath, "//div[contains(@class,'picker-values')]/div/input[@value='#{old_scope&.id || scope_picker.global_value}']/../a").click
|
|
46
|
+
|
|
47
|
+
# browse to lowest common parent between old and new scope
|
|
48
|
+
parent_scope = (old_scope.part_of_scopes & new_scope.part_of_scopes).last
|
|
49
|
+
|
|
50
|
+
scope_picker_browse_scope(parent_scope, back: true)
|
|
51
|
+
scope_picker_browse_scopes(new_scope.part_of_scopes - old_scope.part_of_scopes)
|
|
52
|
+
scope_picker_pick_current
|
|
53
|
+
|
|
54
|
+
expect(scope_picker).to have_scope_picked(new_scope)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def scope_unpick(scope_picker, scope)
|
|
58
|
+
data_picker = scope_picker.data_picker
|
|
59
|
+
|
|
60
|
+
expect(data_picker).to have_selector(".picker-values div input[value='#{scope&.id || scope_picker.global_value}']", visible: false)
|
|
61
|
+
data_picker.find(".picker-values div input[value='#{scope&.id || scope_picker.global_value}']").click
|
|
62
|
+
|
|
63
|
+
expect(scope_picker).to have_scope_not_picked(scope)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
private
|
|
67
|
+
|
|
68
|
+
def data_picker_find(id, multiple: nil)
|
|
69
|
+
if multiple.nil?
|
|
70
|
+
expect(page).to have_selector("div.data-picker##{id}")
|
|
71
|
+
else
|
|
72
|
+
expect(page).to have_selector("div.data-picker.picker-#{multiple ? "multiple" : "single"}##{id}")
|
|
73
|
+
end
|
|
74
|
+
find("div.data-picker##{id}")
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def scope_picker_browse_scopes(scopes)
|
|
78
|
+
scopes.each do |scope|
|
|
79
|
+
scope_picker_browse_scope(scope)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def scope_picker_browse_scope(scope, back: false)
|
|
84
|
+
body = find(:xpath, "//body")
|
|
85
|
+
where = back ? "header" : "content"
|
|
86
|
+
scope_name = scope ? translated(scope.name) : I18n.t("decidim.scopes.global")
|
|
87
|
+
expect(body).to have_selector("#data_picker-modal .picker-#{where} a", text: scope_name)
|
|
88
|
+
body.find("#data_picker-modal .picker-#{where} a", text: scope_name).click
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def scope_picker_pick_current
|
|
92
|
+
body = find(:xpath, "//body")
|
|
93
|
+
expect(body).to have_selector("#data_picker-modal .picker-footer a[data-picker-choose]")
|
|
94
|
+
body.find("#data_picker-modal .picker-footer a[data-picker-choose]").click
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
RSpec.configure do |config|
|
|
100
|
+
config.include Capybara::ScopesPicker, type: :system
|
|
101
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Decidim
|
|
4
|
+
class ContentParsers::DummyFooParser < ContentParsers::BaseParser
|
|
5
|
+
def rewrite
|
|
6
|
+
content.gsub("foo", "*lorem*")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def metadata
|
|
10
|
+
content.scan("foo").size
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class ContentRenderers::DummyFooRenderer < ContentRenderers::BaseRenderer
|
|
15
|
+
def render
|
|
16
|
+
content.gsub("*lorem*", "<em>neque dicta enim quasi</em>")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class ContentParsers::DummyBarParser < ContentParsers::BaseParser
|
|
21
|
+
def rewrite
|
|
22
|
+
content.gsub("bar", "*ipsum*")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def metadata
|
|
26
|
+
content.scan("bar").size
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
class ContentRenderers::DummyBarRenderer < ContentRenderers::BaseRenderer
|
|
31
|
+
def render
|
|
32
|
+
content.gsub("*ipsum*", "<em>illo qui voluptas</em>")
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -42,6 +42,7 @@ module Decidim
|
|
|
42
42
|
include Decidim::Comments::Commentable
|
|
43
43
|
include Followable
|
|
44
44
|
include Traceable
|
|
45
|
+
include Publicable
|
|
45
46
|
|
|
46
47
|
feature_manifest_name "dummy"
|
|
47
48
|
|
|
@@ -105,6 +106,14 @@ Decidim.register_feature(:dummy) do |feature|
|
|
|
105
106
|
resource.template = "decidim/dummy_resource/linked_dummys"
|
|
106
107
|
end
|
|
107
108
|
|
|
109
|
+
feature.register_stat :dummies_count_high, primary: true, priority: Decidim::StatsRegistry::HIGH_PRIORITY do |features, _start_at, _end_at|
|
|
110
|
+
features.count * 10
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
feature.register_stat :dummies_count_medium, primary: true, priority: Decidim::StatsRegistry::MEDIUM_PRIORITY do |features, _start_at, _end_at|
|
|
114
|
+
features.count * 100
|
|
115
|
+
end
|
|
116
|
+
|
|
108
117
|
feature.exports :dummies do |exports|
|
|
109
118
|
exports.collection do
|
|
110
119
|
[1, 2, 3]
|
|
@@ -123,6 +132,7 @@ RSpec.configure do |config|
|
|
|
123
132
|
t.text :address
|
|
124
133
|
t.float :latitude
|
|
125
134
|
t.float :longitude
|
|
135
|
+
t.datetime :published_at
|
|
126
136
|
|
|
127
137
|
t.references :decidim_feature, index: true
|
|
128
138
|
t.references :decidim_author, index: true
|
|
@@ -71,8 +71,7 @@ shared_context "when managing a feature as a process admin" do
|
|
|
71
71
|
include_context "when managing a feature"
|
|
72
72
|
|
|
73
73
|
let(:user) do
|
|
74
|
-
create :
|
|
75
|
-
:process_admin,
|
|
74
|
+
create :process_admin,
|
|
76
75
|
:confirmed,
|
|
77
76
|
organization: organization,
|
|
78
77
|
participatory_process: participatory_process
|
|
@@ -17,10 +17,10 @@ module Decidim
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
RSpec.configure do |config|
|
|
20
|
-
config.include Decidim::WardenTestHelpers, type: :
|
|
20
|
+
config.include Decidim::WardenTestHelpers, type: :system
|
|
21
21
|
config.include Devise::Test::ControllerHelpers, type: :controller
|
|
22
22
|
|
|
23
|
-
config.after :each, type: :
|
|
23
|
+
config.after :each, type: :system do
|
|
24
24
|
Warden.test_reset!
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -5,7 +5,6 @@ ENV["RAILS_ENV"] ||= "test"
|
|
|
5
5
|
require "rails-controller-testing"
|
|
6
6
|
require "rspec/rails"
|
|
7
7
|
require "factory_bot_rails"
|
|
8
|
-
require "database_cleaner"
|
|
9
8
|
require "byebug"
|
|
10
9
|
require "cancan/matchers"
|
|
11
10
|
require "rectify/rspec"
|
|
@@ -27,9 +26,8 @@ RSpec.configure do |config|
|
|
|
27
26
|
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
|
28
27
|
# examples within a transaction, comment the following line or assign false
|
|
29
28
|
# instead of true.
|
|
30
|
-
config.use_transactional_fixtures =
|
|
29
|
+
config.use_transactional_fixtures = true
|
|
31
30
|
|
|
32
31
|
config.include TranslationHelpers
|
|
33
32
|
config.include Rectify::RSpec::Helpers
|
|
34
|
-
config.include Capybara::Select2
|
|
35
33
|
end
|
data/lib/decidim/dev/version.rb
CHANGED
|
@@ -12,7 +12,7 @@ namespace :decidim do
|
|
|
12
12
|
Dir.chdir("tmp/decidim_repo") do
|
|
13
13
|
env = { "ENFORCED_LOCALES" => Decidim.available_locales.join(",") }
|
|
14
14
|
|
|
15
|
-
Bundler.
|
|
15
|
+
Bundler.with_original_env do
|
|
16
16
|
system(env, "bundle install")
|
|
17
17
|
system(env, "bundle exec rspec spec/i18n_spec.rb")
|
|
18
18
|
end
|
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.9.0
|
|
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: 2018-
|
|
13
|
+
date: 2018-02-05 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: capybara
|
|
@@ -26,48 +26,20 @@ dependencies:
|
|
|
26
26
|
- - "~>"
|
|
27
27
|
- !ruby/object:Gem::Version
|
|
28
28
|
version: '2.15'
|
|
29
|
-
- !ruby/object:Gem::Dependency
|
|
30
|
-
name: capybara-screenshot
|
|
31
|
-
requirement: !ruby/object:Gem::Requirement
|
|
32
|
-
requirements:
|
|
33
|
-
- - "~>"
|
|
34
|
-
- !ruby/object:Gem::Version
|
|
35
|
-
version: '1.0'
|
|
36
|
-
type: :runtime
|
|
37
|
-
prerelease: false
|
|
38
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
39
|
-
requirements:
|
|
40
|
-
- - "~>"
|
|
41
|
-
- !ruby/object:Gem::Version
|
|
42
|
-
version: '1.0'
|
|
43
|
-
- !ruby/object:Gem::Dependency
|
|
44
|
-
name: database_cleaner
|
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
|
46
|
-
requirements:
|
|
47
|
-
- - "~>"
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: '1.6'
|
|
50
|
-
type: :runtime
|
|
51
|
-
prerelease: false
|
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
53
|
-
requirements:
|
|
54
|
-
- - "~>"
|
|
55
|
-
- !ruby/object:Gem::Version
|
|
56
|
-
version: '1.6'
|
|
57
29
|
- !ruby/object:Gem::Dependency
|
|
58
30
|
name: decidim
|
|
59
31
|
requirement: !ruby/object:Gem::Requirement
|
|
60
32
|
requirements:
|
|
61
33
|
- - '='
|
|
62
34
|
- !ruby/object:Gem::Version
|
|
63
|
-
version: 0.
|
|
35
|
+
version: 0.9.0
|
|
64
36
|
type: :runtime
|
|
65
37
|
prerelease: false
|
|
66
38
|
version_requirements: !ruby/object:Gem::Requirement
|
|
67
39
|
requirements:
|
|
68
40
|
- - '='
|
|
69
41
|
- !ruby/object:Gem::Version
|
|
70
|
-
version: 0.
|
|
42
|
+
version: 0.9.0
|
|
71
43
|
- !ruby/object:Gem::Dependency
|
|
72
44
|
name: factory_bot_rails
|
|
73
45
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -86,16 +58,16 @@ dependencies:
|
|
|
86
58
|
name: byebug
|
|
87
59
|
requirement: !ruby/object:Gem::Requirement
|
|
88
60
|
requirements:
|
|
89
|
-
- - "
|
|
61
|
+
- - "~>"
|
|
90
62
|
- !ruby/object:Gem::Version
|
|
91
|
-
version: '0'
|
|
63
|
+
version: '10.0'
|
|
92
64
|
type: :runtime
|
|
93
65
|
prerelease: false
|
|
94
66
|
version_requirements: !ruby/object:Gem::Requirement
|
|
95
67
|
requirements:
|
|
96
|
-
- - "
|
|
68
|
+
- - "~>"
|
|
97
69
|
- !ruby/object:Gem::Version
|
|
98
|
-
version: '0'
|
|
70
|
+
version: '10.0'
|
|
99
71
|
- !ruby/object:Gem::Dependency
|
|
100
72
|
name: codecov
|
|
101
73
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -128,14 +100,14 @@ dependencies:
|
|
|
128
100
|
name: i18n-tasks
|
|
129
101
|
requirement: !ruby/object:Gem::Requirement
|
|
130
102
|
requirements:
|
|
131
|
-
- -
|
|
103
|
+
- - "~>"
|
|
132
104
|
- !ruby/object:Gem::Version
|
|
133
105
|
version: 0.9.18
|
|
134
106
|
type: :runtime
|
|
135
107
|
prerelease: false
|
|
136
108
|
version_requirements: !ruby/object:Gem::Requirement
|
|
137
109
|
requirements:
|
|
138
|
-
- -
|
|
110
|
+
- - "~>"
|
|
139
111
|
- !ruby/object:Gem::Version
|
|
140
112
|
version: 0.9.18
|
|
141
113
|
- !ruby/object:Gem::Dependency
|
|
@@ -228,28 +200,34 @@ dependencies:
|
|
|
228
200
|
requirements:
|
|
229
201
|
- - "~>"
|
|
230
202
|
- !ruby/object:Gem::Version
|
|
231
|
-
version: 0.
|
|
203
|
+
version: 0.52.1
|
|
232
204
|
type: :runtime
|
|
233
205
|
prerelease: false
|
|
234
206
|
version_requirements: !ruby/object:Gem::Requirement
|
|
235
207
|
requirements:
|
|
236
208
|
- - "~>"
|
|
237
209
|
- !ruby/object:Gem::Version
|
|
238
|
-
version: 0.
|
|
210
|
+
version: 0.52.1
|
|
239
211
|
- !ruby/object:Gem::Dependency
|
|
240
212
|
name: rubocop-rspec
|
|
241
213
|
requirement: !ruby/object:Gem::Requirement
|
|
242
214
|
requirements:
|
|
243
215
|
- - "~>"
|
|
244
216
|
- !ruby/object:Gem::Version
|
|
245
|
-
version: '1.
|
|
217
|
+
version: '1.21'
|
|
218
|
+
- - "<"
|
|
219
|
+
- !ruby/object:Gem::Version
|
|
220
|
+
version: '1.22'
|
|
246
221
|
type: :runtime
|
|
247
222
|
prerelease: false
|
|
248
223
|
version_requirements: !ruby/object:Gem::Requirement
|
|
249
224
|
requirements:
|
|
250
225
|
- - "~>"
|
|
251
226
|
- !ruby/object:Gem::Version
|
|
252
|
-
version: '1.
|
|
227
|
+
version: '1.21'
|
|
228
|
+
- - "<"
|
|
229
|
+
- !ruby/object:Gem::Version
|
|
230
|
+
version: '1.22'
|
|
253
231
|
- !ruby/object:Gem::Dependency
|
|
254
232
|
name: selenium-webdriver
|
|
255
233
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -298,14 +276,14 @@ dependencies:
|
|
|
298
276
|
requirements:
|
|
299
277
|
- - "~>"
|
|
300
278
|
- !ruby/object:Gem::Version
|
|
301
|
-
version:
|
|
279
|
+
version: '1.0'
|
|
302
280
|
type: :runtime
|
|
303
281
|
prerelease: false
|
|
304
282
|
version_requirements: !ruby/object:Gem::Requirement
|
|
305
283
|
requirements:
|
|
306
284
|
- - "~>"
|
|
307
285
|
- !ruby/object:Gem::Version
|
|
308
|
-
version:
|
|
286
|
+
version: '1.0'
|
|
309
287
|
description: Utilities and tools we need to develop Decidim
|
|
310
288
|
email:
|
|
311
289
|
- josepjaume@gmail.com
|
|
@@ -325,11 +303,14 @@ files:
|
|
|
325
303
|
- config/locales/eu.yml
|
|
326
304
|
- config/locales/fi.yml
|
|
327
305
|
- config/locales/fr.yml
|
|
306
|
+
- config/locales/gl.yml
|
|
328
307
|
- config/locales/it.yml
|
|
329
308
|
- config/locales/nl.yml
|
|
330
309
|
- config/locales/pl.yml
|
|
310
|
+
- config/locales/pt-BR.yml
|
|
331
311
|
- config/locales/pt.yml
|
|
332
312
|
- config/locales/ru.yml
|
|
313
|
+
- config/locales/sv.yml
|
|
333
314
|
- config/locales/uk.yml
|
|
334
315
|
- lib/decidim/dev.rb
|
|
335
316
|
- lib/decidim/dev/assets/Exampledocument.pdf
|
|
@@ -337,6 +318,7 @@ files:
|
|
|
337
318
|
- lib/decidim/dev/assets/city.jpeg
|
|
338
319
|
- lib/decidim/dev/assets/city2.jpeg
|
|
339
320
|
- lib/decidim/dev/assets/city3.jpeg
|
|
321
|
+
- lib/decidim/dev/assets/dni.jpg
|
|
340
322
|
- lib/decidim/dev/assets/icon.png
|
|
341
323
|
- lib/decidim/dev/assets/id.jpg
|
|
342
324
|
- lib/decidim/dev/assets/malicious.jpg
|
|
@@ -350,9 +332,9 @@ files:
|
|
|
350
332
|
- lib/decidim/dev/test/rspec_support/attachments.rb
|
|
351
333
|
- lib/decidim/dev/test/rspec_support/authorization.rb
|
|
352
334
|
- lib/decidim/dev/test/rspec_support/capybara.rb
|
|
353
|
-
- lib/decidim/dev/test/rspec_support/
|
|
335
|
+
- lib/decidim/dev/test/rspec_support/capybara_scopes_picker.rb
|
|
354
336
|
- lib/decidim/dev/test/rspec_support/comments.rb
|
|
355
|
-
- lib/decidim/dev/test/rspec_support/
|
|
337
|
+
- lib/decidim/dev/test/rspec_support/content_processing.rb
|
|
356
338
|
- lib/decidim/dev/test/rspec_support/factory_bot.rb
|
|
357
339
|
- lib/decidim/dev/test/rspec_support/feature.rb
|
|
358
340
|
- lib/decidim/dev/test/rspec_support/feature_context.rb
|
|
@@ -380,7 +362,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
380
362
|
requirements:
|
|
381
363
|
- - ">="
|
|
382
364
|
- !ruby/object:Gem::Version
|
|
383
|
-
version: 2.3
|
|
365
|
+
version: '2.3'
|
|
384
366
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
385
367
|
requirements:
|
|
386
368
|
- - ">="
|
|
@@ -388,8 +370,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
388
370
|
version: '0'
|
|
389
371
|
requirements: []
|
|
390
372
|
rubyforge_project:
|
|
391
|
-
rubygems_version: 2.
|
|
373
|
+
rubygems_version: 2.7.3
|
|
392
374
|
signing_key:
|
|
393
375
|
specification_version: 4
|
|
394
|
-
summary: Decidim
|
|
376
|
+
summary: Decidim dev tools
|
|
395
377
|
test_files: []
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Capybara
|
|
4
|
-
module Select2
|
|
5
|
-
def select2(value, from:)
|
|
6
|
-
expect(page).to have_xpath("//select[@id='#{from}']/..")
|
|
7
|
-
select2_container = find(:xpath, "//select[@id='#{from}']/..")
|
|
8
|
-
|
|
9
|
-
expect(select2_container).to have_selector(".select2-selection")
|
|
10
|
-
select2_container.find(".select2-selection").click
|
|
11
|
-
|
|
12
|
-
expect(page).to have_no_content("Searching...")
|
|
13
|
-
|
|
14
|
-
body = find(:xpath, "//body")
|
|
15
|
-
expect(body).to have_selector(".select2-dropdown li.select2-results__option", text: value)
|
|
16
|
-
|
|
17
|
-
body.find(".select2-dropdown li.select2-results__option", text: value).click
|
|
18
|
-
expect(page).to have_select(from, with_options: [value])
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.configure do |config|
|
|
4
|
-
config.before(:suite) do
|
|
5
|
-
DatabaseCleaner.strategy = :truncation
|
|
6
|
-
DatabaseCleaner.clean_with :truncation
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
config.around(:each) do |example|
|
|
10
|
-
DatabaseCleaner.cleaning do
|
|
11
|
-
example.run
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|