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.
Files changed (36) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +4 -4
  3. data/Rakefile +4 -0
  4. data/config/locales/ca.yml +11 -1
  5. data/config/locales/en.yml +11 -0
  6. data/config/locales/es.yml +11 -1
  7. data/config/locales/eu.yml +11 -0
  8. data/config/locales/fi.yml +11 -0
  9. data/config/locales/fr.yml +11 -0
  10. data/config/locales/gl.yml +20 -0
  11. data/config/locales/it.yml +11 -0
  12. data/config/locales/nl.yml +11 -0
  13. data/config/locales/pl.yml +11 -0
  14. data/config/locales/pt-BR.yml +20 -0
  15. data/config/locales/pt.yml +12 -1
  16. data/config/locales/ru.yml +13 -2
  17. data/config/locales/sv.yml +20 -0
  18. data/config/locales/uk.yml +13 -2
  19. data/lib/decidim/dev/assets/dni.jpg +0 -0
  20. data/lib/decidim/dev/test/base_spec_helper.rb +1 -0
  21. data/lib/decidim/dev/test/rspec_support/action_mailer.rb +1 -3
  22. data/lib/decidim/dev/test/rspec_support/authorization.rb +1 -0
  23. data/lib/decidim/dev/test/rspec_support/capybara.rb +18 -16
  24. data/lib/decidim/dev/test/rspec_support/capybara_scopes_picker.rb +101 -0
  25. data/lib/decidim/dev/test/rspec_support/comments.rb +1 -1
  26. data/lib/decidim/dev/test/rspec_support/content_processing.rb +35 -0
  27. data/lib/decidim/dev/test/rspec_support/feature.rb +10 -0
  28. data/lib/decidim/dev/test/rspec_support/feature_context.rb +1 -2
  29. data/lib/decidim/dev/test/rspec_support/helpers.rb +1 -1
  30. data/lib/decidim/dev/test/rspec_support/warden.rb +2 -2
  31. data/lib/decidim/dev/test/spec_helper.rb +1 -3
  32. data/lib/decidim/dev/version.rb +1 -1
  33. data/lib/tasks/locale_checker.rake +1 -1
  34. metadata +31 -49
  35. data/lib/decidim/dev/test/rspec_support/capybara_select2.rb +0 -21
  36. data/lib/decidim/dev/test/rspec_support/database_cleaner.rb +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 49572dcec29c1214a9003e32d0f066270eb2838a
4
- data.tar.gz: 3bf052274cf01e5fc87c3aaee5ae81ba87b5a0aa
2
+ SHA256:
3
+ metadata.gz: c31826791567d8986287675d486e7ffdaac2b052c58365aadf44a70223c789ef
4
+ data.tar.gz: 26a3fdb6c68d20de68763b968a46800b8d02e11bd8b9762107d44ede87362774
5
5
  SHA512:
6
- metadata.gz: 3d399e72ca54497616eb5692ddbabed3cb1463f6213b06cbc0d9e47f3aef61b3ea7b89e5bf29a7d8120799baeff671aee40d3e9657bc2bb0d903959ef627982d
7
- data.tar.gz: fde8f55177973f2b079b761c46a9f30c10effd01815047af532986d438db713a967225e47e15647847a572b00aa862c76d5112f6b3d7d2944b7c9f66661b03db
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 gem allows local development of decidim's features and other features.
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 plugins. It also
9
- provides a `decidim:generate_external_test_app` rake task that you can use to
10
- generate a dummy application to test your plugin.
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
@@ -1,3 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "bundler/gem_tasks"
4
+
5
+ task :default do
6
+ puts "No default task defined yet."
7
+ end
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -3,7 +3,18 @@ pt:
3
3
  dummy:
4
4
  admin:
5
5
  exports:
6
- dummies: Bobos
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
@@ -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
@@ -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
@@ -20,6 +20,7 @@ require "rails"
20
20
  require "active_support/core_ext/string"
21
21
  require "decidim/core"
22
22
  require "decidim/core/test"
23
+ require "decidim/admin/test"
23
24
 
24
25
  require_relative "rspec_support/feature.rb"
25
26
  require_relative "rspec_support/authorization.rb"
@@ -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
 
@@ -20,6 +20,7 @@ end
20
20
 
21
21
  Decidim::Verifications.register_workflow(:dummy_authorization_workflow) do |workflow|
22
22
  workflow.engine = Decidim::Verifications::DummyVerification::Engine
23
+ workflow.expires_in = 1.hour
23
24
  end
24
25
 
25
26
  RSpec.configure do |config|
@@ -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 60 seconds"
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: :feature do
70
- Capybara.current_session.driver.reset!
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.include Decidim::CapybaraTestHelpers, type: :feature
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
@@ -15,5 +15,5 @@ module CommentsHelpers
15
15
  end
16
16
 
17
17
  RSpec.configure do |config|
18
- config.include CommentsHelpers, type: :feature
18
+ config.include CommentsHelpers, type: :system
19
19
  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 :user,
75
- :process_admin,
74
+ create :process_admin,
76
75
  :confirmed,
77
76
  organization: organization,
78
77
  participatory_process: participatory_process
@@ -42,5 +42,5 @@ module Decidim::FeatureTestHelpers
42
42
  end
43
43
 
44
44
  RSpec.configure do |config|
45
- config.include Decidim::FeatureTestHelpers, type: :feature
45
+ config.include Decidim::FeatureTestHelpers, type: :system
46
46
  end
@@ -17,10 +17,10 @@ module Decidim
17
17
  end
18
18
 
19
19
  RSpec.configure do |config|
20
- config.include Decidim::WardenTestHelpers, type: :feature
20
+ config.include Decidim::WardenTestHelpers, type: :system
21
21
  config.include Devise::Test::ControllerHelpers, type: :controller
22
22
 
23
- config.after :each, type: :feature do
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 = false
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
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-dev version.
5
5
  module Dev
6
6
  def self.version
7
- "0.8.4"
7
+ "0.9.0"
8
8
  end
9
9
  end
10
10
  end
@@ -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.with_clean_env do
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.8.4
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-01-16 00:00:00.000000000 Z
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.8.4
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.8.4
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.51.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.51.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.20'
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.20'
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: 0.0.3
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: 0.0.3
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/capybara_select2.rb
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/database_cleaner.rb
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.1
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.6.13
373
+ rubygems_version: 2.7.3
392
374
  signing_key:
393
375
  specification_version: 4
394
- summary: Decidim Dev tools
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