Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions api/queries_repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -709,19 +709,22 @@ func (m *RepoMetadataResult) MembersToIDs(names []string) ([]string, error) {
}

// Look for ID in assignable actors if not found in assignable users
for _, a := range m.AssignableActors {
if strings.EqualFold(assigneeLogin, a.Login()) {
ids = append(ids, a.ID())
found = true
break
}
if strings.EqualFold(assigneeLogin, a.DisplayName()) {
ids = append(ids, a.ID())
found = true
break
if !found {
for _, a := range m.AssignableActors {
if strings.EqualFold(assigneeLogin, a.Login()) {
ids = append(ids, a.ID())
found = true
break
}
if strings.EqualFold(assigneeLogin, a.DisplayName()) {
ids = append(ids, a.ID())
found = true
break
}
}
}

// And if we still didn't find an ID, return an error
if !found {
return nil, fmt.Errorf("'%s' not found", assigneeLogin)
}
Expand Down
72 changes: 72 additions & 0 deletions api/queries_repo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,78 @@ t001: team(slug:"robots"){id,slug}
}
}

func TestMembersToIDs(t *testing.T) {
t.Parallel()

t.Run("finds ids in assignable users", func(t *testing.T) {
t.Parallel()

repoMetadataResult := RepoMetadataResult{
AssignableUsers: []AssignableUser{
NewAssignableUser("MONAID", "monalisa", ""),
NewAssignableUser("MONAID2", "monalisa2", ""),
},
AssignableActors: []AssignableActor{
NewAssignableBot("HUBOTID", "hubot"),
},
}
ids, err := repoMetadataResult.MembersToIDs([]string{"monalisa"})
require.NoError(t, err)
require.Equal(t, []string{"MONAID"}, ids)
})

t.Run("finds ids by assignable actor logins", func(t *testing.T) {
t.Parallel()

repoMetadataResult := RepoMetadataResult{
AssignableActors: []AssignableActor{
NewAssignableBot("HUBOTID", "hubot"),
NewAssignableUser("MONAID", "monalisa", ""),
},
}
ids, err := repoMetadataResult.MembersToIDs([]string{"monalisa"})
require.NoError(t, err)
require.Equal(t, []string{"MONAID"}, ids)
})

t.Run("finds ids by assignable actor display names", func(t *testing.T) {
t.Parallel()

repoMetadataResult := RepoMetadataResult{
AssignableActors: []AssignableActor{
NewAssignableUser("MONAID", "monalisa", "mona"),
},
}
ids, err := repoMetadataResult.MembersToIDs([]string{"monalisa (mona)"})
require.NoError(t, err)
require.Equal(t, []string{"MONAID"}, ids)
})

t.Run("when a name appears in both assignable users and actors, the id is only returned once", func(t *testing.T) {
t.Parallel()

repoMetadataResult := RepoMetadataResult{
AssignableUsers: []AssignableUser{
NewAssignableUser("MONAID", "monalisa", ""),
},
AssignableActors: []AssignableActor{
NewAssignableUser("MONAID", "monalisa", ""),
},
}
ids, err := repoMetadataResult.MembersToIDs([]string{"monalisa"})
require.NoError(t, err)
require.Equal(t, []string{"MONAID"}, ids)
})

t.Run("when id is not found, returns an error", func(t *testing.T) {
t.Parallel()

repoMetadataResult := RepoMetadataResult{}
_, err := repoMetadataResult.MembersToIDs([]string{"monalisa"})
require.Error(t, err)
})
}

func sliceEqual(a, b []string) bool {
if len(a) != len(b) {
return false
Expand Down
Loading