102 lines
2.9 KiB
Ruby
102 lines
2.9 KiB
Ruby
|
|
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
|