decidim-department_admin 0.7.2 → 0.8.1

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 (65) hide show
  1. checksums.yaml +4 -4
  2. data/app/decorators/decidim/admin/newsletters_controller_decorator.rb +1 -1
  3. data/app/decorators/decidim/admin/users_controller_decorator.rb +1 -1
  4. data/app/decorators/decidim/area_decorator.rb +2 -2
  5. data/app/decorators/decidim/assemblies/admin/assemblies_controller_decorator.rb +1 -1
  6. data/app/decorators/decidim/assemblies/admin/assemblies_helper_decorator.rb +1 -1
  7. data/app/decorators/decidim/assemblies/create_assembly_decorator.rb +1 -1
  8. data/app/decorators/decidim/assemblies/parent_assemblies_for_select_decorator.rb +1 -1
  9. data/app/decorators/decidim/assemblies/permissions_decorator.rb +1 -1
  10. data/app/decorators/decidim/assemblies/update_assembly_decorator.rb +1 -1
  11. data/app/decorators/decidim/assemblies_decorator.rb +1 -1
  12. data/app/decorators/decidim/assemblies_with_user_role_decorator.rb +1 -1
  13. data/app/decorators/decidim/conference_form_decorator.rb +1 -1
  14. data/app/decorators/decidim/conferences/admin/conferences_controller_decorator.rb +1 -1
  15. data/app/decorators/decidim/conferences/create_conference_decorator.rb +2 -1
  16. data/app/decorators/decidim/conferences/permissions_decorator.rb +1 -1
  17. data/app/decorators/decidim/conferences/update_conference_decorator.rb +1 -1
  18. data/app/decorators/decidim/conferences_decorator.rb +1 -1
  19. data/app/decorators/decidim/conferences_with_user_role_decorator.rb +1 -1
  20. data/app/decorators/decidim/decidim_form_helper_decorator.rb +1 -1
  21. data/app/decorators/decidim/invite_user_decorator.rb +1 -1
  22. data/app/decorators/decidim/invite_user_form_decorator.rb +1 -1
  23. data/app/decorators/decidim/newsletter_decorator.rb +1 -1
  24. data/app/decorators/decidim/newsletters_helper_decorator.rb +1 -1
  25. data/app/decorators/decidim/participatory_process_decorator.rb +1 -1
  26. data/app/decorators/decidim/participatory_process_group_decorator.rb +1 -1
  27. data/app/decorators/decidim/participatory_processes/admin/participatory_processes_controller_decorator.rb +1 -1
  28. data/app/decorators/decidim/participatory_processes/create_participatory_process_decorator.rb +1 -1
  29. data/app/decorators/decidim/participatory_processes/permissions_decorator.rb +1 -1
  30. data/app/decorators/decidim/participatory_processes/update_participatory_process_decorator.rb +1 -1
  31. data/app/decorators/decidim/participatory_processes_with_user_role_decorator.rb +1 -1
  32. data/app/decorators/decidim/user_decorator.rb +8 -8
  33. data/app/decorators/lib/decidim/participatory_space_resourceable_decorator.rb +3 -3
  34. data/app/helpers/decidim/department_admin/application_helper.rb +1 -1
  35. data/app/packs/stylesheets/decidim/admin/department_admin.scss +2 -0
  36. data/app/views/decidim/admin/users/_filters.html.erb +30 -26
  37. data/app/views/decidim/admin/users/_form.html.erb +21 -15
  38. data/app/views/decidim/admin/users/index.html.erb +77 -79
  39. data/app/views/decidim/admin/users/show.html.erb +9 -10
  40. data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +130 -138
  41. data/app/views/decidim/conferences/admin/conferences/_form.html.erb +33 -26
  42. data/app/views/decidim/conferences/admin/conferences/index.html.erb +73 -80
  43. data/app/views/decidim/participatory_processes/admin/participatory_processes/index.html.erb +108 -151
  44. data/lib/decidim/department_admin/version.rb +1 -1
  45. metadata +15 -55
  46. data/spec/commands/decidim/admin/deliver_newsletter_spec.rb +0 -175
  47. data/spec/commands/decidim/invite_user_spec.rb +0 -42
  48. data/spec/controllers/decidim/admin/users_controller_spec.rb +0 -119
  49. data/spec/factories.rb +0 -4
  50. data/spec/features/check_overrides_spec.rb +0 -11
  51. data/spec/i18n_spec.rb +0 -29
  52. data/spec/models/decidim/area_spec.rb +0 -23
  53. data/spec/permissions/decidim/department_admin/department_admin_permissions_spec.rb +0 -120
  54. data/spec/queries/parent_assemblies_for_select_spec.rb +0 -52
  55. data/spec/spec_helper.rb +0 -47
  56. data/spec/system/admin_explores_processes_spec.rb +0 -53
  57. data/spec/system/admin_invite_department_admin_spec.rb +0 -118
  58. data/spec/system/department_admin_manages_newsletters_spec.rb +0 -237
  59. data/spec/system/department_admin_should_be_able_to_access_admin_dashboard_spec.rb +0 -75
  60. data/spec/system/department_admin_should_be_able_to_manage_assemblies_spec.rb +0 -99
  61. data/spec/system/department_admin_should_be_able_to_manage_conferences_spec.rb +0 -74
  62. data/spec/system/department_admin_should_be_able_to_manage_processes_spec.rb +0 -117
  63. data/spec/system/department_admin_should_be_able_to_see_only_assemblies_from_her_area_spec.rb +0 -46
  64. data/spec/system/department_admin_should_be_able_to_see_only_newsletters_from_her_area_spec.rb +0 -53
  65. data/spec/system/department_admin_should_be_able_to_see_only_processes_from_her_area_spec.rb +0 -50
@@ -1,160 +1,117 @@
1
1
  <% add_decidim_page_title(t("participatory_processes", scope: "decidim.admin.titles")) %>
2
+ <%= admin_tabs(:admin_participatory_processes_menu).render %>
2
3
 
3
- <% content_for :sidebar_menu_nav do %>
4
- <%= sidebar_menu(:admin_participatory_processes_menu).render %>
5
- <% end %>
6
-
7
- <div class="card with-overflow" id="processes">
8
- <div class="card-divider">
9
- <h2 class="card-title">
10
- <%= t("participatory_processes", scope: "decidim.admin.titles") %>
11
-
12
- <% if allowed_to? :create, :process %>
13
- <%= link_to t("actions.new_process", scope: "decidim.admin"),
14
- [:new, :participatory_process],
15
- class: "button tiny button--title" %>
16
- <% end %>
17
-
18
- <% if process_group %>
19
- <span>&lt;</span>
20
- <%= link_to translated_attribute(process_group.title),
21
- edit_participatory_process_group_path(process_group) %>
22
- <% end %>
4
+ <div class="card" id="processes">
5
+ <%= admin_filter_selector %>
6
+ </div>
23
7
 
24
- <% if allowed_to? :import, :process %>
25
- <%= link_to t("actions.import_process", scope: "decidim.admin"),
26
- new_import_path,
27
- class: "button tiny button--title" %>
28
- <% end %>
8
+ <div class="table-scroll">
9
+ <table class="table-list">
10
+ <thead>
11
+ <tr>
12
+ <th>
13
+ <%= sort_link(query, :title, t("models.participatory_process.fields.title", scope: "decidim.admin")) %>
14
+ </th>
15
+ <th>
16
+ <%= sort_link(query, :area_name, t("models.participatory_process.fields.department", scope: "decidim.admin")) %>
17
+ </th>
18
+ <th>
19
+ <%= t("models.participatory_process.fields.department_role", scope: "decidim.admin") %>
20
+ </th>
21
+ <th>
22
+ <%= t("models.participatory_process.fields.process_role", scope: "decidim.admin") %>
23
+ </th>
24
+ <th>
25
+ <%= sort_link(query, :created_at, t("models.participatory_process.fields.created_at", scope: "decidim.admin"), default_order: :desc) %>
26
+ </th>
27
+ <th>
28
+ <%= sort_link(query, :private_space, t("models.participatory_process.fields.private", scope: "decidim.admin")) %>
29
+ </th>
30
+ <th class="table-list__actions">
31
+ <%= sort_link(query, :published_at, t("models.participatory_process.fields.published", scope: "decidim.admin")) %>
32
+ </th>
33
+ <th></th>
34
+ </tr>
35
+ </thead>
36
+ <tbody>
37
+ <% @participatory_processes.each do |process| %>
38
+ <tr>
39
+ <td>
40
+ <% if process.promoted? %>
41
+ <%= icon_with_tooltip "star-s-fill", t("models.assembly.fields.promoted", scope: "decidim.admin") %>
42
+ <% end %>
43
+ <% if allowed_to? :update, :process, process: process %>
44
+ <%= link_to translated_attribute(process.title), edit_participatory_process_path(process) %><br>
45
+ <% elsif allowed_to? :read, :component, process: process %>
46
+ <%= link_to translated_attribute(process.title), components_path(process) %><br>
47
+ <% else %>
48
+ <%= translated_attribute(process.title) %>
49
+ <% end %>
50
+ </td>
51
+ <td>
52
+ <% if(process.area != nil) %>
53
+ <%= translated_attribute(process.area.name)%>
54
+ <% end %>
55
+ </td>
56
+ <td>
57
+ <% if(process.area != nil) %>
58
+ <%= process.area.users.map(&:name).join(", ") %>
59
+ <% end %>
60
+ </td>
61
+ <td>
62
+ <%= process.users_with_any_role.map(&:name).join(", ") %>
63
+ </td>
64
+ <td class="table-list__date">
65
+ <%= l process.created_at, format: :short %>
66
+ </td>
67
+ <td class="table-list__state">
68
+ <% if process.private_space? %>
69
+ <span><%= t("participatory_processes.index.private", scope: "decidim.admin") %></span>
70
+ <% else %>
71
+ <span><%= t("participatory_processes.index.public", scope: "decidim.admin") %></span>
72
+ <% end %>
73
+ </td>
74
+ <td class="table-list__state">
75
+ <% if process.published? %>
76
+ <span class="label success !text-sm"><%= t("participatory_processes.index.published", scope: "decidim.admin") %></span>
77
+ <% else %>
78
+ <span class="label alert !text-sm"><%= t("participatory_processes.index.unpublished", scope: "decidim.admin") %></span>
79
+ <% end %>
80
+ </td>
81
+ <td class="table-list__actions">
82
+ <% if allowed_to? :update, :process, process: process %>
83
+ <%= icon_link_to "pencil-line", edit_participatory_process_path(process), t("actions.configure", scope: "decidim.admin"), class: "action-icon--new" %>
84
+ <% else %>
85
+ <span class="action-space icon"></span>
86
+ <% end %>
29
87
 
30
- <button data-toggle="process_groups" class="dropdown button tiny button--title">
31
- <%= t("actions.filter.process_groups", scope: "decidim.admin") %>
32
- </button>
33
- <div id="process_groups" class="dropdown-pane" data-position="bottom" data-dropdown data-auto-focus="true">
34
- <ul class="list-reset">
35
- <%= link_to query_params_with(decidim_participatory_process_group_id_eq: nil) do %>
36
- <li><%= t("actions.filter.all_processes", scope: "decidim.admin") %></li>
37
- <% end %>
38
- <% process_groups_for_select.each do |group_title, group_id| %>
39
- <%= link_to query_params_with(decidim_participatory_process_group_id_eq: group_id) do %>
40
- <li><%= group_title %></li>
88
+ <% if allowed_to? :create, :process, process: process %>
89
+ <%= icon_link_to "download-line", participatory_process_export_path(process), t("actions.export", scope: "decidim.admin"), method: :post, class: "action-icon--export" %>
90
+ <% else %>
91
+ <span class="action-space icon"></span>
41
92
  <% end %>
42
- <% end %>
43
- </ul>
44
- </div>
45
- </h2>
46
- </div>
47
- <%= admin_filter_selector %>
48
- <div class="card-section">
49
- <div class="table-scroll">
50
- <table class="table-list">
51
- <thead>
52
- <tr>
53
- <th>
54
- <%= sort_link(query, :title, t("models.participatory_process.fields.title", scope: "decidim.admin")) %>
55
- </th>
56
- <th>
57
- <%= sort_link(query, :area_name, t("models.participatory_process.fields.department", scope: "decidim.admin")) %>
58
- </th>
59
- <th>
60
- <%= t("models.participatory_process.fields.department_role", scope: "decidim.admin") %>
61
- </th>
62
- <th>
63
- <%= t("models.participatory_process.fields.process_role", scope: "decidim.admin") %>
64
- </th>
65
- <th>
66
- <%= sort_link(query, :created_at, t("models.participatory_process.fields.created_at", scope: "decidim.admin"), default_order: :desc) %>
67
- </th>
68
- <th>
69
- <%= sort_link(query, :private_space, t("models.participatory_process.fields.private", scope: "decidim.admin")) %>
70
- </th>
71
- <th class="table-list__actions">
72
- <%= sort_link(query, :published_at, t("models.participatory_process.fields.published", scope: "decidim.admin")) %>
73
- </th>
74
- <th></th>
75
- </tr>
76
- </thead>
77
- <tbody>
78
- <% @participatory_processes.each do |process| %>
79
- <tr>
80
- <td>
81
- <% if process.promoted? %>
82
- <span data-tooltip class="icon-state icon-highlight" aria-haspopup="true" data-disable-hover="false" title="<%= t("models.participatory_process.fields.promoted", scope: "decidim.admin") %>">
83
- <%= icon "star" %>
84
- </span>
85
- <% end %>
86
- <% if allowed_to? :update, :process, process: process %>
87
- <%= link_to translated_attribute(process.title), edit_participatory_process_path(process) %><br>
88
- <% elsif allowed_to? :read, :component, process: process %>
89
- <%= link_to translated_attribute(process.title), components_path(process) %><br>
90
- <% elsif allowed_to? :preview, :process, process: process %>
91
- <%= link_to translated_attribute(process.title), decidim_participatory_processes.participatory_process_path(process) %><br>
92
- <% elsif allowed_to? :read, :moderation, process: process %>
93
- <%= link_to translated_attribute(process.title), moderations_path(process) %><br>
94
- <% else %>
95
- <%= translated_attribute(process.title) %>
96
- <% end %>
97
- </td>
98
- <td>
99
- <% if(process.area != nil) %>
100
- <%= translated_attribute(process.area.name)%>
101
- <% end %>
102
- </td>
103
- <td>
104
- <% if(process.area != nil) %>
105
- <%= process.area.users.map(&:name).join(", ") %>
106
- <% end %>
107
- </td>
108
- <td>
109
- <%= process.users_with_any_role.map(&:name).join(", ") %>
110
- </td>
111
- <td>
112
- <%= l process.created_at, format: :short %>
113
- </td>
114
- <td class="table-list__state">
115
- <% if process.private_space? %>
116
- <strong class="text-alert"><%= t("participatory_processes.index.private", scope: "decidim.admin") %></strong>
117
- <% else %>
118
- <strong class="text-success"><%= t("participatory_processes.index.public", scope: "decidim.admin") %></strong>
119
- <% end %>
120
- </td>
121
- <td class="table-list__state">
122
- <% if process.published? %>
123
- <strong class="text-success"><%= t("participatory_processes.index.published", scope: "decidim.admin") %></strong>
124
- <% else %>
125
- <strong class="text-alert"><%= t("participatory_processes.index.not_published", scope: "decidim.admin") %></strong>
126
- <% end %>
127
- </td>
128
- <td class="table-list__actions">
129
- <% if allowed_to? :create, :process, process: process %>
130
- <%= icon_link_to "data-transfer-download", participatory_process_export_path(process), t("actions.export", scope: "decidim.admin"), method: :post, class: "action-icon--export" %>
131
- <% else %>
132
- <span class="action-space icon"></span>
133
- <% end %>
134
93
 
135
- <% if allowed_to? :create, :process, process: process %>
136
- <%= icon_link_to "clipboard", new_participatory_process_copy_path(process), t("actions.duplicate", scope: "decidim.admin"), class: "action-icon--copy" %>
137
- <% else %>
138
- <span class="action-space icon"></span>
139
- <% end %>
94
+ <% if allowed_to? :create, :process, process: process %>
95
+ <%= icon_link_to "file-copy-line", new_participatory_process_copy_path(process), t("actions.duplicate", scope: "decidim.admin"), class: "action-icon--copy" %>
96
+ <% else %>
97
+ <span class="action-space icon"></span>
98
+ <% end %>
140
99
 
141
- <% if allowed_to? :update, :process, process: process %>
142
- <%= icon_link_to "pencil", edit_participatory_process_path(process), t("actions.configure", scope: "decidim.admin"), class: "action-icon--new" %>
143
- <% else %>
144
- <span class="action-space icon"></span>
145
- <% end %>
100
+ <% if allowed_to? :preview, :process, process: process %>
101
+ <%= icon_link_to "eye-line", decidim_participatory_processes.participatory_process_path(process), t("actions.preview", scope: "decidim.admin"), class: "action-icon--preview", target: "_blank", data: { "external-link": false } %>
102
+ <% else %>
103
+ <span class="action-space icon"></span>
104
+ <% end %>
146
105
 
147
- <% if allowed_to? :preview, :process, process: process %>
148
- <%= icon_link_to "eye", decidim_participatory_processes.participatory_process_path(process), t("actions.preview", scope: "decidim.admin"), class: "action-icon--preview" %>
149
- <% else %>
150
- <span class="action-space icon"></span>
151
- <% end %>
152
- </td>
153
- </tr>
154
- <% end %>
155
- </tbody>
156
- </table>
157
- <%= paginate @participatory_processes, theme: "decidim" %>
158
- </div>
159
- </div>
106
+ <% if allowed_to? :read, :moderation, process: process %>
107
+ <%= icon_link_to "flag-line", moderations_path(process), t("actions.moderate", scope: "decidim.admin"), class: "action-icon--moderate" %>
108
+ <% else %>
109
+ <span class="action-space icon"></span>
110
+ <% end %>
111
+ </td>
112
+ </tr>
113
+ <% end %>
114
+ </tbody>
115
+ </table>
160
116
  </div>
117
+ <%= decidim_paginate @participatory_processes %>
@@ -5,7 +5,7 @@ module Decidim
5
5
  module DepartmentAdmin
6
6
  # see CHANGELOG.md
7
7
  def self.version
8
- "0.7.2"
8
+ "0.8.1"
9
9
  end
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-department_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oliver Valls
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-13 00:00:00.000000000 Z
11
+ date: 2024-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: decidim-admin
@@ -16,70 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.27.0
19
+ version: 0.28.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.27.0
26
+ version: 0.28.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: decidim-core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.27.0
33
+ version: 0.28.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.27.0
40
+ version: 0.28.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: decidim
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.27.0
47
+ version: 0.28.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.27.0
54
+ version: 0.28.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: decidim-conferences
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.27.0
61
+ version: 0.28.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.27.0
68
+ version: 0.28.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: decidim-dev
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.27.0
75
+ version: 0.28.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.27.0
82
+ version: 0.28.0
83
83
  description: This Dedicim's module produces a new "department admin" role which restricts
84
84
  the permissions of an Admin into participatory spaces of a given Area.
85
85
  email:
@@ -162,26 +162,6 @@ files:
162
162
  - lib/decidim/department_admin/engine.rb
163
163
  - lib/decidim/department_admin/test/factories.rb
164
164
  - lib/decidim/department_admin/version.rb
165
- - spec/commands/decidim/admin/deliver_newsletter_spec.rb
166
- - spec/commands/decidim/invite_user_spec.rb
167
- - spec/controllers/decidim/admin/users_controller_spec.rb
168
- - spec/factories.rb
169
- - spec/features/check_overrides_spec.rb
170
- - spec/i18n_spec.rb
171
- - spec/models/decidim/area_spec.rb
172
- - spec/permissions/decidim/department_admin/department_admin_permissions_spec.rb
173
- - spec/queries/parent_assemblies_for_select_spec.rb
174
- - spec/spec_helper.rb
175
- - spec/system/admin_explores_processes_spec.rb
176
- - spec/system/admin_invite_department_admin_spec.rb
177
- - spec/system/department_admin_manages_newsletters_spec.rb
178
- - spec/system/department_admin_should_be_able_to_access_admin_dashboard_spec.rb
179
- - spec/system/department_admin_should_be_able_to_manage_assemblies_spec.rb
180
- - spec/system/department_admin_should_be_able_to_manage_conferences_spec.rb
181
- - spec/system/department_admin_should_be_able_to_manage_processes_spec.rb
182
- - spec/system/department_admin_should_be_able_to_see_only_assemblies_from_her_area_spec.rb
183
- - spec/system/department_admin_should_be_able_to_see_only_newsletters_from_her_area_spec.rb
184
- - spec/system/department_admin_should_be_able_to_see_only_processes_from_her_area_spec.rb
185
165
  homepage: https://github.com/decidim/decidim-module-department_admin
186
166
  licenses:
187
167
  - AGPL-3.0
@@ -195,35 +175,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
195
175
  requirements:
196
176
  - - ">="
197
177
  - !ruby/object:Gem::Version
198
- version: 3.0.7
178
+ version: 3.1.1
199
179
  required_rubygems_version: !ruby/object:Gem::Requirement
200
180
  requirements:
201
181
  - - ">="
202
182
  - !ruby/object:Gem::Version
203
183
  version: '0'
204
184
  requirements: []
205
- rubygems_version: 3.2.33
185
+ rubygems_version: 3.3.7
206
186
  signing_key:
207
187
  specification_version: 4
208
188
  summary: A decidim department_admin module
209
- test_files:
210
- - spec/commands/decidim/admin/deliver_newsletter_spec.rb
211
- - spec/commands/decidim/invite_user_spec.rb
212
- - spec/controllers/decidim/admin/users_controller_spec.rb
213
- - spec/factories.rb
214
- - spec/features/check_overrides_spec.rb
215
- - spec/i18n_spec.rb
216
- - spec/models/decidim/area_spec.rb
217
- - spec/permissions/decidim/department_admin/department_admin_permissions_spec.rb
218
- - spec/queries/parent_assemblies_for_select_spec.rb
219
- - spec/spec_helper.rb
220
- - spec/system/admin_explores_processes_spec.rb
221
- - spec/system/admin_invite_department_admin_spec.rb
222
- - spec/system/department_admin_manages_newsletters_spec.rb
223
- - spec/system/department_admin_should_be_able_to_access_admin_dashboard_spec.rb
224
- - spec/system/department_admin_should_be_able_to_manage_assemblies_spec.rb
225
- - spec/system/department_admin_should_be_able_to_manage_conferences_spec.rb
226
- - spec/system/department_admin_should_be_able_to_manage_processes_spec.rb
227
- - spec/system/department_admin_should_be_able_to_see_only_assemblies_from_her_area_spec.rb
228
- - spec/system/department_admin_should_be_able_to_see_only_newsletters_from_her_area_spec.rb
229
- - spec/system/department_admin_should_be_able_to_see_only_processes_from_her_area_spec.rb
189
+ test_files: []
@@ -1,175 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- module Decidim::Admin
6
- describe DeliverNewsletter do
7
- describe "call" do
8
- let(:organization) { create(:organization) }
9
- let(:newsletter) do
10
- create(:newsletter,
11
- organization: organization,
12
- author: current_user)
13
- end
14
- let(:area) { create(:area, organization: organization) }
15
- let(:current_user) { create(:department_admin, :confirmed, organization: organization, area: area) }
16
- let(:send_to_all_users) { false }
17
- let(:send_to_followers) { false }
18
- let(:send_to_participants) { false }
19
- let(:participatory_space_types) { [] }
20
- let(:scope_ids) { [] }
21
-
22
- let(:form_params) do
23
- {
24
- send_to_all_users: send_to_all_users,
25
- send_to_followers: send_to_followers,
26
- send_to_participants: send_to_participants,
27
- participatory_space_types: participatory_space_types,
28
- scope_ids: scope_ids,
29
- }
30
- end
31
-
32
- let(:form) do
33
- SelectiveNewsletterForm.from_params(
34
- form_params
35
- ).with_context(
36
- current_organization: organization,
37
- current_user: current_user
38
- )
39
- end
40
-
41
- let(:command) { described_class.new(newsletter, form, current_user) }
42
-
43
- shared_examples_for "selective newsletter" do
44
- context "when everything is ok" do
45
- it "updates the counters and delivers to the right users" do
46
- clear_emails
47
- expect(emails.length).to eq(0)
48
-
49
- perform_enqueued_jobs { command.call }
50
-
51
- expect(emails.length).to eq(deliverable_users.count)
52
-
53
- newsletter.reload
54
- expect(newsletter.total_deliveries).to eq(deliverable_users.count)
55
- expect(newsletter.total_recipients).to eq(deliverable_users.count)
56
- end
57
-
58
- it "logs the action", versioning: true do
59
- expect(Decidim.traceability)
60
- .to receive(:perform_action!)
61
- .with("deliver", newsletter, current_user)
62
- .and_call_original
63
-
64
- expect do
65
- perform_enqueued_jobs { command.call }
66
- end.to change(Decidim::ActionLog, :count)
67
-
68
- action_log = Decidim::ActionLog.last
69
- expect(action_log.version).to be_present
70
- expect(action_log.version.event).to eq "update"
71
- end
72
- end
73
- end
74
-
75
- context "when the user is a department admin" do
76
- let!(:participatory_process) { create(:participatory_process, organization: organization, area: area) }
77
- let!(:component) { create(:dummy_component, organization: newsletter.organization, participatory_space: participatory_process) }
78
-
79
- context "when no spaces selected" do
80
- it "is not valid" do
81
- expect { command.call }.to broadcast(:invalid)
82
- end
83
- end
84
-
85
- context "when spaces selected" do
86
- let(:participatory_space_types) do
87
- [
88
- { "id" => nil,
89
- "manifest_name" => "participatory_processes",
90
- "ids" => [component.participatory_space.id.to_s] },
91
- { "id" => nil,
92
- "manifest_name" => "assemblies",
93
- "ids" => [] },
94
- { "id" => nil,
95
- "manifest_name" => "conferences",
96
- "ids" => [] },
97
- { "id" => nil,
98
- "manifest_name" => "consultations",
99
- "ids" => [] },
100
- { "id" => nil,
101
- "manifest_name" => "initiatives",
102
- "ids" => [] },
103
- ]
104
- end
105
-
106
- context "when sending to followers" do
107
- let(:send_to_followers) { true }
108
-
109
- let!(:deliverable_users) do
110
- create_list(:user, rand(2..9), :confirmed, organization: organization, newsletter_notifications_at: Time.current)
111
- end
112
-
113
- let!(:undeliverable_users) do
114
- create_list(:user, rand(2..9), :confirmed, organization: organization, newsletter_notifications_at: Time.current)
115
- end
116
-
117
- before do
118
- deliverable_users.each do |follower|
119
- create(:follow, followable: participatory_process, user: follower)
120
- end
121
- end
122
-
123
- it_behaves_like "selective newsletter"
124
- end
125
-
126
- context "when sending to all space participants" do
127
- let(:send_to_participants) { true }
128
- let!(:deliverable_users) do
129
- create_list(:user, rand(2..9), :confirmed, organization: organization, newsletter_notifications_at: Time.current)
130
- end
131
-
132
- before do
133
- deliverable_users.each do |participant|
134
- create(:dummy_resource, component: component, author: participant, published_at: Time.current)
135
- end
136
- end
137
-
138
- it_behaves_like "selective newsletter"
139
- end
140
-
141
- context "when sending to followers and participants" do
142
- let(:send_to_participants) { true }
143
- let(:send_to_followers) { true }
144
-
145
- let!(:participant_users) do
146
- create_list(:user, rand(2..9), :confirmed, organization: organization, newsletter_notifications_at: Time.current)
147
- end
148
-
149
- let!(:follower_users) do
150
- create_list(:user, rand(2..9), :confirmed, organization: organization, newsletter_notifications_at: Time.current)
151
- end
152
-
153
- let!(:deliverable_users) { participant_users + follower_users }
154
-
155
- let!(:undeliverable_users) do
156
- create_list(:user, rand(2..9), :confirmed, organization: organization, newsletter_notifications_at: Time.current)
157
- end
158
-
159
- before do
160
- participant_users.each do |participant|
161
- create(:dummy_resource, component: component, author: participant, published_at: Time.current)
162
- end
163
-
164
- follower_users.each do |follower|
165
- create(:follow, followable: component.participatory_space, user: follower)
166
- end
167
- end
168
-
169
- it_behaves_like "selective newsletter"
170
- end
171
- end
172
- end
173
- end
174
- end
175
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- module Decidim
6
- describe InviteUser do
7
- describe "call" do
8
- let(:organization) { create(:organization) }
9
-
10
- let(:current_user) { create(:admin, :confirmed, organization: organization) }
11
-
12
- let(:form_params) do
13
- {
14
- name: "user_name",
15
- email: "user_name@example.org",
16
- organization: organization,
17
- }
18
- end
19
-
20
- let(:form) do
21
- InviteUserForm.from_params(
22
- form_params
23
- ).with_context(
24
- current_organization: organization,
25
- current_user: current_user
26
- )
27
- end
28
-
29
- let(:command) { described_class.new(form, current_user) }
30
-
31
- shared_examples_for "inviting_users" do
32
- context "when everything is ok" do
33
- it "invites the user with no area" do
34
- invite_user
35
- user = Decidim::User.find_by(email: "user_name@example.org")
36
- expect(user).to exist
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end