Skip to content

Commit

Permalink
Fix broken conference registering when no registration types (decidim…
Browse files Browse the repository at this point in the history
…#12706)

* test:update conference registration system test

* test: add registration_types controller test

* fix: conference registration_types controller index

* correction after PR review

* fix: hide register button in conference when no registration types (#1221)

* fix: hide register button in conference when no registration types

* lint: add missing space in conference show view page

* fix: add has_published_registration_types? method to conference model

* fix: add rspec for has_published_registration_types? method

* lint: fix with rubocop

* refacto

* fix: update views and system tests after change request

* fix: update system spec after review

* style: update context sentences in system test (#1223)

---------

Co-authored-by: stephanie rousset <strabon@club-internet.fr>
Co-authored-by: stephanierousset <61418966+Stef-Rousset@users.noreply.github.com>
Co-authored-by: Quentin Champenois <26109239+Quentinchampenois@users.noreply.github.com>
  • Loading branch information
4 people authored May 6, 2024
1 parent 139d94c commit 3722ef4
Show file tree
Hide file tree
Showing 7 changed files with 140 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class RegistrationTypesController < Decidim::Conferences::ApplicationController
helper_method :collection, :conference

def index
raise ActionController::RoutingError, "No registration types for this conference " if registration_types.empty? && current_participatory_space.registrations_enabled.empty?
raise ActionController::RoutingError, "No registration types for this conference " if registration_types.empty? && current_participatory_space.registrations_enabled

enforce_permission_to :list, :registration_types
end
Expand Down
6 changes: 6 additions & 0 deletions decidim-conferences/app/models/decidim/conference.rb
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,12 @@ def has_available_slots?
available_slots > conference_registrations.count
end

def has_published_registration_types?
return false if registration_types.empty?

registration_types.any?(&:published_at?)
end

def remaining_slots
available_slots - conference_registrations.count
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<% if current_participatory_space.registrations_enabled? %>
<% if current_participatory_space.has_registration_for?(current_user) %>
<%= link_to t("layouts.decidim.conference_hero.manage_registration"), decidim_conferences.conference_registration_types_path(current_participatory_space), class: "button button__lg button__primary" %>
<% else %>
<% elsif current_participatory_space.has_published_registration_types? %>
<%= link_to t("layouts.decidim.conference_hero.register"), decidim_conferences.conference_registration_types_path(current_participatory_space), class: "button button__lg button__secondary" %>
<% end %>
<% end %>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ edit_link(
<% if current_participatory_space.registrations_enabled? %>
<% if current_participatory_space.has_registration_for?(current_user) %>
<%= link_to t("decidim.conferences.conferences.show.manage_registration"), decidim_conferences.conference_registration_types_path(current_participatory_space), class: "button button__lg button__primary" %>
<% else %>
<% elsif current_participatory_space.has_published_registration_types? %>
<%= link_to t("decidim.conferences.conferences.show.register"), decidim_conferences.conference_registration_types_path(current_participatory_space), class: "button button__lg button__secondary" %>
<% end %>
<% end %>
Expand All @@ -85,7 +85,9 @@ edit_link(

<% if current_participatory_space.registrations_enabled? %>
<section class="content-block">
<h2 class="h2 decorator"><%= t("decidim.conferences.conferences.show.register") %></h2>
<% if current_participatory_space.has_published_registration_types? %>
<h2 class="h2 decorator"><%= t("decidim.conferences.conferences.show.register") %></h2>
<% end %>
<% if current_user.present? %>
<div class="conference__box">
<div>
Expand All @@ -96,7 +98,7 @@ edit_link(
<div>
<% if current_participatory_space.has_registration_for?(current_user) %>
<%= link_to t("decidim.conferences.conferences.show.manage_registration"), decidim_conferences.conference_registration_types_path(current_participatory_space), class: "button button__lg button__primary" %>
<% else %>
<% elsif current_participatory_space.has_published_registration_types? %>
<%= link_to t("decidim.conferences.conferences.show.register"), decidim_conferences.conference_registration_types_path(current_participatory_space), class: "button button__lg button__secondary" %>
<% end %>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# frozen_string_literal: true

require "spec_helper"

module Decidim
module Conferences
describe RegistrationTypesController do
routes { Decidim::Conferences::Engine.routes }

let(:organization) { create(:organization) }
let!(:conference) do
create(
:conference,
:published,
registrations_enabled:,
organization:
)
end
let(:registrations_enabled) { true }
let(:registration_types_count) { 5 }
let!(:registration_types) do
create_list(:registration_type, registration_types_count, conference:)
end

before do
request.env["decidim.current_organization"] = organization
end

describe "index" do
context "when registration_types is present" do
it "does not raise an error" do
get :index, params: { conference_slug: conference.slug }
assert_response :success
end
end

context "when registration_types is empty" do
let(:registration_types) { [] }

context "and current_participatory_space registrations is enabled" do
it "does raise an error" do
expect { get :index, params: { conference_slug: conference.slug } }
.to raise_error(ActionController::RoutingError)
end
end

context "and current_participatory_space registrations is disabled" do
let(:registrations_enabled) { false }

it "does not raise an error" do
get :index, params: { conference_slug: conference.slug }
assert_response :success
end
end
end
end
end
end
end
24 changes: 24 additions & 0 deletions decidim-conferences/spec/models/decidim/conference_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,29 @@ module Decidim

it { is_expected.to be_valid }
end

describe "#has_published_registration_types?" do
subject { conference.has_published_registration_types? }

context "when conference has no registration type" do
it { is_expected.to be_falsey }
end

context "when conference has registration types" do
let!(:registration_types) do
create_list(:registration_type, 5, conference:)
end

it { is_expected.to be_truthy }

context "and the registration types are unpublished" do
let!(:registration_types) do
create_list(:registration_type, 5, :unpublished, conference:)
end

it { is_expected.to be_falsey }
end
end
end
end
end
44 changes: 44 additions & 0 deletions decidim-conferences/spec/system/conference_registrations_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,50 @@ def visit_conference_registration_type
expect(page).to have_css("button[disabled]", text: "Registration", count: 4)
end
end

context "and there are published registrations types" do
it "allows to register" do
visit_conference
within ".conference__hero" do
expect(page).to have_content "Register"
end
within ".conference__content-block" do
expect(page).to have_content "Register"
click_on "Register"
end
expect(page).to have_content "CHOOSE YOUR REGISTRATION OPTION:"
end
end

context "and there are unpublished registrations types" do
let!(:registration_types) do
create_list(:registration_type, 5, :unpublished, conference:)
end

it "does not show the register button" do
visit_conference
within ".conference__hero" do
expect(page).to have_no_content "Register"
end
within ".conference__content-block" do
expect(page).to have_no_content "Register"
end
end
end

context "and there are no registrations types" do
let(:registration_types) { [] }

it "does not show the register button" do
visit_conference
within ".conference__hero" do
expect(page).to have_no_content "Register"
end
within ".conference__content-block" do
expect(page).to have_no_content "Register"
end
end
end
end

context "and the user is going to the conference" do
Expand Down

0 comments on commit 3722ef4

Please sign in to comment.