Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions decidim-signature_collection/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,23 @@ In order to populate the database with example data proceed as usual in rails:
bundle exec rails db:seed
```

### Run tests

Create a dummy app in your application (if not present):

```bash
bin/rails decidim:generate_external_test_app
cd spec/decidim_dummy_app/
bundle exec rails decidim_signature_collection:install:migrations
RAILS_ENV=test bundle exec rails db:migrate
```

And run tests:

```bash
bundle exec rspec spec
```

## Additional considerations

### Cookies
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,12 @@ def call
delegate :candidacy, to: :form

def create_vote
vote = candidacy.votes.create!(
candidacy.votes.create!(
encrypted_xml_doc_to_sign: form.encrypted_xml_doc_to_sign,
encrypted_metadata: form.encrypted_metadata,
filename: form.filename,
hash_id: form.hash_id
)

vote
end

def timestamp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,6 @@ def create
end
end
end

# DELETE /candidacies/:candidacy_id/candidacy_vote
def destroy
enforce_permission_to :unvote, :candidacy, candidacy: current_candidacy

UnvoteCandidacy.call(current_candidacy, current_user) do
on(:ok) do
current_candidacy.reload
render :update_buttons_and_counters
end
end
end
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,19 @@ class Candidacy < ApplicationRecord

translatable_fields :title, :description, :answer

# Override Participable methods to use the correct namespace (SignatureCollection instead of Candidacies)
def self.module_name
"Decidim::SignatureCollection"
end

def self.admin_module_name
"Decidim::SignatureCollection::Admin"
end

def self.admins_query
Decidim::SignatureCollection::Admin::AdminUsers
end

delegate :type, :scope, :scope_name, :supports_required, to: :scoped_type, allow_nil: true
delegate :document_number_authorization_handler, :promoting_committee_enabled?, :attachments_enabled?,
:promoting_committee_enabled?, :custom_signature_end_date_enabled?, :area_enabled?, to: :type
Expand Down Expand Up @@ -462,10 +475,6 @@ def accepts_online_votes?
votes_enabled? && (online_signature_type? || any_signature_type?)
end

def accepts_online_unvotes?
accepts_online_votes? && type.undo_online_signatures_enabled?
end

def minimum_committee_members
type.minimum_committee_members || Decidim::SignatureCollection.minimum_committee_members
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ def permissions
update_public_candidacy?
print_candidacy?

unvote_candidacy?

candidacy_attachment?

candidacy_committee_action?
Expand Down Expand Up @@ -136,17 +134,6 @@ def authorized?(permission_action, resource: nil, permissions_holder: nil)
ActionAuthorizer.new(user, permission_action, permissions_holder, resource).authorize.ok?
end

def unvote_candidacy?
return false unless permission_action.action == :unvote &&
permission_action.subject == :candidacy

can_unvote = candidacy.accepts_online_unvotes? &&
candidacy.organization&.id == user.organization&.id &&
candidacy.votes.where(author: user).any?

toggle_allow(can_unvote)
end

def candidacy_attachment?
return false unless permission_action.action == :add_attachment &&
permission_action.subject == :candidacy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
<% if current_candidacy.validating? %>
<div class="row column">
<%= f.check_box :return_to_create_state, id: :candidacy_return_to_create_state %>
<p class="help-text"><%= t(".return_to_create_state_help") %></p>
</div>
<% end %>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,4 @@
candidacy_signatures_path(candidacy_slug: current_candidacy.slug),
class: "button button__xl w-full button__secondary"
) %>
<% else %>
<% if candidacy.voted_by?(current_user) %>
<% if allowed_to? :unvote, :candidacy, candidacy: candidacy %>
<%= button_to(
candidacy_candidacy_vote_path(candidacy_slug: current_candidacy.slug),
method: :delete,
remote: true,
data: { disable: true },
class: "button button__xl w-full button__secondary success"
) do %>
<%= icon "check-line" %>
<%= unvote_label %>
<% end %>
<% else %>
<button class='button button__xl w-full button__secondary success' disabled>
<%= icon "check-line" %>
<%= unvote_label %>
</button>
<% end %>
<% else %>
<%= action_authorized_link_to(
:vote,
t("vote", scope: "decidim.signature_collection.candidacies.vote_cabin"),
candidacy_signatures_path(candidacy_slug: current_candidacy.slug),
resource: current_candidacy,
permissions_holder: current_candidacy.type,
authorizations_modal_path: authorization_sign_modal_candidacy_path(current_candidacy),
class: "button button__xl w-full button__secondary"
) %>
<% end %>
<% end %>
11 changes: 5 additions & 6 deletions decidim-signature_collection/config/locales/ca.yml
Original file line number Diff line number Diff line change
Expand Up @@ -207,11 +207,6 @@ ca:
email_outro: Has rebut aquesta notificació perquè estàs seguint la candidatura "%{resource_title}". Pots deixar de rebre notificacions seguint l'enllaç anterior.
email_subject: S'ha ampliat la data de finalització de la recollida de signatura de la candidatura!
notification_title: El termini de recollida de signatures per a la candidatura <a href="%{resource_path}">%{resource_title}</a> s'ha ampliat.
candidacy_sent_to_technical_validation:
email_intro: La candidatura "%{resource_title}" s'ha enviat a validació tècnica. Comprova-ho a través del <a href="%{admin_candidacy_url}">taulell d'administració</a>
email_outro: Has rebut aquesta notificació perquè admnistres la plataforma.
email_subject: La candidatura %{resource_title} ha sol·licitat validació tècnica.
notification_title: La candidatura "%{resource_title}" s'ha enviat a validació tècnica. Comprova-ho a través del <a href="%{admin_candidacy_path}">taullel d'administració</a>
milestone_completed:
affected_user:
email_intro: La teva candidatura %{resource_title} ha aconseguit un %{percentage}% de les signatures necessàries!
Expand All @@ -225,7 +220,10 @@ ca:
notification_title: La candidatura <a href="%{resource_path}">%{resource_title}</a> ha aconseguit el %{percentage}% de les signatures.
signature_collection:
candidacy_sent_to_technical_validation:
notification_title: La candidatura "%{resource_title}" s'ha enviat a validació tècnica. Comprova-ho a través del <a href="%{resource_path}">taullel d'administració</a>
email_intro: La teva candidatura %{resource_title} ha aconseguit un %{percentage}% de les signatures necessàries!
email_outro: Has rebut aquesta notificació perquè has creat la candidatura "%{resource_title}".
email_subject: S'ha completat una nova fita!
notification_title: La candidatura "%{resource_title}" s'ha enviat a validació tècnica.</a>
support_threshold_reached:
email_intro: La candidatura %{resource_title} ha arribat al llindar de signatures
email_outro: Has rebut aquesta notificació perquè admnistres la plataforma.
Expand Down Expand Up @@ -257,6 +255,7 @@ ca:
answers:
edit:
answer: Resposta
return_to_create_state_help: Marcant aquesta opció, la candidatura tornarà a l'estat "Creada" per a què la persona que l'ha presentat pugui editar-la amb els canvis sol·licitats en aquesta resposta.
title: Resposta per %{title}
info_candidacy:
created_at: Creada el
Expand Down
8 changes: 3 additions & 5 deletions decidim-signature_collection/config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -215,10 +215,10 @@ en:
notification_title: The candidacy "%{resource_title}" has been sent to technical validation. Check it out at <a href="%{admin_candidacy_path}">the admin panel</a>
signature_collection:
candidacy_sent_to_technical_validation:
email_intro: The candidacy "%{resource_title}" has been sent to technical validation. Check it out at <a href="%{admin_candidacy_url}">the admin panel</a>
email_intro: The candidacy "%{resource_title}" has been sent to technical validation.
email_outro: You have received this notification because you are an admin of the platform.
email_subject: Candidacy "%{resource_title}" was sent to technical validation.
notification_title: The candidacy "%{resource_title}" has been sent to technical validation. Check it out at <a href="%{admin_candidacy_path}">the admin panel</a>
notification_title: The candidacy "%{resource_title}" has been sent to technical validation.
milestone_completed:
affected_user:
email_intro: Your candidacy %{resource_title} has achieved the %{percentage}% of signatures!
Expand All @@ -230,9 +230,6 @@ en:
email_outro: You have received this notification because you are following %{resource_title}. You can stop receiving notifications following the previous link.
email_subject: New milestone completed!
notification_title: The <a href="%{resource_path}">%{resource_title}</a> candidacy has achieved the %{percentage}% of signatures.
signature_collection:
candidacy_sent_to_technical_validation:
notification_title: The candidacy "%{resource_title}" has been sent to technical validation. Check it out at <a href="%{resource_path}">the admin panel</a>
support_threshold_reached:
email_intro: The candidacy %{resource_title} has reached the signatures threshold
email_outro: You have received this notification because you are an admin of the platform.
Expand Down Expand Up @@ -264,6 +261,7 @@ en:
answers:
edit:
answer: Answer
return_to_create_state_help: By checking this option, the candidacy will return to the "Created" state so that the person who submitted it can edit it with the changes requested in this answer.
title: Answer for %{title}
info_candidacy:
created_at: Created at
Expand Down
9 changes: 6 additions & 3 deletions decidim-signature_collection/config/locales/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -210,10 +210,10 @@ es:
email_subject: '¡Ampliado el términio de recogida de firmas para esta candidatura!'
notification_title: El plazo de recogida de firmas para la candidatura <a href="%{resource_path}">%{resource_title}</a> se ha ampliado.
candidacy_sent_to_technical_validation:
email_intro: La candidatura "%{resource_title}" ha sido enviada a la validación técnica. Compruébala en <a href="%{admin_candidacy_url}">el panel de administración</a>
email_intro: La candidatura "%{resource_title}" ha sido enviada a la validación técnica.
email_outro: Has recibido esta notificación porque administras la plataforma.
email_subject: La candidatura "%{resource_title}" fue enviada a validación técnica.
notification_title: La candidatura "%{resource_title}" ha sido enviada a validación técnica. Compruébalo en <a href="%{admin_candidacy_path}">el panel de administración</a>
notification_title: La candidatura "%{resource_title}" ha sido enviada a validación técnica.
milestone_completed:
affected_user:
email_intro: '¡Tu candidatura %{resource_title} ha conseguido el %{percentage}% de las firmas necesarias!'
Expand All @@ -227,7 +227,9 @@ es:
notification_title: La candidatura <a href="%{resource_path}">%{resource_title}</a> ha logrado el %{percentage}% de las firmas.
signature_collection:
candidacy_sent_to_technical_validation:
notification_title: La candidatura "%{resource_title}" se ha enviado a validación técnica. Compruébalo a través del <a href="%{resource_path}">panel de administración</a>
email_outro: Has recibido esta notificación porque has creado la candidatura "%{resource_title}".
email_subject: '¡Nuevo hito completado!'
notification_title: Tu candidatura <a href="%{resource_path}">%{resource_title}</a> ha conseguido el %{percentage}% de firmas.
support_threshold_reached:
email_intro: La candidatura %{resource_title} ha alcanzado el umbral de firmas
email_outro: Has recibido esta notificación porque administras la plataforma.
Expand Down Expand Up @@ -259,6 +261,7 @@ es:
answers:
edit:
answer: Responder
return_to_create_state_help: Marcando esta opción, la candidatura volverá al estado "Creada" para que la persona que la ha presentado pueda editarla con los cambios solicitados en esta respuesta.
title: Respuesta para %{title}
info_candidacy:
created_at: Creada el
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,11 @@
state { "rejected" }
end

trait :answered do
answer { generate_localized_description(:candidacy_answer, skip_injection:) }
answered_at { Time.current }
end

trait :online do
signature_type { "online" }
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
module Decidim
module SignatureCollection
module Admin
describe CreateCandidacyType, skip: "Awaiting review" do
describe CreateCandidacyType do
let(:form_klass) { CandidacyTypeForm }

describe "successful creation" do
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
module Decidim
module SignatureCollection
module Admin
describe PublishCandidacy, skip: "Awaiting review" do
describe PublishCandidacy do
subject { described_class.new(candidacy, user) }

let(:candidacy) { create(:candidacy, :created) }
Expand Down Expand Up @@ -34,10 +34,6 @@ module Admin
action_log = Decidim::ActionLog.last
expect(action_log.version).to be_present
end

it "increments the author's score" do
expect { subject.call }.to change { Decidim::Gamification.status_for(candidacy.author, :candidacies).score }.by(1)
end
end
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
module Decidim
module SignatureCollection
module Admin
describe UpdateCandidacyAnswer, skip: "Awaiting review" do
describe UpdateCandidacyAnswer do
let(:form_klass) { Decidim::SignatureCollection::Admin::CandidacyAnswerForm }

context "when valid data" do
Expand Down Expand Up @@ -60,11 +60,11 @@ module Admin

let(:command) { described_class.new(candidacy, form) }

it "sets candidacy state to created (0)" do
it "sets candidacy state to created" do
command.call
candidacy.reload

expect(candidacy.state).to eq(0)
expect(candidacy.state).to eq("created")
end
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
module Decidim
module SignatureCollection
module Admin
describe UpdateCandidacyType, skip: "Awaiting review" do
describe UpdateCandidacyType do
let(:form_klass) { CandidacyTypeForm }

context "when valid data" do
Expand Down
Loading
Loading