Files
old-holivud2/spec/controllers/account_auths_controller_spec.rb

102 lines
2.9 KiB
Ruby
Raw Normal View History

2020-05-31 22:38:19 +02:00
require "rails_helper"
RSpec.describe AccountAuthsController, type: :controller do
render_views
let(:current_user) { create(:user) }
let(:other_user) { create(:user, :accountless) }
before do
sign_in current_user
end
describe "#index" do
it "responds successfully" do
get :index
expect(response).to be_ok
end
it "includes all users in the table" do
account = current_user.primary_account
associate = create(:user, :associate, primary_account: account)
project_manager = create(:user, :manager, primary_account: account)
account_manager = create(:user, :account_manager, primary_account: account)
get :index
expect(response.body).to have_content(associate.email)
expect(response.body).to have_content(project_manager.email)
expect(response.body).to have_content(account_manager.email)
end
end
describe "#create" do
let(:new_account) { create(:account) }
it "responds successfully" do
post :create, params: { account_auth: account_auth_params(other_user, new_account) }
expect(response).to redirect_to account_auths_path({ account_id: new_account.id })
end
it "creates a new record" do
expect {
post :create, params: { account_auth: account_auth_params(other_user, new_account) }
}.to change(AccountAuth, :count).by(1)
end
end
describe "#update" do
let(:account_auth) { current_user.account_auths.first }
it "responds with redirect" do
patch :update, params: { id: account_auth, account_auth: { role: "project_manager" } }
expect(response).to be_redirect
expect(response).to redirect_to(account_auths_path)
expect(flash.notice).to be_present
end
it "updates the record" do
patch :update, params: { id: account_auth, account_auth: { role: "project_manager" } }
expect(account_auth.reload.role).to eq "project_manager"
end
context "when record could not be updated" do
before do
allow_any_instance_of(AccountAuth).to receive(:update).and_return(false)
end
it "responds with redirect" do
patch :update, params: { id: account_auth, account_auth: { role: "project_manager" } }
expect(response).to be_redirect
expect(response).to redirect_to(account_auths_path)
expect(flash.alert).to be_present
end
end
end
describe "#destroy" do
let(:account_auth) { create(:account_auth, account: current_user.primary_account, user: other_user, role: :account_manager) }
it "responds with redirect" do
delete :destroy, params: { id: account_auth.id }
expect(response).to be_redirect
expect(response).to redirect_to(account_auths_path)
expect(flash.alert).to be_present
end
end
private
def account_auth_params(user, account)
{ user_email: user.email, account_id: account.id }
end
end