Sha256: b62f07ebd2825cc3482ac8f241da9eb49dadb51c9ef1e62e84e4269ca78faf42

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

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

  it "is assigned a uuid on save" do
    group = build(:group)
    expect(group.id).to be_nil
    group.save_changes
    expect(valid_uuid?(group.id)).to be(true)
  end

  it "can be saved with a custom uuid" do
    uuid = generate(:uuid)
    group = create(:group, id: uuid)
    expect(group.id).to eq(uuid)
  end

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

  it "is valid without an icon" do
    group = build(:group, icon: nil)
    expect(group.valid?).to be(true)
  end

  it "is invalid if the icon is not a URL" do
    group = build(:group, icon: Faker::Alphanumeric.alpha)
    expect(group.valid?).to be(false)
    expect(group.errors[:icon].first).to eq("is not a URL")
  end

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

  it "can have multiple members" do
    group = create(:group)
    expect(group.users.count).to eq(0)
    3.times { create(:user).add_group(group) }
    expect(group.users.count).to eq(3)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
punk-0.4.1 spec/models/punk/group_spec.rb