mirror of
https://github.com/actions/add-to-project.git
synced 2025-12-12 04:57:09 +00:00
Merge pull request #324 from actions/mattcosta7/patch-1
Mattcosta7/patch 1
This commit is contained in:
4
.licenses/npm/@actions/core.dep.yml
generated
4
.licenses/npm/@actions/core.dep.yml
generated
@@ -1,12 +1,12 @@
|
||||
---
|
||||
name: "@actions/core"
|
||||
name: '@actions/core'
|
||||
version: 1.10.0
|
||||
type: npm
|
||||
summary: Actions core lib
|
||||
homepage: https://github.com/actions/toolkit/tree/main/packages/core
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE.md
|
||||
- sources: LICENSE.md
|
||||
text: |-
|
||||
The MIT License (MIT)
|
||||
|
||||
|
||||
2
.licenses/npm/uuid.dep.yml
generated
2
.licenses/npm/uuid.dep.yml
generated
@@ -6,7 +6,7 @@ summary: RFC4122 (v1, v4, and v5) UUIDs
|
||||
homepage:
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE.md
|
||||
- sources: LICENSE.md
|
||||
text: |
|
||||
The MIT License (MIT)
|
||||
|
||||
|
||||
@@ -144,6 +144,7 @@ Using these events ensure that a given issue or pull request, in the workflow's
|
||||
_See [Encrypted secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) for more information_
|
||||
|
||||
## Setting a specific status or column name to the project item
|
||||
|
||||
If you want to add an issue to a custom default column in a project (i.e. other than 'Todo'), you can do this directly via the project UI. You don't need to add anything else to your YAML workflow file to get this to work.
|
||||
|
||||
Use the [Add To GitHub Projects](https://github.com/marketplace/actions/add-to-github-projects) action to assign newly opened issues to the project. And then in the project UI simply [specify which column to use as the default](https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning-about-projects/quickstart-for-projects#configure-built-in-automation)!
|
||||
|
||||
@@ -13,7 +13,7 @@ describe('addToProject', () => {
|
||||
beforeEach(() => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token'
|
||||
'github-token': 'gh_token',
|
||||
})
|
||||
|
||||
outputs = mockSetOutput()
|
||||
@@ -30,14 +30,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'bug'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
mockGraphQL(
|
||||
@@ -46,21 +46,21 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2ItemById/,
|
||||
return: {
|
||||
addProjectV2ItemById: {
|
||||
item: {
|
||||
id: 'project-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
await addToProject()
|
||||
@@ -74,14 +74,14 @@ describe('addToProject', () => {
|
||||
number: 2221,
|
||||
labels: [{name: 'bug'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/octokit/octokit.js/issues/2221'
|
||||
html_url: 'https://github.com/octokit/octokit.js/issues/2221',
|
||||
},
|
||||
repository: {
|
||||
name: 'octokit.js',
|
||||
owner: {
|
||||
login: 'octokit'
|
||||
}
|
||||
}
|
||||
login: 'octokit',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
mockGraphQL(
|
||||
@@ -90,21 +90,21 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2DraftIssue/,
|
||||
return: {
|
||||
addProjectV2DraftIssue: {
|
||||
projectItem: {
|
||||
id: 'project-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
await addToProject()
|
||||
@@ -116,7 +116,7 @@ describe('addToProject', () => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'bug, new'
|
||||
labeled: 'bug, new',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -124,14 +124,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'bug'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
mockGraphQL(
|
||||
@@ -140,21 +140,21 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2ItemById/,
|
||||
return: {
|
||||
addProjectV2ItemById: {
|
||||
item: {
|
||||
id: 'project-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
await addToProject()
|
||||
@@ -166,7 +166,7 @@ describe('addToProject', () => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'bug, new'
|
||||
labeled: 'bug, new',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -175,14 +175,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'bug'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/pull/136'
|
||||
html_url: 'https://github.com/actions/add-to-project/pull/136',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
mockGraphQL(
|
||||
@@ -191,21 +191,21 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2ItemById/,
|
||||
return: {
|
||||
addProjectV2ItemById: {
|
||||
item: {
|
||||
id: 'project-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
await addToProject()
|
||||
@@ -217,7 +217,7 @@ describe('addToProject', () => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'bug'
|
||||
labeled: 'bug',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -225,14 +225,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const infoSpy = jest.spyOn(core, 'info')
|
||||
@@ -247,7 +247,7 @@ describe('addToProject', () => {
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'bug, new',
|
||||
'label-operator': 'AND'
|
||||
'label-operator': 'AND',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -255,14 +255,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'bug'}, {name: 'new'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
mockGraphQL(
|
||||
@@ -271,21 +271,21 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2ItemById/,
|
||||
return: {
|
||||
addProjectV2ItemById: {
|
||||
item: {
|
||||
id: 'project-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
await addToProject()
|
||||
@@ -298,7 +298,7 @@ describe('addToProject', () => {
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'bug, new',
|
||||
'label-operator': 'AND'
|
||||
'label-operator': 'AND',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -306,14 +306,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'bug'}, {name: 'other'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const infoSpy = jest.spyOn(core, 'info')
|
||||
@@ -328,7 +328,7 @@ describe('addToProject', () => {
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'bug, new',
|
||||
'label-operator': 'NOT'
|
||||
'label-operator': 'NOT',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -336,14 +336,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'bug'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const infoSpy = jest.spyOn(core, 'info')
|
||||
@@ -358,7 +358,7 @@ describe('addToProject', () => {
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'bug, new',
|
||||
'label-operator': 'NOT'
|
||||
'label-operator': 'NOT',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -366,14 +366,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'other'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
mockGraphQL(
|
||||
@@ -382,21 +382,21 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-next-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-next-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2ItemById/,
|
||||
return: {
|
||||
addProjectV2ItemById: {
|
||||
item: {
|
||||
id: 'project-next-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-next-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
await addToProject()
|
||||
@@ -408,7 +408,7 @@ describe('addToProject', () => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'accessibility,backend,bug'
|
||||
labeled: 'accessibility,backend,bug',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -416,14 +416,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'accessibility'}, {name: 'backend'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const gqlMock = mockGraphQL(
|
||||
@@ -432,21 +432,21 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2ItemById/,
|
||||
return: {
|
||||
addProjectV2ItemById: {
|
||||
item: {
|
||||
id: 'project-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
const infoSpy = jest.spyOn(core, 'info')
|
||||
@@ -464,7 +464,7 @@ describe('addToProject', () => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'accessibility, backend, bug'
|
||||
labeled: 'accessibility, backend, bug',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -472,21 +472,21 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'data'}, {name: 'frontend'}, {name: 'improvement'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const infoSpy = jest.spyOn(core, 'info')
|
||||
const gqlMock = mockGraphQL()
|
||||
await addToProject()
|
||||
expect(infoSpy).toHaveBeenCalledWith(
|
||||
`Skipping issue 1 because it does not have one of the labels: accessibility, backend, bug`
|
||||
`Skipping issue 1 because it does not have one of the labels: accessibility, backend, bug`,
|
||||
)
|
||||
expect(gqlMock).not.toHaveBeenCalled()
|
||||
})
|
||||
@@ -495,7 +495,7 @@ describe('addToProject', () => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'accessibility , backend ,, . , bug'
|
||||
labeled: 'accessibility , backend ,, . , bug',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -504,14 +504,14 @@ describe('addToProject', () => {
|
||||
labels: [{name: 'accessibility'}, {name: 'backend'}, {name: 'bug'}],
|
||||
'label-operator': 'AND',
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const gqlMock = mockGraphQL(
|
||||
@@ -520,21 +520,21 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2ItemById/,
|
||||
return: {
|
||||
addProjectV2ItemById: {
|
||||
item: {
|
||||
id: 'project-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
const infoSpy = jest.spyOn(core, 'info')
|
||||
@@ -551,7 +551,7 @@ describe('addToProject', () => {
|
||||
test(`throws an error when url isn't a valid project url`, async () => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://github.com/orgs/github/repositories',
|
||||
'github-token': 'gh_token'
|
||||
'github-token': 'gh_token',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -559,20 +559,20 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const infoSpy = jest.spyOn(core, 'info')
|
||||
const gqlMock = mockGraphQL()
|
||||
await expect(addToProject()).rejects.toThrow(
|
||||
'https://github.com/orgs/github/repositories. Project URL should match the format https://github.com/<orgs-or-users>/<ownerName>/projects/<projectNumber>'
|
||||
'https://github.com/orgs/github/repositories. Project URL should match the format https://github.com/<orgs-or-users>/<ownerName>/projects/<projectNumber>',
|
||||
)
|
||||
expect(infoSpy).not.toHaveBeenCalled()
|
||||
expect(gqlMock).not.toHaveBeenCalled()
|
||||
@@ -581,7 +581,7 @@ describe('addToProject', () => {
|
||||
test(`throws an error when url isn't under the github.com domain`, async () => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://notgithub.com/orgs/github/projects/1',
|
||||
'github-token': 'gh_token'
|
||||
'github-token': 'gh_token',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -589,20 +589,20 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const infoSpy = jest.spyOn(core, 'info')
|
||||
const gqlMock = mockGraphQL()
|
||||
await expect(addToProject()).rejects.toThrow(
|
||||
'https://notgithub.com/orgs/github/projects/1. Project URL should match the format https://github.com/<orgs-or-users>/<ownerName>/projects/<projectNumber>'
|
||||
'https://notgithub.com/orgs/github/projects/1. Project URL should match the format https://github.com/<orgs-or-users>/<ownerName>/projects/<projectNumber>',
|
||||
)
|
||||
expect(infoSpy).not.toHaveBeenCalled()
|
||||
expect(gqlMock).not.toHaveBeenCalled()
|
||||
@@ -612,7 +612,7 @@ describe('addToProject', () => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'bug, new'
|
||||
labeled: 'bug, new',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -620,14 +620,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'bug'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const gqlMock = mockGraphQL(
|
||||
@@ -636,28 +636,28 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2ItemById/,
|
||||
return: {
|
||||
addProjectV2ItemById: {
|
||||
item: {
|
||||
id: 'project-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
await addToProject()
|
||||
|
||||
expect(gqlMock).toHaveBeenNthCalledWith(1, expect.stringContaining('organization(login: $projectOwnerName)'), {
|
||||
projectOwnerName: 'actions',
|
||||
projectNumber: 1
|
||||
projectNumber: 1,
|
||||
})
|
||||
})
|
||||
|
||||
@@ -665,7 +665,7 @@ describe('addToProject', () => {
|
||||
mockGetInput({
|
||||
'project-url': 'https://github.com/users/monalisa/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'bug, new'
|
||||
labeled: 'bug, new',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -673,14 +673,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'bug'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/monalisa/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/monalisa/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'monalisa'
|
||||
}
|
||||
}
|
||||
login: 'monalisa',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const gqlMock = mockGraphQL(
|
||||
@@ -689,28 +689,28 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2ItemById/,
|
||||
return: {
|
||||
addProjectV2ItemById: {
|
||||
item: {
|
||||
id: 'project-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
await addToProject()
|
||||
|
||||
expect(gqlMock).toHaveBeenNthCalledWith(1, expect.stringContaining('user(login: $projectOwnerName)'), {
|
||||
projectOwnerName: 'monalisa',
|
||||
projectNumber: 1
|
||||
projectNumber: 1,
|
||||
})
|
||||
})
|
||||
|
||||
@@ -719,7 +719,7 @@ describe('addToProject', () => {
|
||||
'project-url': 'https://github.com/orgs/actions/projects/1',
|
||||
'github-token': 'gh_token',
|
||||
labeled: 'FOO, Bar, baz',
|
||||
'label-operator': 'AND'
|
||||
'label-operator': 'AND',
|
||||
})
|
||||
|
||||
github.context.payload = {
|
||||
@@ -727,14 +727,14 @@ describe('addToProject', () => {
|
||||
number: 1,
|
||||
labels: [{name: 'foo'}, {name: 'BAR'}, {name: 'baz'}],
|
||||
// eslint-disable-next-line camelcase
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74'
|
||||
html_url: 'https://github.com/actions/add-to-project/issues/74',
|
||||
},
|
||||
repository: {
|
||||
name: 'add-to-project',
|
||||
owner: {
|
||||
login: 'actions'
|
||||
}
|
||||
}
|
||||
login: 'actions',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
mockGraphQL(
|
||||
@@ -743,21 +743,21 @@ describe('addToProject', () => {
|
||||
return: {
|
||||
organization: {
|
||||
projectV2: {
|
||||
id: 'project-next-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-next-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /addProjectV2ItemById/,
|
||||
return: {
|
||||
addProjectV2ItemById: {
|
||||
item: {
|
||||
id: 'project-next-item-id'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
id: 'project-next-item-id',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
await addToProject()
|
||||
@@ -810,7 +810,7 @@ function mockGraphQL(...mocks: {test: RegExp; return: unknown}[]): jest.Mock {
|
||||
|
||||
jest.spyOn(github, 'getOctokit').mockImplementation(() => {
|
||||
return {
|
||||
graphql: mock
|
||||
graphql: mock,
|
||||
} as unknown as ReturnType<typeof github.getOctokit>
|
||||
})
|
||||
|
||||
|
||||
9
dist/index.js
generated
vendored
9
dist/index.js
generated
vendored
@@ -61,6 +61,7 @@ function addToProject() {
|
||||
const issueLabels = ((_c = issue === null || issue === void 0 ? void 0 : issue.labels) !== null && _c !== void 0 ? _c : []).map((l) => l.name.toLowerCase());
|
||||
const issueOwnerName = (_d = github.context.payload.repository) === null || _d === void 0 ? void 0 : _d.owner.login;
|
||||
core.debug(`Issue/PR owner: ${issueOwnerName}`);
|
||||
core.debug(`Issue/PR labels: ${issueLabels.join(', ')}`);
|
||||
// Ensure the issue matches our `labeled` filter based on the label-operator.
|
||||
if (labelOperator === 'and') {
|
||||
if (!labeled.every(l => issueLabels.includes(l))) {
|
||||
@@ -101,7 +102,7 @@ function addToProject() {
|
||||
}
|
||||
}`, {
|
||||
projectOwnerName,
|
||||
projectNumber
|
||||
projectNumber,
|
||||
});
|
||||
const projectId = (_j = idResp[ownerTypeQuery]) === null || _j === void 0 ? void 0 : _j.projectV2.id;
|
||||
const contentId = issue === null || issue === void 0 ? void 0 : issue.node_id;
|
||||
@@ -121,8 +122,8 @@ function addToProject() {
|
||||
}`, {
|
||||
input: {
|
||||
projectId,
|
||||
contentId
|
||||
}
|
||||
contentId,
|
||||
},
|
||||
});
|
||||
core.setOutput('itemId', addResp.addProjectV2ItemById.item.id);
|
||||
}
|
||||
@@ -139,7 +140,7 @@ function addToProject() {
|
||||
}
|
||||
}`, {
|
||||
projectId,
|
||||
title: issue === null || issue === void 0 ? void 0 : issue.html_url
|
||||
title: issue === null || issue === void 0 ? void 0 : issue.html_url,
|
||||
});
|
||||
core.setOutput('itemId', addResp.addProjectV2DraftIssue.projectItem.id);
|
||||
}
|
||||
|
||||
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
@@ -3,7 +3,7 @@ module.exports = {
|
||||
moduleFileExtensions: ['js', 'ts'],
|
||||
testMatch: ['**/*.test.ts'],
|
||||
transform: {
|
||||
'^.+\\.ts$': 'ts-jest'
|
||||
'^.+\\.ts$': 'ts-jest',
|
||||
},
|
||||
verbose: true
|
||||
verbose: true,
|
||||
}
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -29,8 +29,8 @@
|
||||
"typescript": "^4.9.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.0.0 <17.0.0",
|
||||
"npm": ">= 7.0.0"
|
||||
"node": ">=16.0.0 <20.0.0",
|
||||
"npm": ">= 8.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/core": {
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
"@actions/github": "^5.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.0.0 <17.0.0",
|
||||
"npm": ">= 7.0.0"
|
||||
"node": ">=16.0.0 <20.0.0",
|
||||
"npm": ">= 8.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@github/prettier-config": "^0.0.6",
|
||||
|
||||
@@ -54,6 +54,7 @@ export async function addToProject(): Promise<void> {
|
||||
const issueOwnerName = github.context.payload.repository?.owner.login
|
||||
|
||||
core.debug(`Issue/PR owner: ${issueOwnerName}`)
|
||||
core.debug(`Issue/PR labels: ${issueLabels.join(', ')}`)
|
||||
|
||||
// Ensure the issue matches our `labeled` filter based on the label-operator.
|
||||
if (labelOperator === 'and') {
|
||||
@@ -79,7 +80,7 @@ export async function addToProject(): Promise<void> {
|
||||
|
||||
if (!urlMatch) {
|
||||
throw new Error(
|
||||
`Invalid project URL: ${projectUrl}. Project URL should match the format https://github.com/<orgs-or-users>/<ownerName>/projects/<projectNumber>`
|
||||
`Invalid project URL: ${projectUrl}. Project URL should match the format https://github.com/<orgs-or-users>/<ownerName>/projects/<projectNumber>`,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -103,8 +104,8 @@ export async function addToProject(): Promise<void> {
|
||||
}`,
|
||||
{
|
||||
projectOwnerName,
|
||||
projectNumber
|
||||
}
|
||||
projectNumber,
|
||||
},
|
||||
)
|
||||
|
||||
const projectId = idResp[ownerTypeQuery]?.projectV2.id
|
||||
@@ -130,9 +131,9 @@ export async function addToProject(): Promise<void> {
|
||||
{
|
||||
input: {
|
||||
projectId,
|
||||
contentId
|
||||
}
|
||||
}
|
||||
contentId,
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
core.setOutput('itemId', addResp.addProjectV2ItemById.item.id)
|
||||
@@ -152,8 +153,8 @@ export async function addToProject(): Promise<void> {
|
||||
}`,
|
||||
{
|
||||
projectId,
|
||||
title: issue?.html_url
|
||||
}
|
||||
title: issue?.html_url,
|
||||
},
|
||||
)
|
||||
|
||||
core.setOutput('itemId', addResp.addProjectV2DraftIssue.projectItem.id)
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
"rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,
|
||||
"strict": true /* Enable all strict type-checking options. */,
|
||||
"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,
|
||||
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
||||
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
|
||||
"noUncheckedIndexedAccess": true
|
||||
},
|
||||
"exclude": ["node_modules", "**/*.test.ts"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user