decidim 0.0.1.alpha7 → 0.0.1.alpha8

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim might be problematic. Click here for more details.

Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +2 -1
  3. data/.eslintignore +1 -0
  4. data/.eslintrc.json +12 -0
  5. data/.github/ISSUE_TEMPLATE.md +12 -0
  6. data/.github/PULL_REQUEST_TEMPLATE.md +8 -11
  7. data/.gitignore +1 -0
  8. data/.hound.yml +4 -0
  9. data/.rubocop.yml +14 -1
  10. data/.travis.yml +20 -4
  11. data/CODE_OF_CONDUCT.md +1 -1
  12. data/Dockerfile +1 -0
  13. data/Gemfile +3 -2
  14. data/Gemfile.common +1 -1
  15. data/Gemfile.lock +68 -39
  16. data/LICENSE.txt +619 -21
  17. data/README.md +17 -13
  18. data/Rakefile +1 -1
  19. data/codecov.yml +6 -1
  20. data/crowdin.yaml +4 -0
  21. data/decidim-admin/LICENSE.txt +619 -0
  22. data/decidim-admin/README.md +1 -1
  23. data/decidim-admin/app/assets/javascripts/decidim/admin/application.js.es6 +12 -0
  24. data/decidim-admin/app/assets/javascripts/decidim/admin/sort_steps.js.es6 +21 -0
  25. data/decidim-admin/app/assets/stylesheets/decidim/admin/_tables.scss +9 -0
  26. data/decidim-admin/app/commands/decidim/admin/activate_participatory_process_step.rb +43 -0
  27. data/decidim-admin/app/commands/decidim/admin/create_participatory_process.rb +1 -0
  28. data/decidim-admin/app/commands/decidim/admin/create_participatory_process_step.rb +46 -0
  29. data/decidim-admin/app/commands/decidim/admin/deactivate_participatory_process_step.rb +35 -0
  30. data/decidim-admin/app/commands/decidim/admin/publish_participatory_process.rb +35 -0
  31. data/decidim-admin/app/commands/decidim/admin/reorder_participatory_process_steps.rb +47 -0
  32. data/decidim-admin/app/commands/decidim/admin/unpublish_participatory_process.rb +35 -0
  33. data/decidim-admin/app/commands/decidim/admin/update_participatory_process.rb +1 -0
  34. data/decidim-admin/app/commands/decidim/admin/update_participatory_process_step.rb +49 -0
  35. data/decidim-admin/app/constraints/decidim/admin/organization_dashboard_constraint.rb +1 -1
  36. data/decidim-admin/app/controllers/decidim/admin/application_controller.rb +4 -0
  37. data/decidim-admin/app/controllers/decidim/admin/dashboard_controller.rb +1 -9
  38. data/decidim-admin/app/controllers/decidim/admin/participatory_process_publications_controller.rb +49 -0
  39. data/decidim-admin/app/controllers/decidim/admin/participatory_process_step_activations_controller.rb +56 -0
  40. data/decidim-admin/app/controllers/decidim/admin/participatory_process_step_ordering_controller.rb +30 -0
  41. data/decidim-admin/app/controllers/decidim/admin/participatory_process_steps_controller.rb +81 -0
  42. data/decidim-admin/app/controllers/decidim/admin/participatory_processes_controller.rb +7 -12
  43. data/decidim-admin/app/forms/decidim/admin/participatory_process_form.rb +1 -0
  44. data/decidim-admin/app/forms/decidim/admin/participatory_process_step_form.rb +25 -0
  45. data/decidim-admin/app/helpers/decidim/admin/application_helper.rb +1 -0
  46. data/decidim-admin/app/mailers/decidim/admin/application_mailer.rb +1 -1
  47. data/decidim-admin/app/models/decidim/admin/abilities/admin.rb +21 -0
  48. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/_form.html.erb +19 -0
  49. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/_table.html.erb +53 -0
  50. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/edit.html.erb +11 -0
  51. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/new.html.erb +11 -0
  52. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/show.html.erb +22 -0
  53. data/decidim-admin/app/views/decidim/admin/participatory_processes/_form.html.erb +4 -0
  54. data/decidim-admin/app/views/decidim/admin/participatory_processes/index.html.erb +22 -2
  55. data/decidim-admin/app/views/decidim/admin/participatory_processes/show.html.erb +21 -2
  56. data/decidim-admin/config/i18n-tasks.yml +2 -2
  57. data/decidim-admin/config/locales/ca.yml +55 -2
  58. data/decidim-admin/config/locales/en.yml +55 -2
  59. data/decidim-admin/config/locales/es.yml +56 -3
  60. data/decidim-admin/config/routes.rb +10 -1
  61. data/decidim-admin/decidim-admin.gemspec +6 -7
  62. data/decidim-admin/lib/decidim/admin/engine.rb +6 -1
  63. data/decidim-admin/spec/commands/activate_participatory_process_step_spec.rb +44 -0
  64. data/decidim-admin/spec/commands/deactivate_participatory_process_step_spec.rb +35 -0
  65. data/decidim-admin/spec/commands/publish_participatory_process_spec.rb +35 -0
  66. data/decidim-admin/spec/commands/reorder_participatory_process_steps_spec.rb +53 -0
  67. data/decidim-admin/spec/commands/unpublish_participatory_process_spec.rb +35 -0
  68. data/decidim-admin/spec/controllers/participatory_processes_controller_spec.rb +32 -0
  69. data/decidim-admin/spec/features/manage_participatory_process_steps_spec.rb +151 -0
  70. data/decidim-admin/spec/features/manage_participatory_processes_spec.rb +87 -39
  71. data/decidim-admin/spec/forms/participatory_process_form_spec.rb +122 -0
  72. data/decidim-admin/spec/forms/participatory_process_step_form_spec.rb +113 -0
  73. data/decidim-admin/spec/models/abilities/admin_spec.rb +25 -0
  74. data/decidim-admin/spec/spec_helper.rb +0 -1
  75. data/decidim-admin/vendor/assets/javascripts/html.sortable.min.js +2 -0
  76. data/decidim-api/.gitignore +7 -0
  77. data/decidim-api/LICENSE.txt +619 -0
  78. data/decidim-api/README.md +28 -0
  79. data/decidim-api/Rakefile +27 -0
  80. data/decidim-api/app/controllers/decidim/api/application_controller.rb +9 -0
  81. data/decidim-api/app/controllers/decidim/api/queries_controller.rb +33 -0
  82. data/decidim-api/app/schemas/decidim/api/schema.rb +9 -0
  83. data/decidim-api/app/types/decidim/api/localized_string_type.rb +13 -0
  84. data/decidim-api/app/types/decidim/api/process_step_type.rb +26 -0
  85. data/decidim-api/app/types/decidim/api/process_type.rb +18 -0
  86. data/decidim-api/app/types/decidim/api/query_type.rb +19 -0
  87. data/decidim-api/app/types/decidim/api/translated_field_type.rb +44 -0
  88. data/decidim-api/bin/rails +14 -0
  89. data/decidim-api/config/routes.rb +6 -0
  90. data/decidim-api/decidim-api.gemspec +27 -0
  91. data/decidim-api/lib/decidim/api.rb +9 -0
  92. data/decidim-api/lib/decidim/api/engine.rb +22 -0
  93. data/decidim-api/lib/tasks/decidim/api_tasks.rake +5 -0
  94. data/decidim-api/spec/controllers/queries_controller_spec.rb +22 -0
  95. data/decidim-api/spec/factories.rb +1 -0
  96. data/decidim-api/spec/schemas/schema_spec.rb +38 -0
  97. data/decidim-api/spec/spec_helper.rb +2 -0
  98. data/decidim-api/spec/support/type_helpers.rb +46 -0
  99. data/decidim-api/spec/types/localized_string_type_spec.rb +30 -0
  100. data/decidim-api/spec/types/process_step_type_spec.rb +50 -0
  101. data/decidim-api/spec/types/process_type_spec.rb +39 -0
  102. data/decidim-api/spec/types/query_type_spec.rb +24 -0
  103. data/decidim-api/spec/types/translated_field_type_spec.rb +68 -0
  104. data/decidim-dev/README.md +1 -1
  105. data/decidim-dev/decidim-dev.gemspec +5 -3
  106. data/decidim-dev/lib/decidim/dummy_authorization_handler.rb +18 -0
  107. data/decidim-dev/lib/decidim/test/authorization_shared_examples.rb +31 -0
  108. data/decidim-dev/lib/decidim/test/base_spec_helper.rb +6 -1
  109. data/decidim-dev/lib/decidim/test/rspec_support/authenticated_controller_context.rb +9 -0
  110. data/decidim-dev/lib/decidim/test/rspec_support/authorization_handlers.rb +7 -0
  111. data/decidim-dev/lib/decidim/test/rspec_support/bullet.rb +15 -0
  112. data/decidim-dev/lib/decidim/test/rspec_support/engine_routes.rb +30 -0
  113. data/decidim-dev/lib/decidim/test/rspec_support/translation_helpers.rb +12 -0
  114. data/decidim-dev/lib/generators/decidim/dummy_generator.rb +10 -0
  115. data/decidim-dev/lib/generators/decidim/templates/bullet.rb +6 -0
  116. data/decidim-system/LICENSE.txt +619 -0
  117. data/decidim-system/README.md +1 -1
  118. data/decidim-system/app/assets/javascripts/decidim/system/application.js.es6 +10 -0
  119. data/decidim-system/app/mailers/decidim/system/application_mailer.rb +1 -1
  120. data/decidim-system/decidim-system.gemspec +4 -4
  121. data/decidim.gemspec +3 -2
  122. data/lib/decidim.rb +1 -6
  123. data/lib/generators/decidim/app_generator.rb +13 -1
  124. data/lib/generators/decidim/install_generator.rb +11 -2
  125. data/lib/generators/decidim/templates/Gemfile.erb +5 -2
  126. data/lib/generators/decidim/templates/authorization_handler.rb +50 -0
  127. data/lib/generators/decidim/templates/carrierwave.rb +27 -0
  128. data/lib/generators/decidim/templates/decidim.scss.erb +3 -0
  129. data/lib/generators/decidim/templates/initializer.rb +3 -1
  130. data/package.json +21 -0
  131. data/yarn.lock +890 -0
  132. metadata +102 -21
  133. data/.eslintrc +0 -213
  134. data/decidim-admin/app/assets/javascripts/decidim/admin/application.js +0 -22
  135. data/decidim-admin/app/controllers/concerns/decidim/needs_authorization.rb +0 -50
  136. data/decidim-admin/app/policies/decidim/admin/application_policy.rb +0 -20
  137. data/decidim-admin/app/policies/decidim/admin/dashboard_policy.rb +0 -15
  138. data/decidim-admin/app/policies/decidim/admin/organization_policy.rb +0 -15
  139. data/decidim-admin/app/policies/decidim/admin/participatory_process_policy.rb +0 -57
  140. data/decidim-admin/spec/policies/dashboard_policy_spec.rb +0 -23
  141. data/decidim-admin/spec/policies/organization_policy_spec.rb +0 -41
  142. data/decidim-admin/spec/policies/participatory_process_policy_spec.rb +0 -153
  143. data/decidim-system/app/assets/javascripts/decidim/system/application.js +0 -22
@@ -0,0 +1,35 @@
1
+ require "spec_helper"
2
+
3
+ describe Decidim::Admin::DeactivateParticipatoryProcessStep do
4
+ let(:process_step) { create :participatory_process_step, :active }
5
+
6
+ subject { described_class.new(process_step) }
7
+
8
+ context "when the step is nil" do
9
+ let(:process_step) { nil }
10
+
11
+ it "is not valid" do
12
+ expect { subject.call }.to broadcast(:invalid)
13
+ end
14
+ end
15
+
16
+ context "when the step is inactive" do
17
+ let(:process_step) { create :participatory_process_step }
18
+
19
+ it "is not valid" do
20
+ expect { subject.call }.to broadcast(:invalid)
21
+ end
22
+ end
23
+
24
+ context "when the step is active" do
25
+ it "is valid" do
26
+ expect { subject.call }.to broadcast(:ok)
27
+ end
28
+
29
+ it "deactivates it" do
30
+ subject.call
31
+ process_step.reload
32
+ expect(process_step).not_to be_active
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,35 @@
1
+ require "spec_helper"
2
+
3
+ describe Decidim::Admin::PublishParticipatoryProcess do
4
+ let(:my_process) { create :participatory_process, :unpublished }
5
+
6
+ subject { described_class.new(my_process) }
7
+
8
+ context "when the process is nil" do
9
+ let(:my_process) { nil }
10
+
11
+ it "is not valid" do
12
+ expect { subject.call }.to broadcast(:invalid)
13
+ end
14
+ end
15
+
16
+ context "when the process is published" do
17
+ let(:my_process) { create :participatory_process }
18
+
19
+ it "is not valid" do
20
+ expect { subject.call }.to broadcast(:invalid)
21
+ end
22
+ end
23
+
24
+ context "when the process is not published" do
25
+ it "is valid" do
26
+ expect { subject.call }.to broadcast(:ok)
27
+ end
28
+
29
+ it "publishes it" do
30
+ subject.call
31
+ my_process.reload
32
+ expect(my_process).to be_published
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,53 @@
1
+ require "spec_helper"
2
+
3
+ describe Decidim::Admin::ReorderParticipatoryProcessSteps do
4
+ let(:process) { create :participatory_process }
5
+ let!(:process_step1) do
6
+ create(
7
+ :participatory_process_step,
8
+ participatory_process: process,
9
+ position: 1
10
+ )
11
+ end
12
+ let!(:process_step2) do
13
+ create(
14
+ :participatory_process_step,
15
+ participatory_process: process,
16
+ position: 2
17
+ )
18
+ end
19
+ let(:collection) { process.steps }
20
+ let(:order) { [process_step2.id, process_step1.id] }
21
+
22
+ subject { described_class.new(collection, order) }
23
+
24
+ context "when the order is nil" do
25
+ let(:order) { nil }
26
+
27
+ it "is not valid" do
28
+ expect { subject.call }.to broadcast(:invalid)
29
+ end
30
+ end
31
+
32
+ context "when the order is empty" do
33
+ let(:order) { [] }
34
+
35
+ it "is not valid" do
36
+ expect { subject.call }.to broadcast(:invalid)
37
+ end
38
+ end
39
+
40
+ context "when the order is valid" do
41
+ it "is valid" do
42
+ expect { subject.call }.to broadcast(:ok)
43
+ end
44
+
45
+ it "reorders the steps" do
46
+ subject.call
47
+ process_step1.reload
48
+ process_step2.reload
49
+ expect(process_step1.position).to eq 1
50
+ expect(process_step2.position).to eq 0
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,35 @@
1
+ require "spec_helper"
2
+
3
+ describe Decidim::Admin::UnpublishParticipatoryProcess do
4
+ let(:my_process) { create :participatory_process }
5
+
6
+ subject { described_class.new(my_process) }
7
+
8
+ context "when the process is nil" do
9
+ let(:my_process) { nil }
10
+
11
+ it "is not valid" do
12
+ expect { subject.call }.to broadcast(:invalid)
13
+ end
14
+ end
15
+
16
+ context "when the process is not published" do
17
+ let(:my_process) { create :participatory_process, :unpublished }
18
+
19
+ it "is not valid" do
20
+ expect { subject.call }.to broadcast(:invalid)
21
+ end
22
+ end
23
+
24
+ context "when the process is published" do
25
+ it "is valid" do
26
+ expect { subject.call }.to broadcast(:ok)
27
+ end
28
+
29
+ it "unpublishes it" do
30
+ subject.call
31
+ my_process.reload
32
+ expect(my_process).not_to be_published
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ require "spec_helper"
3
+
4
+ module Decidim
5
+ module Admin
6
+ describe ParticipatoryProcessesController, type: :controller do
7
+ let(:organization) { create(:organization) }
8
+ let!(:external_process) { create :participatory_process }
9
+
10
+ before do
11
+ @request.env["decidim.current_organization"] = organization
12
+ @request.env["devise.mapping"] = Devise.mappings[:user]
13
+ end
14
+
15
+ describe "GET show" do
16
+ context "process in another organization" do
17
+ let(:user) { create(:user, :admin, :confirmed, organization: organization) }
18
+
19
+ before do
20
+ sign_in user, scope: :user
21
+ end
22
+
23
+ it "is not visible to the user" do
24
+ expect do
25
+ get :show, params: { id: external_process.id }
26
+ end.to raise_error(ActiveRecord::RecordNotFound)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,151 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe "Manage participatory process steps", type: :feature do
6
+ let(:organization) { create(:organization) }
7
+ let(:admin) { create(:user, :admin, :confirmed, organization: organization) }
8
+ let(:participatory_process) do
9
+ create(
10
+ :participatory_process,
11
+ organization: organization,
12
+ description: { en: "Description", ca: "Descripció", es: "Descripción" },
13
+ short_description: { en: "Short description", ca: "Descripció curta", es: "Descripción corta" }
14
+ )
15
+ end
16
+ let(:active) { false }
17
+ let!(:process_step) do
18
+ create(
19
+ :participatory_process_step,
20
+ participatory_process: participatory_process,
21
+ active: active,
22
+ description: { en: "Description", ca: "Descripció", es: "Descripción" },
23
+ short_description: { en: "Short description", ca: "Descripció curta", es: "Descripción corta" }
24
+ )
25
+ end
26
+
27
+ before do
28
+ switch_to_host(organization.host)
29
+ login_as admin, scope: :user
30
+ visit decidim_admin.participatory_process_path(participatory_process)
31
+ end
32
+
33
+ it "displays all fields from a single participatory process" do
34
+ within "table" do
35
+ click_link translated(process_step.title)
36
+ end
37
+
38
+ within "dl" do
39
+ expect(page).to have_content(translated(process_step.title, locale: :en))
40
+ expect(page).to have_content(translated(process_step.title, locale: :es))
41
+ expect(page).to have_content(translated(process_step.title, locale: :ca))
42
+ expect(page).to have_content(translated(process_step.short_description, locale: :en))
43
+ expect(page).to have_content(translated(process_step.short_description, locale: :es))
44
+ expect(page).to have_content(translated(process_step.short_description, locale: :ca))
45
+ expect(page).to have_content(translated(process_step.description, locale: :en))
46
+ expect(page).to have_content(translated(process_step.description, locale: :es))
47
+ expect(page).to have_content(translated(process_step.description, locale: :ca))
48
+ end
49
+ end
50
+
51
+ it "creates a new participatory_process" do
52
+ find("#steps .actions .new").click
53
+
54
+ within ".new_participatory_process_step" do
55
+ fill_in :participatory_process_step_title_en, with: "My participatory process step"
56
+ fill_in :participatory_process_step_title_es, with: "Mi fase de proceso participativo"
57
+ fill_in :participatory_process_step_title_ca, with: "La meva fase de procés participatiu"
58
+ fill_in :participatory_process_step_short_description_en, with: "Short description"
59
+ fill_in :participatory_process_step_short_description_es, with: "Descripción corta"
60
+ fill_in :participatory_process_step_short_description_ca, with: "Descripció curta"
61
+ fill_in :participatory_process_step_description_en, with: "A longer description"
62
+ fill_in :participatory_process_step_description_es, with: "Descripción más larga"
63
+ fill_in :participatory_process_step_description_ca, with: "Descripció més llarga"
64
+ fill_in :participatory_process_step_start_date, with: 1.months.ago
65
+ fill_in :participatory_process_step_end_date, with: 2.months.from_now
66
+
67
+ find("*[type=submit]").click
68
+ end
69
+
70
+ within ".flash" do
71
+ expect(page).to have_content("successfully")
72
+ end
73
+
74
+ within "table" do
75
+ expect(page).to have_content("My participatory process step")
76
+ end
77
+ end
78
+
79
+ it "updates a participatory_process_step" do
80
+ within "#steps" do
81
+ within find("tr", text: translated(process_step.title)) do
82
+ click_link "Edit"
83
+ end
84
+ end
85
+
86
+ within ".edit_participatory_process_step" do
87
+ fill_in :participatory_process_step_title_en, with: "My new title"
88
+ fill_in :participatory_process_step_title_es, with: "Mi nuevo título"
89
+ fill_in :participatory_process_step_title_ca, with: "El meu nou títol"
90
+
91
+ find("*[type=submit]").click
92
+ end
93
+
94
+ within ".flash" do
95
+ expect(page).to have_content("successfully")
96
+ end
97
+
98
+ within "#steps table" do
99
+ expect(page).to have_content("My new title")
100
+ click_link("My new title")
101
+ end
102
+ end
103
+
104
+ context "deleting a participatory process step" do
105
+ let!(:process_step2) { create(:participatory_process_step, participatory_process: participatory_process) }
106
+
107
+ before do
108
+ visit decidim_admin.participatory_process_path(participatory_process)
109
+ end
110
+
111
+ it "deletes a participatory_process_step" do
112
+ within find("tr", text: translated(process_step2.title)) do
113
+ click_link "Destroy"
114
+ end
115
+
116
+ within ".flash" do
117
+ expect(page).to have_content("successfully")
118
+ end
119
+
120
+ within "table" do
121
+ expect(page).to_not have_content(translated(process_step2.title))
122
+ end
123
+ end
124
+ end
125
+
126
+ context "activating a step" do
127
+ it "activates a step" do
128
+ within find("tr", text: translated(process_step.title)) do
129
+ click_link "Activate"
130
+ end
131
+
132
+ within find("tr", text: translated(process_step.title)) do
133
+ expect(page).to have_content("Deactivate")
134
+ end
135
+ end
136
+ end
137
+
138
+ context "deactivating a step" do
139
+ let(:active) { true }
140
+
141
+ it "deactivates a step" do
142
+ within find("tr", text: translated(process_step.title)) do
143
+ click_link "Deactivate"
144
+ end
145
+
146
+ within find("tr", text: translated(process_step.title)) do
147
+ expect(page).to have_content("Activate")
148
+ end
149
+ end
150
+ end
151
+ end
@@ -17,7 +17,14 @@ describe "Manage participatory processes", type: :feature do
17
17
  end
18
18
  let(:organization) { create(:organization) }
19
19
  let(:admin) { create(:user, :admin, :confirmed, organization: organization) }
20
- let!(:participatory_process) { create(:process, organization: organization) }
20
+ let!(:participatory_process) do
21
+ create(
22
+ :participatory_process,
23
+ organization: organization,
24
+ description: { en: "Description", ca: "Descripció", es: "Descripción" },
25
+ short_description: { en: "Short description", ca: "Descripció curta", es: "Descripción corta" }
26
+ )
27
+ end
21
28
 
22
29
  before do
23
30
  switch_to_host(organization.host)
@@ -31,18 +38,18 @@ describe "Manage participatory processes", type: :feature do
31
38
  end
32
39
 
33
40
  within "dl" do
34
- expect(page).to have_content(participatory_process.title["en"])
35
- expect(page).to have_content(participatory_process.title["es"])
36
- expect(page).to have_content(participatory_process.title["ca"])
37
- expect(page).to have_content(participatory_process.subtitle["en"])
38
- expect(page).to have_content(participatory_process.subtitle["es"])
39
- expect(page).to have_content(participatory_process.subtitle["ca"])
40
- expect(page).to have_content(participatory_process.short_description["en"])
41
- expect(page).to have_content(participatory_process.short_description["es"])
42
- expect(page).to have_content(participatory_process.short_description["ca"])
43
- expect(page).to have_content(participatory_process.description["en"])
44
- expect(page).to have_content(participatory_process.description["es"])
45
- expect(page).to have_content(participatory_process.description["ca"])
41
+ expect(page).to have_content(translated(participatory_process.title, locale: :en))
42
+ expect(page).to have_content(translated(participatory_process.title, locale: :es))
43
+ expect(page).to have_content(translated(participatory_process.title, locale: :ca))
44
+ expect(page).to have_content(translated(participatory_process.subtitle, locale: :en))
45
+ expect(page).to have_content(translated(participatory_process.subtitle, locale: :es))
46
+ expect(page).to have_content(translated(participatory_process.subtitle, locale: :ca))
47
+ expect(page).to have_content(translated(participatory_process.short_description, locale: :en))
48
+ expect(page).to have_content(translated(participatory_process.short_description, locale: :es))
49
+ expect(page).to have_content(translated(participatory_process.short_description, locale: :ca))
50
+ expect(page).to have_content(translated(participatory_process.description, locale: :en))
51
+ expect(page).to have_content(translated(participatory_process.description, locale: :es))
52
+ expect(page).to have_content(translated(participatory_process.description, locale: :ca))
46
53
  expect(page).to have_content(participatory_process.hashtag)
47
54
  expect(page).to have_content(participatory_process.slug)
48
55
  expect(page).to have_xpath("//img[@src=\"#{participatory_process.hero_image.url}\"]")
@@ -90,7 +97,7 @@ describe "Manage participatory processes", type: :feature do
90
97
  end
91
98
 
92
99
  it "updates an participatory_process" do
93
- within find("tr", text: participatory_process.title["en"]) do
100
+ within find("tr", text: translated(participatory_process.title)) do
94
101
  click_link "Edit"
95
102
  end
96
103
 
@@ -119,14 +126,14 @@ describe "Manage participatory processes", type: :feature do
119
126
  end
120
127
 
121
128
  context "deleting a participatory process" do
122
- let!(:participatory_process2) { create(:process, organization: organization) }
129
+ let!(:participatory_process2) { create(:participatory_process, organization: organization) }
123
130
 
124
131
  before do
125
132
  visit decidim_admin.participatory_processes_path
126
133
  end
127
134
 
128
135
  it "deletes a participatory_process" do
129
- within find("tr", text: participatory_process2.title["en"]) do
136
+ within find("tr", text: translated(participatory_process2.title)) do
130
137
  click_link "Destroy"
131
138
  end
132
139
 
@@ -135,44 +142,85 @@ describe "Manage participatory processes", type: :feature do
135
142
  end
136
143
 
137
144
  within "table" do
138
- expect(page).to_not have_content(participatory_process2.title)
145
+ expect(page).to_not have_content(translated(participatory_process2.title))
139
146
  end
140
147
  end
141
148
  end
142
149
 
143
- context "when there are multiple organizations in the system" do
144
- let!(:external_participatory_process) { create(:process) }
150
+ context "publishing a process" do
151
+ let!(:participatory_process) { create(:participatory_process, :unpublished, organization: organization) }
145
152
 
146
- before do
147
- visit decidim_admin.participatory_processes_path
153
+ context "from the index page" do
154
+ it "publishes the process" do
155
+ click_link "Publish"
156
+ expect(page).to have_content("published successfully")
157
+ expect(page).to have_content("Unpublish")
158
+ expect(current_path).to eq decidim_admin.participatory_processes_path
159
+
160
+ participatory_process.reload
161
+ expect(participatory_process).to be_published
162
+ end
148
163
  end
149
164
 
150
- it "doesn't let the admin manage processes form other organizations" do
151
- within "table" do
152
- expect(page).to_not have_content(external_participatory_process.title)
165
+ context "from the process page" do
166
+ before do
167
+ click_link translated(participatory_process.title)
168
+ end
169
+
170
+ it "publishes the process" do
171
+ click_link "Publish"
172
+ expect(page).to have_content("published successfully")
173
+ expect(page).to have_content("Unpublish")
174
+ expect(current_path).to eq decidim_admin.participatory_process_path(participatory_process)
175
+
176
+ participatory_process.reload
177
+ expect(participatory_process).to be_published
153
178
  end
154
179
  end
155
180
  end
156
181
 
157
- context "when the user is not authorized to perform some actions" do
158
- let(:policy_double) { double edit?: policy_edit }
159
- let(:policy_edit) { true }
182
+ context "unpublishing a process" do
183
+ let!(:participatory_process) { create(:participatory_process, organization: organization) }
160
184
 
161
- before do
162
- allow(Decidim::Admin::ParticipatoryProcessPolicy)
163
- .to receive(:new)
164
- .and_return(policy_double)
185
+ context "from the index page" do
186
+ it "unpublishes the process" do
187
+ click_link "Unpublish"
188
+ expect(page).to have_content("unpublished successfully")
189
+ expect(page).to have_content("Publish")
190
+ expect(current_path).to eq decidim_admin.participatory_processes_path
191
+
192
+ participatory_process.reload
193
+ expect(participatory_process).not_to be_published
194
+ end
165
195
  end
166
196
 
167
- context "it can't edit a record" do
168
- let(:policy_edit) { false }
197
+ context "from the process page" do
198
+ before do
199
+ click_link translated(participatory_process.title)
200
+ end
201
+
202
+ it "unpublishes the process" do
203
+ click_link "Unpublish"
204
+ expect(page).to have_content("unpublished successfully")
205
+ expect(page).to have_content("Publish")
206
+ expect(current_path).to eq decidim_admin.participatory_process_path(participatory_process)
207
+
208
+ participatory_process.reload
209
+ expect(participatory_process).not_to be_published
210
+ end
211
+ end
212
+ end
213
+
214
+ context "when there are multiple organizations in the system" do
215
+ let!(:external_participatory_process) { create(:participatory_process) }
169
216
 
170
- context 'when the user tries to manually access to the edition page' do
171
- it "is redirected to the root path" do
172
- visit decidim_admin.edit_participatory_process_path(participatory_process)
173
- expect(page).to have_content("You are not authorized to perform this action")
174
- expect(current_path).to eq decidim_admin.root_path
175
- end
217
+ before do
218
+ visit decidim_admin.participatory_processes_path
219
+ end
220
+
221
+ it "doesn't let the admin manage processes form other organizations" do
222
+ within "table" do
223
+ expect(page).to_not have_content(external_participatory_process.title)
176
224
  end
177
225
  end
178
226
  end