From 153b82592369367f1e7cc7a8c7520f669ae23909 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2020 11:47:10 +0000 Subject: [PATCH 1/9] Update nokogiri to version 1.10.8 --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2e1da283..604ba14f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -310,7 +310,7 @@ GEM connection_pool (~> 2.2) netrc (0.11.0) nio4r (2.5.2) - nokogiri (1.10.5) + nokogiri (1.10.8) mini_portile2 (~> 2.4.0) notiffany (0.1.1) nenv (~> 0.1) From 8598652433e31660d31c4eb4b2c03a4bc5b8790c Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Wed, 19 Feb 2020 13:11:48 +0000 Subject: [PATCH 2/9] Update sqlite3 to version 1.4.2 --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 604ba14f..c63ff50f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -552,7 +552,7 @@ GEM actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) - sqlite3 (1.4.1) + sqlite3 (1.4.2) stripe (4.21.3) faraday (~> 0.13) net-http-persistent (~> 3.0) From 5c57ccdf5a46caafa9ccfbcdd7a016b36aa36a8d Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2020 11:18:54 +0000 Subject: [PATCH 3/9] Update puma to version 3.12.4 --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 604ba14f..95759d7e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -378,7 +378,7 @@ GEM method_source (~> 0.8.1) slop (~> 3.4) public_suffix (3.1.1) - puma (3.12.2) + puma (3.12.4) rack (2.0.8) rack-openid (1.3.1) rack (>= 1.1.0) From 0e3e832770f0d9e932ffe1d62f466c5620fc99ed Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Thu, 19 Mar 2020 15:49:52 +0000 Subject: [PATCH 4/9] Update json to version 2.3.0 --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 604ba14f..6f5e6044 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -254,7 +254,7 @@ GEM thor (>= 0.14, < 2.0) jquery-ui-rails (4.2.1) railties (>= 3.2.16) - json (2.2.0) + json (2.3.0) json-schema (2.8.1) addressable (>= 2.4) jsonapi-renderer (0.2.2) From a7006a4edd2fd467243e4121224221fa3e66b83d Mon Sep 17 00:00:00 2001 From: Andrew Kvalheim Date: Fri, 20 Mar 2020 06:24:47 -0700 Subject: [PATCH 5/9] Decouple tests from unspecified data ordering These tests have been passing with SQLite, but don't reflect guaranteed behavior and with PostgreSQL failed intermittently. --- .../admin/roles_controller_spec.rb | 4 +- .../admin/versions_controller_spec.rb | 40 ++++++++++--------- .../api/v1/conferences_controller_spec.rb | 3 +- .../api/v1/events_controller_spec.rb | 4 +- spec/features/roles_spec.rb | 2 +- 5 files changed, 26 insertions(+), 27 deletions(-) diff --git a/spec/controllers/admin/roles_controller_spec.rb b/spec/controllers/admin/roles_controller_spec.rb index 6a0d7754..cd5cdc1c 100644 --- a/spec/controllers/admin/roles_controller_spec.rb +++ b/spec/controllers/admin/roles_controller_spec.rb @@ -91,7 +91,7 @@ describe Admin::RolesController do user: { email: 'user1@osem.io' }, id: 'organizer' } - expect(user1.roles).to eq [organizer_role, cfp_role] + expect(user1.roles).to contain_exactly(cfp_role, organizer_role) end end @@ -109,7 +109,7 @@ describe Admin::RolesController do user: { email: 'user1@osem.io' }, id: 'organizer' } - expect(user1.roles).to eq [organizer_role, cfp_role] + expect(user1.roles).to contain_exactly(cfp_role, organizer_role) post :toggle_user, params: { conference_id: conference.short_title, user: { email: 'user1@osem.io', state: 'false' }, diff --git a/spec/controllers/admin/versions_controller_spec.rb b/spec/controllers/admin/versions_controller_spec.rb index 8c453efd..69e3d362 100644 --- a/spec/controllers/admin/versions_controller_spec.rb +++ b/spec/controllers/admin/versions_controller_spec.rb @@ -18,7 +18,7 @@ describe Admin::VersionsController do it 'reverts all changes for update actions' do conference.update_attributes(short_title: 'testtitle', description: 'Some random text') - get :revert_object, params: { id: PaperTrail::Version.last.id } + get :revert_object, params: { id: conference.versions.last.id } conference.reload expect(conference.short_title).to eq 'exampletitle' expect(conference.description).to eq 'Example Description' @@ -32,18 +32,19 @@ describe Admin::VersionsController do end it 'reverting deletion of object creates it again' do - conference.program.event_types.first.destroy + event_type = conference.program.event_types.first + event_type.destroy event_types_count = conference.program.event_types.count - get :revert_object, params: { id: PaperTrail::Version.last.id } + get :revert_object, params: { id: event_type.versions.last.id } conference.reload - expect(PaperTrail::Version.last.event).to eq 'create' + expect(event_type.versions.last.event).to eq 'create' expect(conference.program.event_types.count).to eq(event_types_count + 1) end it 'reverting creation of object deletes it ' do - create(:lodging, conference: conference) - get :revert_object, params: { id: PaperTrail::Version.last.id } - expect(PaperTrail::Version.last.event).to eq 'destroy' + lodging = create(:lodging, conference: conference) + get :revert_object, params: { id: lodging.versions.last.id } + expect(lodging.versions.last.event).to eq 'destroy' expect(Lodging.count).to eq 0 end @@ -62,7 +63,7 @@ describe Admin::VersionsController do it 'reverts specified change for update actions' do conference.update_attributes(short_title: 'testtitle', description: 'Some random text') - get :revert_attribute, params: { id: PaperTrail::Version.last.id, attribute: 'short_title' } + get :revert_attribute, params: { id: conference.versions.last.id, attribute: 'short_title' } conference.reload expect(conference.short_title).to eq 'exampletitle' expect(conference.description).to eq 'Some random text' @@ -71,22 +72,23 @@ describe Admin::VersionsController do it 'shows correct flash on trying to revert to the current state' do conference.update_attributes(short_title: 'testtitle', description: 'Some random text') conference.update_attributes(short_title: 'exampletitle') - get :revert_attribute, params: { id: PaperTrail::Version.all[-2].id, attribute: 'short_title' } + get :revert_attribute, params: { id: conference.versions[-2].id, attribute: 'short_title' } expect(flash[:error]).to match('The item is already in the state that you are trying to revert it back to') expect(conference.short_title).to eq 'exampletitle' end it 'fails on trying to revert deleted object' do - conference.program.event_types.first.update_attributes(title: 'New Event Title') - conference.program.event_types.first.destroy - get :revert_attribute, params: { id: PaperTrail::Version.all[-2].id, attribute: 'title' } + event_type = conference.program.event_types.first + event_type.update_attributes(title: 'New Event Title') + event_type.destroy + get :revert_attribute, params: { id: event_type.versions[-2].id, attribute: 'title' } conference.reload expect(flash[:alert]).to eq 'You are not authorized to access this page.' end it 'fails on trying to revert creation event' do - create(:lodging, conference: conference) - get :revert_attribute, params: { id: PaperTrail::Version.last.id, attribute: 'name' } + lodging = create(:lodging, conference: conference) + get :revert_attribute, params: { id: lodging.versions.last.id, attribute: 'name' } expect(flash[:alert]).to eq 'You are not authorized to access this page.' end @@ -94,7 +96,7 @@ describe Admin::VersionsController do conference.update_attributes(short_title: 'testtitle', description: 'Some random text') before_conference_title = conference.title # Note: even though title is a valid attribute of conference, it was not updated in the change we are trying to revert - get :revert_attribute, params: { id: PaperTrail::Version.last.id, attribute: 'title' } + get :revert_attribute, params: { id: conference.versions.last.id, attribute: 'title' } conference.reload expect(conference.short_title).to eq 'testtitle' expect(conference.description).to eq 'Some random text' @@ -116,12 +118,12 @@ describe Admin::VersionsController do @user = create(:user) conference.update_attributes(short_title: 'testtitle', description: 'Some random text') - @version_organizer = PaperTrail::Version.last - create(:cfp, program: conference.program) - @version_cfp = PaperTrail::Version.last + @version_organizer = conference.versions.last + cfp = create(:cfp, program: conference.program) + @version_cfp = cfp.versions.last registration = create(:registration, conference: conference) registration.update_attributes(attended: true) - @version_info_desk = PaperTrail::Version.last + @version_info_desk = registration.versions.last end it 'when user has role cfp' do diff --git a/spec/controllers/api/v1/conferences_controller_spec.rb b/spec/controllers/api/v1/conferences_controller_spec.rb index b126d87d..bd6d1df5 100644 --- a/spec/controllers/api/v1/conferences_controller_spec.rb +++ b/spec/controllers/api/v1/conferences_controller_spec.rb @@ -21,8 +21,7 @@ describe Api::V1::ConferencesController do end it 'returns correct conferences' do - expect(@json[0]['short_title']).to eq('conf_one') - expect(@json[1]['short_title']).to eq('conf_two') + expect(@json.map { |c| c['short_title'] }).to contain_exactly('conf_one', 'conf_two') end end diff --git a/spec/controllers/api/v1/events_controller_spec.rb b/spec/controllers/api/v1/events_controller_spec.rb index 1f9b2809..c23561fb 100644 --- a/spec/controllers/api/v1/events_controller_spec.rb +++ b/spec/controllers/api/v1/events_controller_spec.rb @@ -15,9 +15,7 @@ describe Api::V1::EventsController do json = JSON.parse(response.body)['events'] expect(response).to be_success - expect(json.length).to eq(2) - expect(json[0]['title']).to eq('Example Event') - expect(json[1]['title']).to eq('Conference Event') + expect(json.map { |e| e['title'] }).to contain_exactly('Conference Event', 'Example Event') end end diff --git a/spec/features/roles_spec.rb b/spec/features/roles_spec.rb index 723b41c0..b08e0398 100644 --- a/spec/features/roles_spec.rb +++ b/spec/features/roles_spec.rb @@ -66,7 +66,7 @@ feature Role do scenario "removes role #{role_name}", feature: true, js: true do click_link('Users', href: admin_conference_role_path(conference.short_title, role_name)) - bootstrap_switch = first('td').find('.bootstrap-switch-container') + bootstrap_switch = find('tr', text: user_with_role.name).find('.bootstrap-switch-container') bootstrap_switch.click expect(page).to have_css('.alert', text: "Successfully removed role #{role_name} from user #{user_with_role.email}") From 10f0edac2092c612f8a030de2535bee050310603 Mon Sep 17 00:00:00 2001 From: Andrew Kvalheim Date: Sun, 29 Mar 2020 09:05:31 -0700 Subject: [PATCH 6/9] Decouple tests from unspecified data ordering These tests have been passing with SQLite, but don't reflect guaranteed behavior and with PostgreSQL failed intermittently. --- spec/controllers/api/v1/rooms_controller_spec.rb | 4 +--- spec/controllers/api/v1/speakers_controller_spec.rb | 4 +--- spec/controllers/api/v1/tracks_controller_spec.rb | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/spec/controllers/api/v1/rooms_controller_spec.rb b/spec/controllers/api/v1/rooms_controller_spec.rb index f8262800..1d1d9d9d 100644 --- a/spec/controllers/api/v1/rooms_controller_spec.rb +++ b/spec/controllers/api/v1/rooms_controller_spec.rb @@ -17,9 +17,7 @@ describe Api::V1::RoomsController do expect(response).to be_success - expect(json.length).to eq(2) - expect(json[0]['name']).to eq('Conference Room') - expect(json[1]['name']).to eq('Test Room') + expect(json.map { |r| r['name'] }).to contain_exactly('Conference Room', 'Test Room') end end diff --git a/spec/controllers/api/v1/speakers_controller_spec.rb b/spec/controllers/api/v1/speakers_controller_spec.rb index fdaa08a0..e71c0cd7 100644 --- a/spec/controllers/api/v1/speakers_controller_spec.rb +++ b/spec/controllers/api/v1/speakers_controller_spec.rb @@ -22,9 +22,7 @@ describe Api::V1::SpeakersController do get :index, params: { format: :json } json = JSON.parse(response.body)['speakers'] expect(response).to be_success - expect(json.length).to eq(2) - expect(json[0]['name']).to eq('Speaker') - expect(json[1]['name']).to eq('Conf_Speaker') + expect(json.map { |u| u['name'] }).to contain_exactly('Conf_Speaker', 'Speaker') end end diff --git a/spec/controllers/api/v1/tracks_controller_spec.rb b/spec/controllers/api/v1/tracks_controller_spec.rb index 65346b56..7e47e85b 100644 --- a/spec/controllers/api/v1/tracks_controller_spec.rb +++ b/spec/controllers/api/v1/tracks_controller_spec.rb @@ -16,9 +16,7 @@ describe Api::V1::TracksController do expect(response).to be_success - expect(json.length).to eq(2) - expect(json[0]['name']).to eq('Conference Track') - expect(json[1]['name']).to eq('Test Track') + expect(json.map { |t| t['name'] }).to contain_exactly('Conference Track', 'Test Track') end end From a179a38faec2a058fd4a4d3f8c4c71e8156db073 Mon Sep 17 00:00:00 2001 From: Andrew Kvalheim Date: Wed, 1 Apr 2020 08:53:01 -0700 Subject: [PATCH 7/9] Minor refactor --- spec/controllers/api/v1/conferences_controller_spec.rb | 2 +- spec/controllers/api/v1/events_controller_spec.rb | 2 +- spec/controllers/api/v1/rooms_controller_spec.rb | 2 +- spec/controllers/api/v1/speakers_controller_spec.rb | 2 +- spec/controllers/api/v1/tracks_controller_spec.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/controllers/api/v1/conferences_controller_spec.rb b/spec/controllers/api/v1/conferences_controller_spec.rb index bd6d1df5..fc82fdc3 100644 --- a/spec/controllers/api/v1/conferences_controller_spec.rb +++ b/spec/controllers/api/v1/conferences_controller_spec.rb @@ -21,7 +21,7 @@ describe Api::V1::ConferencesController do end it 'returns correct conferences' do - expect(@json.map { |c| c['short_title'] }).to contain_exactly('conf_one', 'conf_two') + expect(@json.pluck('short_title')).to contain_exactly('conf_one', 'conf_two') end end diff --git a/spec/controllers/api/v1/events_controller_spec.rb b/spec/controllers/api/v1/events_controller_spec.rb index c23561fb..845cb5b0 100644 --- a/spec/controllers/api/v1/events_controller_spec.rb +++ b/spec/controllers/api/v1/events_controller_spec.rb @@ -15,7 +15,7 @@ describe Api::V1::EventsController do json = JSON.parse(response.body)['events'] expect(response).to be_success - expect(json.map { |e| e['title'] }).to contain_exactly('Conference Event', 'Example Event') + expect(json.pluck('title')).to contain_exactly('Conference Event', 'Example Event') end end diff --git a/spec/controllers/api/v1/rooms_controller_spec.rb b/spec/controllers/api/v1/rooms_controller_spec.rb index 1d1d9d9d..00b927e9 100644 --- a/spec/controllers/api/v1/rooms_controller_spec.rb +++ b/spec/controllers/api/v1/rooms_controller_spec.rb @@ -17,7 +17,7 @@ describe Api::V1::RoomsController do expect(response).to be_success - expect(json.map { |r| r['name'] }).to contain_exactly('Conference Room', 'Test Room') + expect(json.pluck('name')).to contain_exactly('Conference Room', 'Test Room') end end diff --git a/spec/controllers/api/v1/speakers_controller_spec.rb b/spec/controllers/api/v1/speakers_controller_spec.rb index e71c0cd7..d29ddfb3 100644 --- a/spec/controllers/api/v1/speakers_controller_spec.rb +++ b/spec/controllers/api/v1/speakers_controller_spec.rb @@ -22,7 +22,7 @@ describe Api::V1::SpeakersController do get :index, params: { format: :json } json = JSON.parse(response.body)['speakers'] expect(response).to be_success - expect(json.map { |u| u['name'] }).to contain_exactly('Conf_Speaker', 'Speaker') + expect(json.pluck('name')).to contain_exactly('Conf_Speaker', 'Speaker') end end diff --git a/spec/controllers/api/v1/tracks_controller_spec.rb b/spec/controllers/api/v1/tracks_controller_spec.rb index 7e47e85b..f8b0b53a 100644 --- a/spec/controllers/api/v1/tracks_controller_spec.rb +++ b/spec/controllers/api/v1/tracks_controller_spec.rb @@ -16,7 +16,7 @@ describe Api::V1::TracksController do expect(response).to be_success - expect(json.map { |t| t['name'] }).to contain_exactly('Conference Track', 'Test Track') + expect(json.pluck('name')).to contain_exactly('Conference Track', 'Test Track') end end From aa99f909a637bfb273ecd2d9cc753a162cb918de Mon Sep 17 00:00:00 2001 From: Tymm Schmitke Date: Tue, 19 May 2020 22:24:37 -0400 Subject: [PATCH 8/9] Add uniqueness tests for Event scope on Vote model with User association --- app/models/vote.rb | 2 ++ spec/models/vote_spec.rb | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 spec/models/vote_spec.rb diff --git a/app/models/vote.rb b/app/models/vote.rb index 2ce0e671..64ab74de 100644 --- a/app/models/vote.rb +++ b/app/models/vote.rb @@ -4,6 +4,8 @@ class Vote < ApplicationRecord belongs_to :user belongs_to :event + validates :user_id, uniqueness: { scope: :event_id } + has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } delegate :name, to: :user diff --git a/spec/models/vote_spec.rb b/spec/models/vote_spec.rb new file mode 100644 index 00000000..36d4d925 --- /dev/null +++ b/spec/models/vote_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Vote do + let!(:vote) { create(:vote) } + + describe 'validation' do + it 'has a valid factory' do + expect(build(:vote)).to be_valid + end + + it { is_expected.to validate_uniqueness_of(:user_id).scoped_to(:event_id) } + + # This is testing the relationship instead of using the shoulda-matchers + context 'vote with user already exists' do + it 'fails when adding vote twice for user and event' do + expect { create(:vote, user: vote.user, event: vote.event) } + .to raise_error(ActiveRecord::RecordInvalid, 'Validation failed: User has already been taken') + end + end + end +end \ No newline at end of file From 40036899b36b9b7e335bd45b1a590c894d73cbc4 Mon Sep 17 00:00:00 2001 From: Tymm Schmitke Date: Tue, 19 May 2020 23:18:05 -0400 Subject: [PATCH 9/9] Add empty line at end of file --- spec/models/vote_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/vote_spec.rb b/spec/models/vote_spec.rb index 36d4d925..39afb352 100644 --- a/spec/models/vote_spec.rb +++ b/spec/models/vote_spec.rb @@ -20,4 +20,4 @@ describe Vote do end end end -end \ No newline at end of file +end