Sha256: fe2eda40ef481fd7b9c376c6c37a6646a97bf89489650cd78ae5e12d3ed6d607

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

describe PUNK::ListGroupsAction do
  let(:user) { create(:user) }
  let(:tenant) { create(:tenant) }

  context "with no user provided" do
    it "returns a validation error" do
      view = described_class.run(tenant: tenant).result.render(:json)
      expect(view).to match("user is not present")
    end
  end

  context "with no tenant provided" do
    it "returns a validation error" do
      view = described_class.run(user: user).result.render(:json)
      expect(view).to match("tenant is not present")
    end
  end

  context "with valid arguments" do
    let(:groups) { create_list(:group, 3, tenant: tenant) }

    before do
      user.add_tenant(tenant)
      groups[0].add_user(user)
      groups[1].add_user(user)
    end

    it "returns groups for the tenant that the user is a member of" do
      expect(tenant.groups.count).to eq(3)
      view = JSON.parse(described_class.run(user: user, tenant: tenant).result.render(:json))
      expect(view.map { |h| h["id"] }.sort).to eq([groups[0].id, groups[1].id].sort)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
punk-0.4.1 spec/actions/groups/punk/list_groups_action_spec.rb