Files
osem/spec/controllers/subscriptions_controller_spec.rb
Ana María Martínez Gómez d1180e2767 Use keyword arguments in tests
Raisl 5.1 removes support for non-keyword arguments in `#process`,
`#get`, `#post`, `#patch`, `#put`, `#delete`, and `#head` for the
`ActionDispatch::IntegrationTest` and `ActionController::TestCase`
classes. This means we have to add `params` everywhere in the controller
tests.
2019-05-14 14:10:36 +02:00

56 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
describe SubscriptionsController do
let(:conference) { create(:conference) }
let(:user) { create(:user) }
describe 'POST #create' do
context 'when user is a guest' do
it 'redirects to sign in page' do
post :create, params: { conference_id: conference.short_title }
expect(response).to redirect_to new_user_session_path
end
end
context 'when user is signed in' do
before(:each) do
sign_in(user)
end
it 'redirects to home page' do
post :create, params: { conference_id: conference.short_title }
expect(response).to redirect_to root_path
end
it 'shows success message in flash notice' do
post :create, params: { conference_id: conference.short_title }
expect(flash[:notice]).to match("You have subscribed to receive email notifications for #{conference.title}")
end
it 'subscribes user to conference' do
post :create, params: { conference_id: conference.short_title }
expect(user.subscriptions.pluck(:conference_id)).to include(conference.id)
end
end
end
describe 'DELETE #destroy' do
before(:each) do
sign_in(user)
post :create, params: { conference_id: conference.short_title }
end
it 'redirects to home page' do
delete :destroy, params: { conference_id: conference.short_title }
expect(response).to redirect_to root_path
end
it 'shows success message in flash notice' do
delete :destroy, params: { conference_id: conference.short_title }
expect(flash[:notice]).to match("You have unsubscribed and you will not be receiving email notifications for #{conference.title}.")
end
end
end