Skip to content

Commit

Permalink
Add filter[status] and query search params to list opts
Browse files Browse the repository at this point in the history
  • Loading branch information
sebasslash committed Oct 14, 2022
1 parent c05ad35 commit 0ef33a9
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
7 changes: 7 additions & 0 deletions organization_membership.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,13 @@ type OrganizationMembershipListOptions struct {

// Optional: A list of organization member emails to filter by.
Emails []string `url:"filter[email],omitempty"`

// Optional: If specified, restricts results to those matching status value.
Status OrganizationMembershipStatus `url:"filter[status],omitempty"`

// Optional: A query string to search organization memberships by user name
// and email.
Query string `url:"q,omitempty"`
}

// OrganizationMembershipCreateOptions represents the options for creating an organization membership.
Expand Down
40 changes: 40 additions & 0 deletions organization_membership_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,46 @@ func TestOrganizationMembershipsList(t *testing.T) {
})
})

t.Run("with status filter option", func(t *testing.T) {
_, memTest1Cleanup := createOrganizationMembership(t, client, orgTest)
t.Cleanup(memTest1Cleanup)
_, memTest2Cleanup := createOrganizationMembership(t, client, orgTest)
t.Cleanup(memTest2Cleanup)

ml, err := client.OrganizationMemberships.List(ctx, orgTest.Name, &OrganizationMembershipListOptions{
Status: OrganizationMembershipInvited,
})
require.NoError(t, err)

require.Len(t, ml.Items, 2)
for _, member := range ml.Items {
assert.Equal(t, member.Status, OrganizationMembershipInvited)
}
})

t.Run("with search query string", func(t *testing.T) {
memTest1, memTest1Cleanup := createOrganizationMembership(t, client, orgTest)
t.Cleanup(memTest1Cleanup)
_, memTest2Cleanup := createOrganizationMembership(t, client, orgTest)
t.Cleanup(memTest2Cleanup)
_, memTest3Cleanup := createOrganizationMembership(t, client, orgTest)
t.Cleanup(memTest3Cleanup)

t.Run("using an email", func(t *testing.T) {
ml, err := client.OrganizationMemberships.List(ctx, orgTest.Name, &OrganizationMembershipListOptions{
Query: memTest1.Email,
})
require.NoError(t, err)

require.Len(t, ml.Items, 1)
assert.Equal(t, ml.Items[0].Email, memTest1.Email)
})

t.Run("using a user name", func(t *testing.T) {
t.Skip("Skipping, missing Account API support in order to set usernames")
})
})

t.Run("without a valid organization", func(t *testing.T) {
ml, err := client.OrganizationMemberships.List(ctx, badIdentifier, nil)
assert.Nil(t, ml)
Expand Down

0 comments on commit 0ef33a9

Please sign in to comment.