Skip to content

Commit 590a40f

Browse files
fix: context when calling GitHub teams API (#713)
1 parent d9fb002 commit 590a40f

File tree

6 files changed

+43
-44
lines changed

6 files changed

+43
-44
lines changed

docs/changelog.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
CHANGELOG
22
=====================================
3+
| May 12, 2023: fix: Loading teams for team option of author filter/validator `#713 <https://github.com/mergeability/mergeable/pull/713>`_
34
| May 11, 2023: fix: Send correct payload for changing labels `#715 <https://github.com/mergeability/mergeable/pull/715>`_
45
| April 25, 2023: feat: Add author validator `#710 <https://github.com/mergeability/mergeable/pull/710>`_
56
| March 13, 2023: fix: Replace delete with remove in changeset validator `#705 <https://github.com/mergeability/mergeable/pull/705>`_

lib/filters/author.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { Filter } = require('./filter')
2-
2+
const Teams = require('../validators/options_processor/teams')
33
class Author extends Filter {
44
constructor () {
55
super('author')
@@ -24,6 +24,15 @@ class Author extends Filter {
2424

2525
async filter (context, settings) {
2626
const payload = this.getPayload(context)
27+
28+
if (settings.team) {
29+
const result = await Teams.processTeamOption(context, settings, payload)
30+
if (result.status !== 'pass') {
31+
return result
32+
}
33+
delete settings.team
34+
}
35+
2736
return this.processOptions(context, payload.user.login, settings)
2837
}
2938
}

lib/filters/options_processor/options/team.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

lib/validators/author.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { Validator } = require('./validator')
2-
2+
const Teams = require('./options_processor/teams')
33
class Author extends Validator {
44
constructor () {
55
super('author')
@@ -24,6 +24,15 @@ class Author extends Validator {
2424

2525
async validate (context, settings) {
2626
const payload = this.getPayload(context)
27+
28+
if (settings.team) {
29+
const result = await Teams.processTeamOption(context, settings, payload)
30+
if (result.status !== 'pass') {
31+
return result
32+
}
33+
delete settings.team
34+
}
35+
2736
return this.processOptions(settings, payload.user.login)
2837
}
2938
}

lib/validators/options_processor/options/team.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

lib/validators/options_processor/teams.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
const _ = require('lodash')
22
const GithubAPI = require('../../github/api')
3+
const constructOutput = require('./options/lib/constructOutput')
4+
const consolidateResult = require('./options/lib/consolidateResults')
35

46
class Teams {
57
static async extractTeamMembers (context, teams) {
@@ -29,6 +31,26 @@ class Teams {
2931
}
3032
return _.uniq(teamMembers)
3133
}
34+
35+
static async processTeamOption (context, settings, payload) {
36+
const teamName = settings.team
37+
const userName = payload.user.login
38+
39+
const teamMemberships = await Teams.extractTeamMemberships(context, [teamName], [userName])
40+
const isMember = teamMemberships.includes(userName)
41+
const successMessage = `'${userName}' is part of the '${teamName}' team'`
42+
const failureMessage = `'${userName}' is not part of the '${teamName}' team'`
43+
44+
const output = [
45+
constructOutput(
46+
context, teamMemberships, settings, {
47+
status: isMember ? 'pass' : 'fail',
48+
description: isMember ? successMessage : failureMessage
49+
}, null
50+
)
51+
]
52+
return consolidateResult(output, context)
53+
}
3254
}
3355

3456
const getTeamMembers = async (context, team) => {

0 commit comments

Comments
 (0)