docbrown/spec/models/organization_membership_spec.rb
Ben Halpern 03c28a5671
[deploy] Create private group chat channel for orgs (#7270)
* WIP chat channel for orgs

* Finalize

* Enable upsert functionality for role switch

* Private group chat

* Rearrange permissions code

* fix typo
2020-04-16 17:02:06 -04:00

34 lines
1.6 KiB
Ruby

require "rails_helper"
RSpec.describe OrganizationMembership, type: :model do
describe "validations" do
subject { build(:organization_membership) }
let(:organization) { create(:organization) }
it { is_expected.to validate_presence_of(:user_id) }
it { is_expected.to validate_presence_of(:organization_id) }
it { is_expected.to validate_presence_of(:type_of_user) }
it { is_expected.to validate_uniqueness_of(:user_id).scoped_to(:organization_id) }
it { is_expected.to validate_inclusion_of(:type_of_user).in_array(OrganizationMembership::USER_TYPES) }
it "creates member chat channel after save" do
create(:organization_membership, type_of_user: "member", organization: organization)
expect(ChatChannelMembership.last.role).to eq("member")
expect(ChatChannelMembership.last.chat_channel.channel_name).to eq("@#{organization.slug} private group chat")
end
it "adds user to existing org chat channel after save" do
chat_channel = create(:chat_channel, channel_name: "@#{organization.slug} private group chat")
organization_membership = create(:organization_membership, type_of_user: "member", organization: organization)
expect(chat_channel.active_users).to include(organization_membership.user)
end
it "updates chat channel membership if org membership is updated" do
organization_membership = create(:organization_membership, type_of_user: "member", organization: organization)
expect(ChatChannelMembership.last.role).to eq("member")
organization_membership.update(type_of_user: "admin")
expect(ChatChannelMembership.last.role).to eq("mod")
end
end
end