Sha256: c1dc298a51abaa207704bcf0f48aa14e907324ae32e01ac6327c7986704ffae3

Contents?: true

Size: 1.05 KB

Versions: 7

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

7 entries across 7 versions & 1 rubygems

Version Path
punk-0.3.6 spec/actions/groups/punk/list_groups_action_spec.rb
punk-0.3.5 spec/actions/groups/punk/list_groups_action_spec.rb
punk-0.3.4 spec/actions/groups/punk/list_groups_action_spec.rb
punk-0.3.3 spec/actions/groups/punk/list_groups_action_spec.rb
punk-0.3.2 spec/actions/groups/punk/list_groups_action_spec.rb
punk-0.3.1 spec/actions/groups/punk/list_groups_action_spec.rb
punk-0.2.0 spec/actions/groups/punk/list_groups_action_spec.rb