Files
osem/spec/controllers/admin/events_controller_spec.rb
Ana María Martínez Gómez 905f8954d0 Fix broken test in Admin::EventsController
We are using `paper_trail` gem, which saves data in database table
versions. It has a native way to search in the versions records,
using `where_object()` and `where_object_changes()`. They are broken,
under certain conditions. We changed them to a manual `where()`.

To test this case we need: an Event with ID 1, an Event with ID 2, and
a commercial with ID 1, for event with ID 2 - obviously the numbers
could be different as long as there is this matching of IDs. Before
this was made wit ha expect, which would make the test fail if this is
not the case. But this is actually the test case, not what we want to
test, so I moved to the `let`.

This was also the case why one of the test was broken after we change
how the database is cleaned in:

https://github.com/openSUSE/osem/pull/1541

I also remove the feature test, as this should be tested in a
controller test.
2017-06-26 15:35:05 +02:00

29 lines
1.3 KiB
Ruby

require 'spec_helper'
describe Admin::EventsController do
let(:conference) { create(:conference) }
let(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
let(:organizer) { create(:user, role_ids: organizer_role.id) }
# The where_object() and where_object_changes() methods of paper_trail gem are broken when having:
# an Event with ID 1, an Event with ID 2, and a commercial with ID 1, for event with ID 2
# (the numbers could be different as long as there is this matching of IDs).
# We implemented or own where method to solve this and those ids are for testing this case.
let!(:event_without_commercial) { create(:event, id: 1, program: conference.program) }
let!(:event_with_commercial) { create(:event, id: 2, program: conference.program) }
let!(:event_commercial) { create(:event_commercial, id: 1, commercialable: event_with_commercial, url: 'https://www.youtube.com/watch?v=M9bq_alk-sw') }
with_versioning do
describe 'GET #show' do
before :each do
sign_in(organizer)
get :show, id: event_without_commercial.id, conference_id: conference.short_title
end
it 'assigns versions' do
versions = event_without_commercial.versions
expect(assigns(:versions)).to eq versions
end
end
end
end