From e5aa6ab86846135231501424826ee433cbcbe011 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Miedes=20Garc=C3=A9s?= Date: Wed, 15 Mar 2017 23:35:29 +0100 Subject: [PATCH 1/2] Fix bug in User#registered_to_event? Fix exception being thrown in `User#registered_to_event?` when the user is not registered in the corresponding event conference. --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 29640ab3..05edcce6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -87,7 +87,7 @@ class User < ActiveRecord::Base # ====Returns # * +true+ or +false+ def registered_to_event? event - event.registrations.pluck(:id).include? self.registrations.find_by(conference_id: event.program.conference.id).id + event.registrations.include? registrations.find_by(conference: event.program.conference) end def subscribed? conference From 9d4c02cdb0d12987ecac13cc5c160c0aaf201706 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Miedes=20Garc=C3=A9s?= Date: Wed, 15 Mar 2017 23:40:19 +0100 Subject: [PATCH 2/2] Improve test coverage for User model * Wrote specs for `User#attended_event?` * Wrote specs for `User#registered_to_event? --- spec/models/user_spec.rb | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index bf9e4362..def87319 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -14,6 +14,8 @@ describe User do let(:event1) { create(:event, program: conference.program) } let(:another_conference) { create(:conference) } let(:event2) { create(:event, program: another_conference.program) } + let(:registration) { create(:registration, user: user, conference: conference) } + let(:events_registration) { create(:events_registration, event: event1, registration: registration) } describe 'validation' do it 'has a valid factory' do @@ -87,6 +89,34 @@ describe User do end describe 'methods' do + describe '#attended_event?' do + context 'user has attended to the event' do + before do + events_registration.update_attributes(attended: true) + end + + it 'returns true' do + expect(user.attended_event?(event1)).to be true + end + end + + context 'user did not register for the event' do + it 'returns false' do + expect(user.attended_event?(event1)).to be false + end + end + + context 'user registered for the event, but did not attend' do + before do + events_registration + end + + it 'returns false' do + expect(user.attended_event?(event1)).to be false + end + end + end + describe '#name' do it 'returns the username as name if there is not name' do user = create(:user, name: nil) @@ -94,6 +124,24 @@ describe User do end end + describe '#registered_to_event?' do + context 'user has registered to event' do + before do + events_registration + end + + it 'returns true' do + expect(user.registered_to_event?(event1)).to be true + end + end + + context 'user has not registered to event' do + it 'returns false' do + expect(user.registered_to_event?(event1)).to be false + end + end + end + describe '#subscribed?' do context 'user has subscribed to conference' do before { create(:subscription, user: user, conference: conference) }