decidim-meetings 0.27.10 → 0.28.0.rc4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/cells/decidim/meetings/attending_organizations_list_cell.rb +32 -0
- data/app/cells/decidim/meetings/cancel_registration_meeting_button/cancelation_modal.erb +21 -0
- data/app/cells/decidim/meetings/cancel_registration_meeting_button/show.erb +10 -13
- data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +2 -2
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings_cell.rb +8 -18
- data/app/cells/decidim/meetings/dates_and_map/show.erb +25 -0
- data/app/cells/decidim/meetings/dates_and_map/static_map.erb +1 -0
- data/app/cells/decidim/meetings/dates_and_map_cell.rb +35 -0
- data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +32 -30
- data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +76 -16
- data/app/cells/decidim/meetings/join_meeting_button/registration_modal.erb +25 -0
- data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +4 -0
- data/app/cells/decidim/meetings/join_meeting_button/show.erb +6 -4
- data/app/cells/decidim/meetings/join_meeting_button_cell.rb +3 -7
- data/app/cells/decidim/meetings/meeting_activity_cell.rb +1 -12
- data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +64 -0
- data/app/cells/decidim/meetings/meeting_cell.rb +2 -6
- data/app/cells/decidim/meetings/meeting_l/image.erb +5 -0
- data/app/cells/decidim/meetings/meeting_l_cell.rb +33 -0
- data/app/cells/decidim/meetings/meeting_month/show.erb +33 -0
- data/app/cells/decidim/meetings/meeting_month_cell.rb +72 -0
- data/app/cells/decidim/meetings/meeting_s_cell.rb +5 -37
- data/app/cells/decidim/meetings/meetings_map/show.erb +9 -24
- data/app/cells/decidim/meetings/meetings_map_cell.rb +1 -1
- data/app/cells/decidim/meetings/online_meeting_cell.rb +1 -0
- data/app/cells/decidim/meetings/online_meeting_link/show.erb +18 -41
- data/app/cells/decidim/meetings/public_participants_list/show.erb +4 -15
- data/app/commands/decidim/meetings/admin/copy_meeting.rb +1 -1
- data/app/commands/decidim/meetings/admin/create_meeting.rb +1 -1
- data/app/commands/decidim/meetings/admin/invite_user_to_join_meeting.rb +5 -5
- data/app/commands/decidim/meetings/admin/publish_meeting.rb +1 -1
- data/app/commands/decidim/meetings/admin/unpublish_meeting.rb +1 -1
- data/app/commands/decidim/meetings/create_meeting.rb +14 -3
- data/app/commands/decidim/meetings/decline_invitation.rb +1 -1
- data/app/commands/decidim/meetings/join_meeting.rb +5 -5
- data/app/commands/decidim/meetings/update_meeting.rb +13 -3
- data/app/controllers/concerns/decidim/meetings/component_filterable.rb +4 -4
- data/app/controllers/decidim/meetings/admin/agenda_controller.rb +6 -6
- data/app/controllers/decidim/meetings/admin/invites_controller.rb +3 -3
- data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +2 -4
- data/app/controllers/decidim/meetings/admin/meeting_copies_controller.rb +3 -3
- data/app/controllers/decidim/meetings/admin/meetings_controller.rb +7 -7
- data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +4 -4
- data/app/controllers/decidim/meetings/admin/registrations_controller.rb +6 -6
- data/app/controllers/decidim/meetings/application_controller.rb +11 -0
- data/app/controllers/decidim/meetings/calendars_controller.rb +0 -1
- data/app/controllers/decidim/meetings/directory/application_controller.rb +12 -0
- data/app/controllers/decidim/meetings/directory/meetings_controller.rb +5 -30
- data/app/controllers/decidim/meetings/live_events_controller.rb +1 -0
- data/app/controllers/decidim/meetings/meeting_closes_controller.rb +2 -3
- data/app/controllers/decidim/meetings/meetings_controller.rb +75 -7
- data/app/controllers/decidim/meetings/polls/answers_controller.rb +2 -2
- data/app/controllers/decidim/meetings/polls/questions_controller.rb +1 -1
- data/app/controllers/decidim/meetings/registrations_controller.rb +5 -5
- data/app/events/decidim/meetings/close_meeting_event.rb +1 -1
- data/app/events/decidim/meetings/meeting_event.rb +1 -1
- data/app/events/decidim/meetings/meeting_registration_notification_event.rb +3 -3
- data/app/events/decidim/meetings/meeting_registrations_enabled_event.rb +1 -1
- data/app/events/decidim/meetings/meeting_registrations_over_percentage_event.rb +1 -1
- data/app/events/decidim/meetings/registration_code_validated_event.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_form.rb +5 -1
- data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +2 -2
- data/app/forms/decidim/meetings/admin/validate_registration_code_form.rb +1 -1
- data/app/forms/decidim/meetings/base_meeting_form.rb +1 -1
- data/app/forms/decidim/meetings/meeting_form.rb +3 -3
- data/app/helpers/decidim/meetings/admin/application_helper.rb +1 -0
- data/app/helpers/decidim/meetings/application_helper.rb +18 -25
- data/app/helpers/decidim/meetings/directory/application_helper.rb +11 -59
- data/app/helpers/decidim/meetings/map_helper.rb +2 -9
- data/app/helpers/decidim/meetings/meetings_helper.rb +6 -5
- data/app/jobs/decidim/meetings/hide_all_created_by_author_job.rb +13 -0
- data/app/mailers/decidim/meetings/admin/invite_join_meeting_mailer.rb +1 -1
- data/app/mailers/decidim/meetings/registration_mailer.rb +1 -1
- data/app/models/decidim/meetings/meeting.rb +11 -32
- data/app/models/decidim/meetings/question.rb +1 -1
- data/app/packs/entrypoints/decidim_meetings.js +3 -0
- data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_attended_meetings.svg +42 -1
- data/app/packs/src/decidim/meetings/admin/agendas.js +3 -4
- data/app/packs/src/decidim/meetings/admin/registrations_form.js +12 -4
- data/app/packs/src/decidim/meetings/meetings_form.js +1 -1
- data/app/packs/src/decidim/meetings/poll.component.js +1 -28
- data/app/packs/stylesheets/decidim/meetings/_calendar.scss +47 -0
- data/app/packs/stylesheets/decidim/meetings/_item.scss +177 -0
- data/app/packs/stylesheets/decidim/meetings/_list.scss +58 -0
- data/app/packs/stylesheets/decidim/meetings/_live_event.scss +128 -0
- data/app/packs/stylesheets/decidim/meetings/meetings.scss +4 -0
- data/app/permissions/decidim/meetings/permissions.rb +15 -12
- data/app/presenters/decidim/meetings/admin_log/invite_presenter.rb +2 -2
- data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +6 -2
- data/app/presenters/decidim/meetings/admin_log/questionnaire_presenter.rb +2 -2
- data/app/presenters/decidim/meetings/admin_log/value_types/meeting_title_description_presenter.rb +1 -1
- data/app/presenters/decidim/meetings/log/resource_presenter.rb +18 -0
- data/app/presenters/decidim/meetings/meeting_presenter.rb +8 -2
- data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
- data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +7 -13
- data/app/services/decidim/meetings/meeting_iframe_embedder.rb +1 -1
- data/app/views/decidim/meetings/_calendar_modal.html.erb +19 -21
- data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +12 -12
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +8 -8
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child_template.html.erb +1 -1
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
- data/app/views/decidim/meetings/admin/agenda/_form.html.erb +54 -50
- data/app/views/decidim/meetings/admin/agenda/edit.html.erb +18 -6
- data/app/views/decidim/meetings/admin/agenda/new.html.erb +17 -5
- data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +11 -2
- data/app/views/decidim/meetings/admin/invites/_form.html.erb +38 -28
- data/app/views/decidim/meetings/admin/invites/index.html.erb +77 -81
- data/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +26 -28
- data/app/views/decidim/meetings/admin/meeting_closes/edit.html.erb +17 -5
- data/app/views/decidim/meetings/admin/meeting_copies/new.html.erb +17 -6
- data/app/views/decidim/meetings/admin/meetings/_form.html.erb +76 -83
- data/app/views/decidim/meetings/admin/meetings/_service.html.erb +14 -10
- data/app/views/decidim/meetings/admin/meetings/_services.html.erb +9 -5
- data/app/views/decidim/meetings/admin/meetings/edit.html.erb +17 -7
- data/app/views/decidim/meetings/admin/meetings/index.html.erb +133 -129
- data/app/views/decidim/meetings/admin/meetings/new.html.erb +16 -6
- data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +1 -1
- data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +1 -1
- data/app/views/decidim/meetings/admin/poll/_form.html.erb +17 -32
- data/app/views/decidim/meetings/admin/poll/_question.html.erb +81 -75
- data/app/views/decidim/meetings/admin/poll/edit.html.erb +28 -8
- data/app/views/decidim/meetings/admin/registrations/_form.html.erb +32 -55
- data/app/views/decidim/meetings/admin/registrations/edit.html.erb +59 -26
- data/app/views/decidim/meetings/directory/meetings/index.html.erb +15 -20
- data/app/views/decidim/meetings/directory/meetings/index.js.erb +1 -23
- data/app/views/decidim/meetings/layouts/_aside_block.html.erb +8 -0
- data/app/views/decidim/meetings/layouts/live_event.html.erb +20 -19
- data/app/views/decidim/meetings/live_events/show.html.erb +4 -5
- data/app/views/decidim/meetings/meeting_closes/_form.html.erb +3 -10
- data/app/views/decidim/meetings/meeting_closes/edit.html.erb +17 -21
- data/app/views/decidim/meetings/meetings/_actions.html.erb +6 -0
- data/app/views/decidim/meetings/meetings/_add_to_calendar_modal.html.erb +17 -0
- data/app/views/decidim/meetings/meetings/_form.html.erb +26 -34
- data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +3 -22
- data/app/views/decidim/meetings/meetings/_meeting.html.erb +74 -0
- data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +28 -26
- data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +98 -0
- data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +23 -36
- data/app/views/decidim/meetings/meetings/edit.html.erb +17 -21
- data/app/views/decidim/meetings/meetings/index.html.erb +15 -33
- data/app/views/decidim/meetings/meetings/index.js.erb +1 -23
- data/app/views/decidim/meetings/meetings/new.html.erb +17 -21
- data/app/views/decidim/meetings/meetings/show.html.erb +8 -167
- data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +9 -13
- data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -4
- data/app/views/decidim/meetings/polls/answers/create.js.erb +1 -1
- data/app/views/decidim/meetings/polls/questions/_index.html.erb +1 -1
- data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +5 -5
- data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +9 -11
- data/app/views/decidim/meetings/polls/questions/_question.html.erb +3 -3
- data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +1 -1
- data/app/views/decidim/meetings/shared/_filters.html.erb +20 -0
- data/app/views/decidim/meetings/shared/_index.html.erb +24 -0
- data/app/views/decidim/meetings/shared/_index.js.erb +16 -0
- data/app/views/decidim/meetings/shared/_meetings.html.erb +33 -0
- data/app/views/decidim/meetings/shared/_meetings_aside.html.erb +18 -0
- data/app/views/decidim/meetings/versions/show.html.erb +14 -4
- data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +13 -15
- data/config/assets.rb +0 -2
- data/config/locales/ar.yml +6 -94
- data/config/locales/bg.yml +0 -673
- data/config/locales/ca.yml +52 -75
- data/config/locales/cs.yml +48 -71
- data/config/locales/de.yml +53 -76
- data/config/locales/el.yml +48 -51
- data/config/locales/en.yml +51 -74
- data/config/locales/es-MX.yml +50 -73
- data/config/locales/es-PY.yml +48 -71
- data/config/locales/es.yml +53 -76
- data/config/locales/eu.yml +53 -76
- data/config/locales/fi-plain.yml +46 -69
- data/config/locales/fi.yml +44 -67
- data/config/locales/fr-CA.yml +43 -69
- data/config/locales/fr.yml +48 -71
- data/config/locales/ga-IE.yml +2 -16
- data/config/locales/gl.yml +5 -63
- data/config/locales/hu.yml +6 -92
- data/config/locales/id-ID.yml +4 -60
- data/config/locales/is-IS.yml +1 -22
- data/config/locales/it.yml +6 -86
- data/config/locales/ja.yml +45 -74
- data/config/locales/lb.yml +6 -67
- data/config/locales/lt.yml +42 -65
- data/config/locales/lv.yml +4 -61
- data/config/locales/nl.yml +4 -92
- data/config/locales/no.yml +4 -80
- data/config/locales/pl.yml +2 -199
- data/config/locales/pt-BR.yml +4 -200
- data/config/locales/pt.yml +5 -85
- data/config/locales/ro-RO.yml +11 -81
- data/config/locales/ru.yml +5 -60
- data/config/locales/sk.yml +4 -61
- data/config/locales/sl.yml +0 -3
- data/config/locales/sr-CS.yml +0 -6
- data/config/locales/sv.yml +14 -94
- data/config/locales/tr-TR.yml +5 -78
- data/config/locales/uk.yml +5 -53
- data/config/locales/zh-CN.yml +3 -70
- data/config/locales/zh-TW.yml +24 -51
- data/db/migrate/20201016065302_fix_meetings_registration_terms.rb +1 -1
- data/db/migrate/20230427105701_change_types_and_registration_types_on_meetings.rb +49 -0
- data/lib/decidim/meetings/admin_engine.rb +2 -2
- data/lib/decidim/meetings/component.rb +4 -216
- data/lib/decidim/meetings/content_blocks/registry_manager.rb +17 -0
- data/lib/decidim/meetings/directory_engine.rb +4 -6
- data/lib/decidim/meetings/engine.rb +62 -27
- data/lib/decidim/meetings/meeting_serializer.rb +3 -3
- data/lib/decidim/meetings/seeds.rb +188 -0
- data/lib/decidim/meetings/test/factories.rb +124 -54
- data/lib/decidim/meetings/test/notifications_handling.rb +3 -3
- data/lib/decidim/meetings/test/translated_event.rb +1 -1
- data/lib/decidim/meetings/version.rb +1 -1
- metadata +58 -58
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/elements.erb +0 -16
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/heading.erb +0 -1
- data/app/cells/decidim/meetings/content_blocks/upcoming_meetings/show.erb +0 -26
- data/app/cells/decidim/meetings/content_blocks/upcoming_meetings_cell.rb +0 -63
- data/app/cells/decidim/meetings/join_meeting_button/registration_confirm.erb +0 -31
- data/app/cells/decidim/meetings/meeting_highlighted_list_item/show.erb +0 -21
- data/app/cells/decidim/meetings/meeting_highlighted_list_item_cell.rb +0 -10
- data/app/cells/decidim/meetings/meeting_list_item/show.erb +0 -14
- data/app/cells/decidim/meetings/meeting_list_item_cell.rb +0 -44
- data/app/cells/decidim/meetings/meeting_m/address.erb +0 -5
- data/app/cells/decidim/meetings/meeting_m/data.erb +0 -2
- data/app/cells/decidim/meetings/meeting_m/date.erb +0 -8
- data/app/cells/decidim/meetings/meeting_m/footer.erb +0 -9
- data/app/cells/decidim/meetings/meeting_m/multiple_dates.erb +0 -17
- data/app/cells/decidim/meetings/meeting_m/single_date.erb +0 -9
- data/app/cells/decidim/meetings/meeting_m/tags.erb +0 -1
- data/app/cells/decidim/meetings/meeting_m_cell.rb +0 -121
- data/app/cells/decidim/meetings/meeting_s/show.erb +0 -27
- data/app/controllers/concerns/decidim/meetings/filterable.rb +0 -27
- data/app/controllers/decidim/meetings/widgets_controller.rb +0 -30
- data/app/packs/stylesheets/decidim/meetings/_header.scss +0 -52
- data/app/packs/stylesheets/decidim/meetings/_main.scss +0 -178
- data/app/packs/stylesheets/decidim/meetings/_meetings.scss +0 -2
- data/app/queries/decidim/meetings/admin/invites.rb +0 -60
- data/app/views/decidim/meetings/admin/meeting_closes/proposals_picker.html.erb +0 -1
- data/app/views/decidim/meetings/directory/meetings/_filters.html.erb +0 -34
- data/app/views/decidim/meetings/directory/meetings/_meetings.html.erb +0 -26
- data/app/views/decidim/meetings/meeting_closes/proposals_picker.html.erb +0 -1
- data/app/views/decidim/meetings/meetings/_calendar_modal.html.erb +0 -26
- data/app/views/decidim/meetings/meetings/_filters.html.erb +0 -40
- data/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +0 -18
- data/app/views/decidim/meetings/meetings/_meetings.html.erb +0 -48
- data/app/views/decidim/meetings/versions/index.html.erb +0 -8
- data/app/views/decidim/participatory_spaces/_upcoming_meeting_for_card.html.erb +0 -4
- data/config/locales/he-IL.yml +0 -1
- data/decidim-meetings.gemspec +0 -36
- data/lib/decidim/meetings/seeds/city.jpeg +0 -0
@@ -1,17 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "decidim/components/namer"
|
3
4
|
require "decidim/core/test/factories"
|
4
5
|
require "decidim/forms/test/factories"
|
5
6
|
require "decidim/participatory_processes/test/factories"
|
6
7
|
|
7
8
|
FactoryBot.define do
|
8
9
|
factory :meeting_component, parent: :component do
|
9
|
-
|
10
|
-
skip_injection { false }
|
11
|
-
end
|
12
|
-
name { generate_component_name(participatory_space.organization.available_locales, :meetings, skip_injection: skip_injection) }
|
10
|
+
name { Decidim::Components::Namer.new(participatory_space.organization.available_locales, :meetings).i18n_name }
|
13
11
|
manifest_name { :meetings }
|
14
|
-
participatory_space { create(:participatory_process, :with_steps, organization:
|
12
|
+
participatory_space { create(:participatory_process, :with_steps, organization:) }
|
15
13
|
|
16
14
|
trait :with_creation_enabled do
|
17
15
|
settings do
|
@@ -27,10 +25,40 @@ FactoryBot.define do
|
|
27
25
|
skip_injection { false }
|
28
26
|
end
|
29
27
|
|
30
|
-
title
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
title do
|
29
|
+
if skip_injection
|
30
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
31
|
+
else
|
32
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings TITLE\")</script> #{generate(:title)}" }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
description do
|
36
|
+
Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
37
|
+
if skip_injection
|
38
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
39
|
+
else
|
40
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings description\");</script> #{generate(:title)}" }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
location do
|
45
|
+
Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
46
|
+
if skip_injection
|
47
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
48
|
+
else
|
49
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings location\");</script> #{generate(:title)}" }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
location_hints do
|
54
|
+
Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
55
|
+
if skip_injection
|
56
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
57
|
+
else
|
58
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings location_hints\");</script> #{generate(:title)}" }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
34
62
|
address { Faker::Lorem.sentence(word_count: 3) }
|
35
63
|
latitude { Faker::Address.latitude }
|
36
64
|
longitude { Faker::Address.longitude }
|
@@ -40,10 +68,18 @@ FactoryBot.define do
|
|
40
68
|
transparent { true }
|
41
69
|
questionnaire { build(:questionnaire) }
|
42
70
|
registration_form_enabled { true }
|
43
|
-
registration_terms
|
71
|
+
registration_terms do
|
72
|
+
Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
73
|
+
if skip_injection
|
74
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
75
|
+
else
|
76
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings registration_terms\");</script> #{generate(:title)}" }
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
44
80
|
registration_type { :on_this_platform }
|
45
81
|
type_of_meeting { :in_person }
|
46
|
-
component { build(:
|
82
|
+
component { build(:component, manifest_name: "meetings") }
|
47
83
|
iframe_access_level { :all }
|
48
84
|
iframe_embed_type { :none }
|
49
85
|
|
@@ -78,7 +114,7 @@ FactoryBot.define do
|
|
78
114
|
end
|
79
115
|
|
80
116
|
trait :not_official do
|
81
|
-
author { create(:user, organization: component.organization
|
117
|
+
author { create(:user, organization: component.organization) if component }
|
82
118
|
end
|
83
119
|
|
84
120
|
trait :with_services do
|
@@ -89,7 +125,7 @@ FactoryBot.define do
|
|
89
125
|
end
|
90
126
|
|
91
127
|
after(:build) do |meeting, evaluator|
|
92
|
-
meeting.services = evaluator.services || build_list(:service, 2, meeting:
|
128
|
+
meeting.services = evaluator.services || build_list(:service, 2, meeting:)
|
93
129
|
end
|
94
130
|
end
|
95
131
|
|
@@ -97,15 +133,21 @@ FactoryBot.define do
|
|
97
133
|
|
98
134
|
trait :user_group_author do
|
99
135
|
author do
|
100
|
-
create(:user, organization: component.organization
|
136
|
+
create(:user, organization: component.organization) if component
|
101
137
|
end
|
102
138
|
user_group do
|
103
|
-
create(:user_group, :verified, organization: component.organization, users: [author]
|
139
|
+
create(:user_group, :verified, organization: component.organization, users: [author]) if component
|
104
140
|
end
|
105
141
|
end
|
106
142
|
|
107
143
|
trait :closed do
|
108
|
-
closing_report
|
144
|
+
closing_report do
|
145
|
+
if skip_injection
|
146
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
147
|
+
else
|
148
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings registration_terms\");</script> #{generate(:title)}" }
|
149
|
+
end
|
150
|
+
end
|
109
151
|
attendees_count { rand(50) }
|
110
152
|
contributions_count { rand(50) }
|
111
153
|
attending_organizations { Array.new(3) { Faker::TvShows::GameOfThrones.house }.join(", ") }
|
@@ -124,7 +166,13 @@ FactoryBot.define do
|
|
124
166
|
registrations_enabled { true }
|
125
167
|
available_slots { 10 }
|
126
168
|
reserved_slots { 4 }
|
127
|
-
registration_terms
|
169
|
+
registration_terms do
|
170
|
+
if skip_injection
|
171
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
172
|
+
else
|
173
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings registration_terms\");</script> #{generate(:title)}" }
|
174
|
+
end
|
175
|
+
end
|
128
176
|
end
|
129
177
|
|
130
178
|
trait :past do
|
@@ -177,9 +225,6 @@ FactoryBot.define do
|
|
177
225
|
end
|
178
226
|
|
179
227
|
factory :registration, class: "Decidim::Meetings::Registration" do
|
180
|
-
transient do
|
181
|
-
skip_injection { false }
|
182
|
-
end
|
183
228
|
meeting
|
184
229
|
user
|
185
230
|
end
|
@@ -188,13 +233,20 @@ FactoryBot.define do
|
|
188
233
|
transient do
|
189
234
|
skip_injection { false }
|
190
235
|
end
|
236
|
+
|
191
237
|
meeting
|
192
|
-
title
|
238
|
+
title do
|
239
|
+
if skip_injection
|
240
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
241
|
+
else
|
242
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings agenda title\");</script> #{generate(:title)}" }
|
243
|
+
end
|
244
|
+
end
|
193
245
|
visible { true }
|
194
246
|
|
195
247
|
trait :with_agenda_items do
|
196
|
-
after(:create) do |agenda,
|
197
|
-
create_list(:agenda_item, 2, :with_children, agenda:
|
248
|
+
after(:create) do |agenda, _evaluator|
|
249
|
+
create_list(:agenda_item, 2, :with_children, agenda:)
|
198
250
|
end
|
199
251
|
end
|
200
252
|
end
|
@@ -203,27 +255,39 @@ FactoryBot.define do
|
|
203
255
|
transient do
|
204
256
|
skip_injection { false }
|
205
257
|
end
|
258
|
+
|
206
259
|
agenda
|
207
|
-
title
|
208
|
-
|
260
|
+
title do
|
261
|
+
if skip_injection
|
262
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
263
|
+
else
|
264
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings agenda item title\");</script> #{generate(:title)}" }
|
265
|
+
end
|
266
|
+
end
|
267
|
+
description do
|
268
|
+
Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
269
|
+
if skip_injection
|
270
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
271
|
+
else
|
272
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings agenda item descrition\");</script> #{generate(:title)}" }
|
273
|
+
end
|
274
|
+
end
|
275
|
+
end
|
209
276
|
duration { 15 }
|
210
277
|
position { 0 }
|
211
278
|
|
212
279
|
trait :with_parent do
|
213
|
-
parent { create(:agenda_item, agenda:
|
280
|
+
parent { create(:agenda_item, agenda:) }
|
214
281
|
end
|
215
282
|
|
216
283
|
trait :with_children do
|
217
284
|
after(:create) do |agenda_item, evaluator|
|
218
|
-
create_list(:agenda_item, 2, parent: agenda_item, agenda: evaluator.agenda
|
285
|
+
create_list(:agenda_item, 2, parent: agenda_item, agenda: evaluator.agenda)
|
219
286
|
end
|
220
287
|
end
|
221
288
|
end
|
222
289
|
|
223
290
|
factory :invite, class: "Decidim::Meetings::Invite" do
|
224
|
-
transient do
|
225
|
-
skip_injection { false }
|
226
|
-
end
|
227
291
|
meeting
|
228
292
|
user
|
229
293
|
sent_at { 1.day.ago }
|
@@ -243,23 +307,32 @@ FactoryBot.define do
|
|
243
307
|
transient do
|
244
308
|
skip_injection { false }
|
245
309
|
end
|
310
|
+
|
246
311
|
meeting
|
247
|
-
title
|
248
|
-
|
312
|
+
title do
|
313
|
+
if skip_injection
|
314
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
315
|
+
else
|
316
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings agenda title\");</script> #{generate(:title)}" }
|
317
|
+
end
|
318
|
+
end
|
319
|
+
description do
|
320
|
+
Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
321
|
+
if skip_injection
|
322
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
323
|
+
else
|
324
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings agenda title\");</script> #{generate(:title)}" }
|
325
|
+
end
|
326
|
+
end
|
327
|
+
end
|
249
328
|
end
|
250
329
|
|
251
330
|
factory :poll, class: "Decidim::Meetings::Poll" do
|
252
|
-
transient do
|
253
|
-
skip_injection { false }
|
254
|
-
end
|
255
331
|
meeting
|
256
332
|
end
|
257
333
|
|
258
334
|
factory :meetings_poll_questionnaire, class: "Decidim::Meetings::Questionnaire" do
|
259
|
-
|
260
|
-
skip_injection { false }
|
261
|
-
end
|
262
|
-
questionnaire_for { build(:poll, skip_injection: skip_injection) }
|
335
|
+
questionnaire_for { build(:poll) }
|
263
336
|
end
|
264
337
|
|
265
338
|
factory :meetings_poll_question, class: "Decidim::Meetings::Question" do
|
@@ -268,13 +341,19 @@ FactoryBot.define do
|
|
268
341
|
options { [] }
|
269
342
|
end
|
270
343
|
|
271
|
-
body
|
344
|
+
body do
|
345
|
+
if skip_injection
|
346
|
+
Decidim::Faker::Localized.localized { generate(:title) }
|
347
|
+
else
|
348
|
+
Decidim::Faker::Localized.localized { "<script>alert(\"Meetings agenda title\");</script> #{generate(:title)}" }
|
349
|
+
end
|
350
|
+
end
|
272
351
|
position { 0 }
|
273
352
|
status { 0 }
|
274
353
|
question_type { Decidim::Meetings::Question::QUESTION_TYPES.first }
|
275
354
|
questionnaire factory: :meetings_poll_questionnaire
|
276
355
|
answer_options do
|
277
|
-
Array.new(3).collect { build(:meetings_poll_answer_option, question: nil
|
356
|
+
Array.new(3).collect { build(:meetings_poll_answer_option, question: nil) }
|
278
357
|
end
|
279
358
|
|
280
359
|
trait :unpublished do
|
@@ -291,27 +370,18 @@ FactoryBot.define do
|
|
291
370
|
end
|
292
371
|
|
293
372
|
factory :meetings_poll_answer, class: "Decidim::Meetings::Answer" do
|
294
|
-
transient do
|
295
|
-
skip_injection { false }
|
296
|
-
end
|
297
373
|
questionnaire factory: :meetings_poll_questionnaire
|
298
|
-
question { create(:meetings_poll_question, questionnaire:
|
299
|
-
user { create(:user, organization: questionnaire.questionnaire_for.organization
|
374
|
+
question { create(:meetings_poll_question, questionnaire:) }
|
375
|
+
user { create(:user, organization: questionnaire.questionnaire_for.organization) }
|
300
376
|
end
|
301
377
|
|
302
378
|
factory :meetings_poll_answer_option, class: "Decidim::Meetings::AnswerOption" do
|
303
|
-
|
304
|
-
skip_injection { false }
|
305
|
-
end
|
306
|
-
question { create(:meetings_poll_question, skip_injection: skip_injection) }
|
379
|
+
question { create(:meetings_poll_question) }
|
307
380
|
body { generate_localized_title }
|
308
381
|
end
|
309
382
|
|
310
383
|
factory :meetings_poll_answer_choice, class: "Decidim::Meetings::AnswerChoice" do
|
311
|
-
transient do
|
312
|
-
skip_injection { false }
|
313
|
-
end
|
314
384
|
answer factory: :meetings_poll_answer
|
315
|
-
answer_option { create(:meetings_poll_answer_option, question: answer.question
|
385
|
+
answer_option { create(:meetings_poll_answer_option, question: answer.question) }
|
316
386
|
end
|
317
387
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
shared_examples_for "emits an upcoming notificaton" do
|
4
|
-
context "when it
|
4
|
+
context "when it is a future meeting" do
|
5
5
|
let(:future_start_date) { 3.days.from_now }
|
6
6
|
|
7
7
|
before do
|
@@ -21,14 +21,14 @@ shared_examples_for "emits an upcoming notificaton" do
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
context "when it
|
24
|
+
context "when it is a past meeting" do
|
25
25
|
let(:past_start_date) { 1.day.ago }
|
26
26
|
|
27
27
|
before do
|
28
28
|
meeting.start_time = past_start_date
|
29
29
|
end
|
30
30
|
|
31
|
-
it "
|
31
|
+
it "does not schedule an upcoming meeting notification" do
|
32
32
|
expect(Decidim::Meetings::UpcomingMeetingNotificationJob).not_to receive(:generate_checksum)
|
33
33
|
expect(Decidim::Meetings::UpcomingMeetingNotificationJob).not_to receive(:set)
|
34
34
|
expect(Decidim::Meetings::UpcomingMeetingNotificationJob).not_to receive(:perform_later)
|
@@ -4,7 +4,7 @@ shared_examples_for "a translated meeting event" do
|
|
4
4
|
describe "translated notifications" do
|
5
5
|
let(:en_body) { "This is Sparta!" }
|
6
6
|
let(:body) { { en: en_body, machine_translations: { ca: "C'est Sparta!" } } }
|
7
|
-
let(:participatory_process) { create :participatory_process, organization:
|
7
|
+
let(:participatory_process) { create :participatory_process, organization: }
|
8
8
|
let(:meeting_component) { create(:meeting_component, participatory_space: participatory_process) }
|
9
9
|
let(:translatable) { true }
|
10
10
|
let(:en_version) { resource.description["en"] }
|