Break up the one-query-of-doom

The single query was producing a tremendously large ActiveRecord allocation.

While this isn't nearly as cool as one query, it's still a significant
reduction in SQL trips, and now has the bonus of only loading what is
actually going to be displayed.
This commit is contained in:
James Mason 2017-12-21 19:06:36 -08:00
parent 754d201b01
commit fa55224163
26 changed files with 181 additions and 165 deletions

View file

@ -13,7 +13,7 @@ feature Splashpage do
visit admin_conference_splashpage_path(conference.short_title)
click_link 'Create Splashpage'
click_button 'Save Splashpage'
click_button 'Save Changes'
expect(flash).to eq('Splashpage successfully created.')
expect(current_path).to eq(admin_conference_splashpage_path(conference.short_title))
@ -28,7 +28,7 @@ feature Splashpage do
click_link 'Edit'
check('Make splash page public')
click_button 'Save Splashpage'
click_button 'Save Changes'
expect(flash).to eq('Splashpage successfully updated.')
expect(current_path).to eq(admin_conference_splashpage_path(conference.short_title))

View file

@ -233,18 +233,18 @@ feature 'Version' do
scenario 'display changes in splashpages', feature: true, versioning: true, js: true do
visit admin_conference_splashpage_path(conference.short_title)
click_link 'Create Splashpage'
click_button 'Save Splashpage'
click_button 'Save Changes'
click_link 'Edit'
uncheck('Display program')
uncheck('Display call for papers and call for tracks information on splashpage, while open')
uncheck('Display venue')
uncheck('Display the program')
uncheck('Display call for papers and call for tracks, while open')
uncheck('Display the venue')
uncheck('Display tickets')
uncheck('Display the lodgings')
uncheck('Display sponsors')
uncheck('Display social media')
uncheck('Display social media links')
check('Make splash page public?')
click_button 'Save Splashpage'
click_button 'Save Changes'
splashpage_id = conference.splashpage.id
click_link 'Delete'

View file

@ -6,7 +6,7 @@ describe ConferenceHelper, type: :helper do
describe '#one_call_open' do
it 'is falsey if neither call is open' do
expect(one_call_open(conference)).to be_falsey
expect(one_call_open(*conference.program.cfps)).to be_falsey
end
it 'is truthy if call_for_papers is open' do
@ -17,8 +17,7 @@ describe ConferenceHelper, type: :helper do
start_date: conference.start_date,
end_date: conference.end_date
)
expect(one_call_open(conference)).to be_truthy
expect(one_call_open(*conference.program.cfps)).to be_truthy
end
it 'is truthy if call_for_tracks is open' do
@ -30,7 +29,7 @@ describe ConferenceHelper, type: :helper do
end_date: conference.end_date
)
expect(one_call_open(conference)).to be_truthy
expect(one_call_open(*conference.program.cfps)).to be_truthy
end
it 'is falsey if both calls are open' do
@ -49,7 +48,7 @@ describe ConferenceHelper, type: :helper do
end_date: conference.end_date
)
expect(one_call_open(conference)).to be_falsey
expect(one_call_open(*conference.program.cfps)).to be_falsey
end
end