Skip to content

Commit 75dd1e7

Browse files
committed
Paginate event groups individually
1 parent 1e32636 commit 75dd1e7

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

app/controllers/better_together/events_controller.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,15 @@ class EventsController < FriendlyResourceController
99
end
1010

1111
def index
12+
@events = @events
13+
.includes(:categories, cover_image_attachment: :blob)
14+
1215
@draft_events = @events.draft
16+
.page(params[:draft_page]).per(params[:per])
1317
@upcoming_events = @events.upcoming
18+
.page(params[:upcoming_page]).per(params[:per])
1419
@past_events = @events.past
20+
.page(params[:past_page]).per(params[:per])
1521
end
1622

1723
protected

app/views/better_together/events/index.html.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,22 @@
1515
<div class="row">
1616
<%= render(@draft_events) || render('none') %>
1717
</div>
18+
<%= paginate @draft_events %>
1819
<% end %>
1920

2021
<% if @upcoming_events.any? || @past_events.any? %>
2122
<h2>Upcoming</h2>
2223
<div class="row">
2324
<%= render(@upcoming_events) || render('none') %>
2425
</div>
26+
<%= paginate @upcoming_events %>
2527

2628
<% if @past_events.any? %>
2729
<h2>Past</h2>
2830
<div class="row">
2931
<%= render(@past_events) %>
3032
</div>
33+
<%= paginate @past_events %>
3134
<% end %>
3235
<% else %>
3336
<div class="row">

spec/features/events/index_spec.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# frozen_string_literal: true
2+
3+
require 'rails_helper'
4+
5+
RSpec.describe 'events index', type: :feature do
6+
include BetterTogether::DeviseSessionHelpers
7+
8+
before do
9+
configure_host_platform
10+
login_as_platform_manager
11+
end
12+
13+
let!(:draft_event) { BetterTogether::Event.create!(name: 'Draft Event') }
14+
let!(:upcoming_event) { BetterTogether::Event.create!(name: 'Upcoming Event', starts_at: 1.day.from_now) }
15+
let!(:past_event) { BetterTogether::Event.create!(name: 'Past Event', starts_at: 2.days.ago) }
16+
17+
scenario 'displays events grouped by status' do
18+
visit events_path(locale: I18n.default_locale)
19+
20+
draft_section = find('h2', text: 'Draft').sibling('div')
21+
within(draft_section) do
22+
expect(page).to have_content(draft_event.name)
23+
end
24+
25+
upcoming_section = find('h2', text: 'Upcoming').sibling('div')
26+
within(upcoming_section) do
27+
expect(page).to have_content(upcoming_event.name)
28+
end
29+
30+
past_section = find('h2', text: 'Past').sibling('div')
31+
within(past_section) do
32+
expect(page).to have_content(past_event.name)
33+
end
34+
end
35+
end
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# frozen_string_literal: true
2+
3+
require 'rails_helper'
4+
5+
RSpec.describe 'Events', type: :request do
6+
include BetterTogether::Engine.routes.url_helpers
7+
include RequestSpecHelper
8+
9+
let(:locale) { I18n.default_locale }
10+
11+
describe 'GET /events' do
12+
let!(:event) { BetterTogether::Event.create!(name: 'Sample Event') }
13+
14+
it 'returns http success' do
15+
get events_path(locale: locale)
16+
expect(response).to have_http_status(:success)
17+
end
18+
end
19+
20+
describe 'POST /events' do
21+
let(:user) { create(:better_together_user, :confirmed, :platform_manager) }
22+
23+
before { login(user) }
24+
25+
it 'creates an event' do
26+
expect do
27+
post events_path(locale: locale), params: { event: { name: 'New Event' } }
28+
end.to change(BetterTogether::Event, :count).by(1)
29+
expect(response).to redirect_to(event_path(BetterTogether::Event.last, locale: locale))
30+
end
31+
end
32+
33+
describe 'PATCH /events/:id' do
34+
let(:user) { create(:better_together_user, :confirmed, :platform_manager) }
35+
let!(:event) { BetterTogether::Event.create!(name: 'Old Name', creator: user.person) }
36+
37+
before { login(user) }
38+
39+
it 'updates the event' do
40+
patch event_path(event, locale: locale), params: { event: { name: 'Updated Name' } }
41+
expect(response).to redirect_to(edit_event_path(event, locale: locale))
42+
expect(event.reload.name).to eq('Updated Name')
43+
end
44+
end
45+
46+
describe 'DELETE /events/:id' do
47+
let(:user) { create(:better_together_user, :confirmed, :platform_manager) }
48+
let!(:event) { BetterTogether::Event.create!(name: 'Delete Me', creator: user.person) }
49+
50+
before { login(user) }
51+
52+
it 'destroys the event' do
53+
expect do
54+
delete event_path(event, locale: locale)
55+
end.to change(BetterTogether::Event, :count).by(-1)
56+
expect(response).to redirect_to(events_path(locale: locale))
57+
end
58+
end
59+
end

0 commit comments

Comments
 (0)