Initial commit
This commit is contained in:
101
spec/controllers/account_auths_controller_spec.rb
Normal file
101
spec/controllers/account_auths_controller_spec.rb
Normal file
@@ -0,0 +1,101 @@
|
||||
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
|
||||
Reference in New Issue
Block a user