Skip to content

Commit

Permalink
Merge pull request #217 from mberlanda/events-controllers
Browse files Browse the repository at this point in the history
Improve test coverage on sitemap and events controllers
  • Loading branch information
mberlanda committed Nov 30, 2021
2 parents 5fe8b67 + 218214c commit 1e5f305
Show file tree
Hide file tree
Showing 9 changed files with 304 additions and 131 deletions.
3 changes: 3 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,9 @@ Metrics/ModuleLength:
Rails:
Enabled: true

Rails/ApplicationController:
Enabled: false

Rails/Output:
Exclude:
- config/unicorn.rb
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

[![Build Status](https://travis-ci.org/mberlanda/cheidelacoriera.svg?branch=master)](https://travis-ci.org/mberlanda/cheidelacoriera)
[![Maintainability](https://api.codeclimate.com/v1/badges/19dac7a302ec55f5cd95/maintainability)](https://codeclimate.com/github/mberlanda/cheidelacoriera/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/19dac7a302ec55f5cd95/test_coverage)](https://codeclimate.com/github/mberlanda/cheidelacoriera/test_coverage)

This Rails application aims to become a management system for away fans.

Expand Down
14 changes: 2 additions & 12 deletions app/controllers/events_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
class EventsController < PublicController
include PermissionsScopeHelper

before_action :authenticate_user!, only: %i[reservations]
before_action :admin_user?, only: :reservations
# before_action :active_user?, only: :details
before_action :authenticate_user!, only: %i[reservations csv_reservations]
before_action :admin_user?, only: %i[reservations csv_reservations]

def upcoming; end

Expand All @@ -21,9 +20,6 @@ def details
event_id: @event.id, user_id: current_user.id
)

# @react_form = ENV['REACT_FORMS'] || true

# if @react_form
default_fans_count = 1
@reservation_form = {
schema: ReservationSchema.jsonschema(
Expand All @@ -40,12 +36,6 @@ def details
fan_names: [{ first_name: current_user.first_name, last_name: current_user.last_name }]
}
}
# else
# @reservation ||= Reservation.new(
# event_id: @event.id,
# fan_names: [current_user.form_name].compact
# )
# end
end
end

Expand Down
2 changes: 1 addition & 1 deletion app/controllers/public_controller.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true

class PublicController < ApplicationController
class PublicController < ActionController::Base
protect_from_forgery with: :exception
# before_action :set_locale
layout 'application'
Expand Down
53 changes: 53 additions & 0 deletions spec/controllers/crud/events_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe Crud::EventsController, type: :controller do
context 'when user not logged' do
it 'redirects to login page' do
get :index
aggregate_failures do
expect(response).to have_http_status(:found)
expect(response).to redirect_to(new_user_session_url)
end
end
end

context 'when active fan is logged in' do
it 'redirects to home page' do
sign_in FactoryBot.create(:user, role: :fan, status: :active)
get :index
aggregate_failures do
expect(response).to have_http_status(:found)
expect(response).to redirect_to(root_url)
end
end
end

context 'when admin is logged in' do
let(:admin) { FactoryBot.create(:user, role: :admin, status: :active) }
let(:event) { FactoryBot.create(:event) }

before do
FactoryBot.create(:reservation, event: event, fan_names: %w[Foo|Bar])
sign_in admin
end

it 'renders events list' do
get :index
expect(response).to have_http_status(:ok)
end

it 'shows a given event' do
get :show, params: { id: event.id }

expect(response).to have_http_status(:ok)
end

it 'renders event reservations list' do
get :datatable_reservations, params: { id: event.id }, format: :json

expect(response).to have_http_status(:ok)
end
end
end
95 changes: 95 additions & 0 deletions spec/controllers/events_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe EventsController, type: :controller do
let!(:event) { FactoryBot.create(:event) }

context 'when user is not logged in' do
it 'can see upcoming events' do
get :upcoming

expect(response).to have_http_status(:ok)
end

it 'can see all events' do
get :all

expect(response).to have_http_status(:ok)
end

it 'can see event details' do
get :details, params: { id: event.id }

expect(response).to have_http_status(:ok)
end

it 'cannot see reservations for an event' do
get :reservations, params: { id: event.id }

expect(response).to have_http_status(:found)
expect(response).to redirect_to(new_user_session_url)
end

it 'cannot export reservations csv for an event' do
get :csv_reservations, params: { id: event.id }, format: :csv

expect(response).to have_http_status(:unauthorized)
end
end

context 'when active fan is logged in' do
let(:active_fan) { FactoryBot.create(:user, role: :fan, status: :active) }

before do
sign_in active_fan
end

it 'can see event details without a reservation' do
get :details, params: { id: event.id }

expect(response).to have_http_status(:ok)
end

it 'can see event details with a reservation' do
FactoryBot.create(:reservation, event: event, user: active_fan,
fan_names: %w[Foo|Bar])

get :details, params: { id: event.id }

expect(response).to have_http_status(:ok)
end

it 'cannot see reservations for an event' do
get :reservations, params: { id: event.id }

expect(response).to redirect_to(root_url)
end

it 'cannot export reservations csv for an event' do
get :csv_reservations, params: { id: event.id }, format: :csv

expect(response).to redirect_to(root_url)
end
end

context 'when admin is logged in' do
let(:admin) { FactoryBot.create(:user, role: :admin, status: :active) }

before do
sign_in admin
end

it 'can see reservations for an event' do
get :reservations, params: { id: event.id }

expect(response).to have_http_status(:ok)
end

it 'can export reservations csv for an event' do
get :csv_reservations, params: { id: event.id }, format: :csv

expect(response).to have_http_status(:ok)
end
end
end
13 changes: 13 additions & 0 deletions spec/controllers/sitemap_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe SitemapController, type: :controller do
it 'return the expected sitemap without authentication' do
FactoryBot.create(:event)

get :index, format: :xml

expect(response).to have_http_status(:ok)
end
end
118 changes: 0 additions & 118 deletions spec/requests/api/v1/events_index_spec.rb

This file was deleted.

0 comments on commit 1e5f305

Please sign in to comment.