Skip to content

Commit

Permalink
Add invite staff test
Browse files Browse the repository at this point in the history
  • Loading branch information
marlena-b committed Oct 11, 2023
1 parent 51706ee commit d9c79a1
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 11 deletions.
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ gem "bootstrap_form", "~> 5.3"
# Devise Authentication
gem "devise"

gem 'devise_invitable', '~> 2.0.0'
gem "devise_invitable", "~> 2.0.0"

# Use Sass to process CSS
gem "dartsass-rails"
Expand Down
4 changes: 2 additions & 2 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
devise_for :users, controllers: {
registrations: "registrations",
sessions: "users/sessions",
invitations: 'organizations/invitations'
}
invitations: "organizations/invitations"
}

resources :adoptable_pets, only: [:index, :show]
resource :adopter_profile, except: :destroy, as: "profile"
Expand Down
16 changes: 8 additions & 8 deletions db/migrate/20231009132343_devise_invitable_add_to_users.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ class DeviseInvitableAddToUsers < ActiveRecord::Migration[7.0]
def up
safety_assured do
change_table :users do |t|
t.string :invitation_token
t.datetime :invitation_created_at
t.datetime :invitation_sent_at
t.datetime :invitation_accepted_at
t.integer :invitation_limit
t.string :invitation_token
t.datetime :invitation_created_at
t.datetime :invitation_sent_at
t.datetime :invitation_accepted_at
t.integer :invitation_limit
t.references :invited_by, polymorphic: true
t.integer :invitations_count, default: 0
t.index :invitation_token, unique: true # for invitable
t.index :invited_by_id
t.integer :invitations_count, default: 0
t.index :invitation_token, unique: true # for invitable
t.index :invited_by_id
end
end
end
Expand Down
10 changes: 10 additions & 0 deletions test/factories.rb
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,12 @@
trait :unverified do
verified { false }
end

trait :admin do
after :create do |staff_account|
staff_account.add_role(:admin, staff_account.organization)
end
end
end

factory :user do
Expand All @@ -168,6 +174,10 @@
staff_account
end

trait :staff_admin do
association(:staff_account, :admin)
end

trait :unverified_staff do
staff_account { build(:staff_account, :unverified) }
end
Expand Down
45 changes: 45 additions & 0 deletions test/integration/organizations/invite_staff_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
require "test_helper"

class Organizations::InviteStaffTest < ActionDispatch::IntegrationTest
setup do
@user_invitation_params = {
user: {
first_name: "John",
last_name: "Doe",
email: "john@example.com",
staff_account_attributes: {roles: "admin"}
}
}
end

test "staff admin can invite other staffs to the organization" do
sign_in create(:user, :staff_admin)

post(
user_invitation_path,
params: @user_invitation_params
)

assert_response :redirect

invited_user = User.find_by(email: "john@example.com")

assert invited_user.invited_to_sign_up?
assert invited_user.staff_account.has_role?(:admin)
assert invited_user.staff_account.verified?

assert_equal ActionMailer::Base.deliveries.count, 1
end

test "staff admin can not invite existing user to the organization" do
sign_in create(:user, :staff_admin)
_existing_user = create(:user, email: "john@example.com")

post(
user_invitation_path,
params: @user_invitation_params
)

assert_response :unprocessable_entity
end
end

0 comments on commit d9c79a1

Please sign in to comment.