Sha256: 1cecb8a9e84c8fcd9ed35692f01bbb92caf442a78ea71b3a9e4fe2e721e1dbcc

Contents?: true

Size: 1.89 KB

Versions: 7

Compression:

Stored size: 1.89 KB

Contents

# frozen_string_literal: true

describe PUNK::TenantUserMetadata do
  it "is valid with valid attributes" do
    expect { create(:tenant_user_metadata) }.not_to raise_error
  end

  it "is invalid without a tenant" do
    tenant_user_metadata = build(:tenant_user_metadata, tenant: nil)
    expect(tenant_user_metadata.valid?).to be(false)
    expect(tenant_user_metadata.errors[:tenant].first).to eq('is not present')
  end

  it "is invalid without a user" do
    tenant_user_metadata = build(:tenant_user_metadata, user: nil)
    expect(tenant_user_metadata.valid?).to be(false)
    expect(tenant_user_metadata.errors[:user].first).to eq('is not present')
  end

  it "displays as the two IDs concatenated" do
    tenant_user_metadata = create(:tenant_user_metadata)
    expect(tenant_user_metadata.to_s).to include(tenant_user_metadata.tenant.id)
    expect(tenant_user_metadata.to_s).to include(tenant_user_metadata.user.id)
  end

  context "when a user and a tenant exist" do
    let(:user) { create(:user) }
    let(:tenant) { create(:tenant) }

    context "when a user is added to a tenant" do
      let(:tenant_user_metadata) do
        described_class[tenant: tenant, user: user]
      end

      before do
        tenant.add_user(user)
      end

      it "is created automatically" do
        expect(tenant_user_metadata).not_to be_nil
        expect(tenant.users).to include(user)
      end

      it "destroying it will remove the user from the tenant" do
        expect(tenant.users).to include(user)
        tenant_user_metadata.destroy
        tenant.reload
        expect(tenant.users).not_to include(user)
      end
    end

    context "when it is created" do
      it "adds a user to a tenant" do
        expect(tenant.users).not_to include(user)
        create(:tenant_user_metadata, tenant: tenant, user: user)
        tenant.reload
        expect(tenant.users).to include(user)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
punk-0.3.6 spec/models/punk/tenant_user_metadata_spec.rb
punk-0.3.5 spec/models/punk/tenant_user_metadata_spec.rb
punk-0.3.4 spec/models/punk/tenant_user_metadata_spec.rb
punk-0.3.3 spec/models/punk/tenant_user_metadata_spec.rb
punk-0.3.2 spec/models/punk/tenant_user_metadata_spec.rb
punk-0.3.1 spec/models/punk/tenant_user_metadata_spec.rb
punk-0.2.0 spec/models/punk/tenant_user_metadata_spec.rb