decidim-dev 0.8.4 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|