From ccbbd860692deda6fbd5dedee2a44a8c9ce50696 Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Wed, 14 Oct 2020 09:47:25 +0200 Subject: [PATCH 1/2] Simplify responses title in spec There is no need to provide multiple languages for these tests to work so we better stick to shorter definitions, which is a bit more readable. --- .../export_consultation_results_job_spec.rb | 16 ++-------------- .../consultation_results_serializer_spec.rb | 4 ++-- .../admin_manages_consultation_results_spec.rb | 16 ++-------------- 3 files changed, 6 insertions(+), 30 deletions(-) diff --git a/spec/jobs/decidim/action_delegator/export_consultation_results_job_spec.rb b/spec/jobs/decidim/action_delegator/export_consultation_results_job_spec.rb index 31cb3648..4c6c1e9c 100644 --- a/spec/jobs/decidim/action_delegator/export_consultation_results_job_spec.rb +++ b/spec/jobs/decidim/action_delegator/export_consultation_results_job_spec.rb @@ -11,20 +11,8 @@ module Decidim::ActionDelegator let!(:consultation) { create(:consultation, :finished, :published_results, organization: organization) } let!(:question) { create(:question, consultation: consultation) } - let!(:response) do - create( - :response, - question: question, - title: { "en" => "A", "ca" => "A", "es" => "A" } - ) - end - let!(:other_response) do - create( - :response, - question: question, - title: { "en" => "B", "ca" => "B", "es" => "B" } - ) - end + let!(:response) { create(:response, question: question, title: { "ca" => "A" }) } + let!(:other_response) { create(:response, question: question, title: { "ca" => "B" }) } let!(:other_user) { create(:user, :admin, :confirmed, organization: organization) } let!(:another_user) { create(:user, :admin, :confirmed, organization: organization) } diff --git a/spec/serializers/decidim/action_delegator/consultation_results_serializer_spec.rb b/spec/serializers/decidim/action_delegator/consultation_results_serializer_spec.rb index 790a6f64..65f75b44 100644 --- a/spec/serializers/decidim/action_delegator/consultation_results_serializer_spec.rb +++ b/spec/serializers/decidim/action_delegator/consultation_results_serializer_spec.rb @@ -8,7 +8,7 @@ module Decidim::ActionDelegator let(:result) do double( :result, - title: { "en" => "A", "ca" => "A", "es" => "A" }, + title: { "ca" => "A" }, membership_type: "consumer", membership_weight: 2, votes_count: 2 @@ -18,7 +18,7 @@ module Decidim::ActionDelegator describe "#serialize" do it "includes all attributes" do expect(subject.serialize).to eq( - title: translated(result.title), + title: "A", membership_type: "consumer", votes_count: 2, membership_weight: 2 diff --git a/spec/system/decidim/action_delegator/admin/admin_manages_consultation_results_spec.rb b/spec/system/decidim/action_delegator/admin/admin_manages_consultation_results_spec.rb index c510f273..67076212 100644 --- a/spec/system/decidim/action_delegator/admin/admin_manages_consultation_results_spec.rb +++ b/spec/system/decidim/action_delegator/admin/admin_manages_consultation_results_spec.rb @@ -9,20 +9,8 @@ let(:total_votes) { I18n.t("decidim.admin.consultations.results.total_votes", count: votes) } let!(:question) { create(:question, consultation: consultation) } - let!(:response) do - create( - :response, - question: question, - title: { "en" => "A", "ca" => "A", "es" => "A" } - ) - end - let!(:other_response) do - create( - :response, - question: question, - title: { "en" => "B", "ca" => "B", "es" => "B" } - ) - end + let!(:response) { create(:response, question: question, title: { "ca" => "A" }) } + let!(:other_response) { create(:response, question: question, title: { "ca" => "B" }) } let!(:other_user) { create(:user, :admin, :confirmed, organization: organization) } let!(:another_user) { create(:user, :admin, :confirmed, organization: organization) } From cf2208072a42b8f286891a61ad448bb265a0cbc9 Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Wed, 14 Oct 2020 09:48:39 +0200 Subject: [PATCH 2/2] Point results link to our custom controller action Without this, `decidim-consultations`'s `ConsultationsController` gets called and so `@questions` is not defined which causes our `results.html.erb` view to fail with a `ActionView::Template::Error Decidim::Consultations::Admin::ConsultationsController#results undefined method `each' for nil:NilClass`. --- .../decidim/admin/consultation.html.erb | 36 +++++++++++++++++++ spec/lib/overrides_spec.rb | 1 + ...admin_manages_consultation_results_spec.rb | 12 +++++++ 3 files changed, 49 insertions(+) create mode 100644 app/views/layouts/decidim/admin/consultation.html.erb diff --git a/app/views/layouts/decidim/admin/consultation.html.erb b/app/views/layouts/decidim/admin/consultation.html.erb new file mode 100644 index 00000000..f1e16f6f --- /dev/null +++ b/app/views/layouts/decidim/admin/consultation.html.erb @@ -0,0 +1,36 @@ +<% content_for :secondary_nav do %> +
+
    + <%= public_page_link decidim_consultations.consultation_path(current_consultation) %> + <% if allowed_to? :update, :consultation, consultation: current_consultation %> +
  • class="is-active" <% end %>> + <%= aria_selected_link_to t("info", scope: "decidim.admin.menu.consultations_submenu"), + decidim_admin_consultations.edit_consultation_path(current_consultation) %> +
  • + <% end %> + + <% if allowed_to? :read, :question %> +
  • class="is-active" <% end %>> + <%= aria_selected_link_to t("questions", scope: "decidim.admin.menu.consultations_submenu"), + decidim_admin_consultations.consultation_questions_path(current_consultation) %> +
  • +
  • class="is-active" <% end %>> + <%= aria_selected_link_to t("results", scope: "decidim.admin.menu.consultations_submenu"), + decidim_admin_action_delegator.results_consultation_path(current_consultation) %> +
  • + <% end %> +
+
+<% end %> + +<%= render "layouts/decidim/admin/application" do %> +
+
+ <%= link_to translated_attribute(current_consultation.title), decidim_consultations.consultation_path(current_consultation), target: "_blank" %> +
+
+ +
+ <%= yield %> +
+<% end %> diff --git a/spec/lib/overrides_spec.rb b/spec/lib/overrides_spec.rb index 1ae2a8f1..743032d0 100644 --- a/spec/lib/overrides_spec.rb +++ b/spec/lib/overrides_spec.rb @@ -23,6 +23,7 @@ module Decidim::ActionDelegator "/app/views/decidim/consultations/questions/_vote_modal.html.erb" => "b23948e4ed7e0360a09faef326bc3664", "/app/views/decidim/consultations/questions/_vote_modal_confirm.html.erb" => "7eb753c457e9a5adc6c16efd155ba434", "/app/views/decidim/consultations/admin/consultations/results.html.erb" => "1a2f7afd79b20b1fcf66bdece660e8ae", + "/app/views/layouts/decidim/admin/consultation.html.erb" => "7f70f790cf474389f327528136d366a3", # monkeypatches "/app/commands/decidim/consultations/vote_question.rb" => "8d89031039a1ba2972437d13687a72b5", diff --git a/spec/system/decidim/action_delegator/admin/admin_manages_consultation_results_spec.rb b/spec/system/decidim/action_delegator/admin/admin_manages_consultation_results_spec.rb index 67076212..d0e206be 100644 --- a/spec/system/decidim/action_delegator/admin/admin_manages_consultation_results_spec.rb +++ b/spec/system/decidim/action_delegator/admin/admin_manages_consultation_results_spec.rb @@ -34,6 +34,18 @@ login_as user, scope: :user end + context "when in the consultation page" do + let!(:consultation) { create(:consultation, :finished, :published_results, organization: organization) } + + before { visit decidim_admin_consultations.edit_consultation_path(consultation) } + + it "enables navigating to the results page" do + click_link I18n.t("decidim.admin.menu.consultations_submenu.results") + + expect(page).to have_current_path(decidim_admin_action_delegator.results_consultation_path(consultation)) + end + end + context "when viewing a finished consultation with votes" do let!(:consultation) { create(:consultation, :finished, :published_results, organization: organization) }