diff --git a/workflow_tests/assertions/lockDeploysAssertions.ts b/workflow_tests/assertions/lockDeploysAssertions.ts index 278d413fb972..467e20bc5047 100644 --- a/workflow_tests/assertions/lockDeploysAssertions.ts +++ b/workflow_tests/assertions/lockDeploysAssertions.ts @@ -71,4 +71,4 @@ function assertlockStagingDeploysJobFailedAfterFirstStep(workflowResult: Step[]) }); } -export {assertlockStagingDeploysJobExecuted, assertlockStagingDeploysJobFailedAfterFirstStep}; +export default {assertlockStagingDeploysJobExecuted, assertlockStagingDeploysJobFailedAfterFirstStep}; diff --git a/workflow_tests/assertions/platformDeployAssertions.ts b/workflow_tests/assertions/platformDeployAssertions.ts index b164cd269b4c..a93abd77cca9 100644 --- a/workflow_tests/assertions/platformDeployAssertions.ts +++ b/workflow_tests/assertions/platformDeployAssertions.ts @@ -376,7 +376,7 @@ function assertPostGithubCommentJobExecuted(workflowResult: Step[], didExecute = }); } -export { +export default { assertVerifyActorJobExecuted, assertDeployChecklistJobExecuted, assertAndroidJobExecuted, diff --git a/workflow_tests/assertions/reviewerChecklistAssertions.ts b/workflow_tests/assertions/reviewerChecklistAssertions.ts index 6d74e27df1a0..4be8e1807dc7 100644 --- a/workflow_tests/assertions/reviewerChecklistAssertions.ts +++ b/workflow_tests/assertions/reviewerChecklistAssertions.ts @@ -13,5 +13,4 @@ function assertChecklistJobExecuted(workflowResult: Step[], didExecute = true) { }); } -// eslint-disable-next-line import/prefer-default-export -export {assertChecklistJobExecuted}; +export default {assertChecklistJobExecuted}; diff --git a/workflow_tests/assertions/testAssertions.ts b/workflow_tests/assertions/testAssertions.ts index e0d1d6b37022..06379403a834 100644 --- a/workflow_tests/assertions/testAssertions.ts +++ b/workflow_tests/assertions/testAssertions.ts @@ -54,4 +54,4 @@ function assertShellTestsJobExecuted(workflowResult: Step[], didExecute = true) }); } -export {assertJestJobExecuted, assertShellTestsJobExecuted}; +export default {assertJestJobExecuted, assertShellTestsJobExecuted}; diff --git a/workflow_tests/lockDeploys.test.js b/workflow_tests/lockDeploys.test.ts similarity index 93% rename from workflow_tests/lockDeploys.test.js rename to workflow_tests/lockDeploys.test.ts index 5f8849a24fa3..be739b963cbb 100644 --- a/workflow_tests/lockDeploys.test.js +++ b/workflow_tests/lockDeploys.test.ts @@ -1,13 +1,17 @@ -const path = require('path'); -const kieMockGithub = require('@kie/mock-github'); -const utils = require('./utils/utils'); -const assertions = require('./assertions/lockDeploysAssertions'); -const mocks = require('./mocks/lockDeploysMocks').default; -const ExtendedAct = require('./utils/ExtendedAct').default; +import type {MockStep} from '@kie/act-js/build/src/step-mocker/step-mocker.types'; +import * as kieMockGithub from '@kie/mock-github'; +import type {CreateRepositoryFile, MockGithub} from '@kie/mock-github'; +import path from 'path'; +import assertions from './assertions/lockDeploysAssertions'; +import mocks from './mocks/lockDeploysMocks'; +import ExtendedAct from './utils/ExtendedAct'; +import * as utils from './utils/utils'; jest.setTimeout(90 * 1000); -let mockGithub; -const FILES_TO_COPY_INTO_TEST_REPO = [ + +let mockGithub: MockGithub; + +const FILES_TO_COPY_INTO_TEST_REPO: CreateRepositoryFile[] = [ ...utils.deepCopy(utils.FILES_TO_COPY_INTO_TEST_REPO), { src: path.resolve(__dirname, '..', '.github', 'workflows', 'lockDeploys.yml'), @@ -16,7 +20,7 @@ const FILES_TO_COPY_INTO_TEST_REPO = [ ]; describe('test workflow lockDeploys', () => { - beforeAll(async () => { + beforeAll(() => { // in case of the tests being interrupted without cleanup the mock repo directory may be left behind // which breaks the next test run, this removes any possible leftovers utils.removeMockRepoDir(); @@ -43,7 +47,7 @@ describe('test workflow lockDeploys', () => { describe('issue has StagingDeployCash', () => { describe('actor is not OSBotify', () => { it('job triggered, comment left in StagingDeployCash', async () => { - const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'lockDeploys.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -71,7 +75,7 @@ describe('test workflow lockDeploys', () => { }, workflowPath, ); - const testMockSteps = { + const testMockSteps: MockStep = { lockStagingDeploys: mocks.LOCKDEPLOYS__LOCKSTAGINGDEPLOYS__STEP_MOCKS, }; const result = await act.runEvent('issues', { @@ -85,7 +89,7 @@ describe('test workflow lockDeploys', () => { }); it('one step fails, comment not left in StagingDeployCash, announced failure in Slack', async () => { - const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'lockDeploys.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -113,7 +117,7 @@ describe('test workflow lockDeploys', () => { }, workflowPath, ); - const testMockSteps = { + const testMockSteps: MockStep = { lockStagingDeploys: mocks.LOCKDEPLOYS__LOCKSTAGINGDEPLOYS__STEP_MOCKS, }; testMockSteps.lockStagingDeploys[1] = utils.createMockStep( @@ -139,7 +143,7 @@ describe('test workflow lockDeploys', () => { describe('actor is OSBotify', () => { it('job not triggered, comment not left in StagingDeployCash', async () => { - const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'lockDeploys.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -167,7 +171,7 @@ describe('test workflow lockDeploys', () => { }, workflowPath, ); - const testMockSteps = { + const testMockSteps: MockStep = { lockStagingDeploys: mocks.LOCKDEPLOYS__LOCKSTAGINGDEPLOYS__STEP_MOCKS, }; const result = await act.runEvent('issues', { @@ -185,7 +189,7 @@ describe('test workflow lockDeploys', () => { describe('issue does not have StagingDeployCash', () => { describe('actor is not OSBotify', () => { it('job not triggered, comment not left in StagingDeployCash', async () => { - const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'lockDeploys.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -213,7 +217,7 @@ describe('test workflow lockDeploys', () => { }, workflowPath, ); - const testMockSteps = { + const testMockSteps: MockStep = { lockStagingDeploys: mocks.LOCKDEPLOYS__LOCKSTAGINGDEPLOYS__STEP_MOCKS, }; const result = await act.runEvent('issues', { @@ -229,7 +233,7 @@ describe('test workflow lockDeploys', () => { describe('actor is OSBotify', () => { it('job not triggered, comment not left in StagingDeployCash', async () => { - const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'lockDeploys.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -257,7 +261,7 @@ describe('test workflow lockDeploys', () => { }, workflowPath, ); - const testMockSteps = { + const testMockSteps: MockStep = { lockStagingDeploys: mocks.LOCKDEPLOYS__LOCKSTAGINGDEPLOYS__STEP_MOCKS, }; const result = await act.runEvent('issues', { @@ -277,7 +281,7 @@ describe('test workflow lockDeploys', () => { describe('issue has StagingDeployCash', () => { describe('actor is not OSBotify', () => { it('job not triggered, comment not left in StagingDeployCash', async () => { - const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'lockDeploys.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -305,7 +309,7 @@ describe('test workflow lockDeploys', () => { }, workflowPath, ); - const testMockSteps = { + const testMockSteps: MockStep = { lockStagingDeploys: mocks.LOCKDEPLOYS__LOCKSTAGINGDEPLOYS__STEP_MOCKS, }; const result = await act.runEvent('issues', { @@ -321,7 +325,7 @@ describe('test workflow lockDeploys', () => { describe('actor is OSBotify', () => { it('job not triggered, comment not left in StagingDeployCash', async () => { - const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'lockDeploys.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -349,7 +353,7 @@ describe('test workflow lockDeploys', () => { }, workflowPath, ); - const testMockSteps = { + const testMockSteps: MockStep = { lockStagingDeploys: mocks.LOCKDEPLOYS__LOCKSTAGINGDEPLOYS__STEP_MOCKS, }; const result = await act.runEvent('issues', { @@ -367,7 +371,7 @@ describe('test workflow lockDeploys', () => { describe('issue does not have StagingDeployCash', () => { describe('actor is not OSBotify', () => { it('job not triggered, comment not left in StagingDeployCash', async () => { - const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'lockDeploys.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -395,7 +399,7 @@ describe('test workflow lockDeploys', () => { }, workflowPath, ); - const testMockSteps = { + const testMockSteps: MockStep = { lockStagingDeploys: mocks.LOCKDEPLOYS__LOCKSTAGINGDEPLOYS__STEP_MOCKS, }; const result = await act.runEvent('issues', { @@ -411,7 +415,7 @@ describe('test workflow lockDeploys', () => { describe('actor is OSBotify', () => { it('job not triggered, comment not left in StagingDeployCash', async () => { - const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testLockDeploysWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'lockDeploys.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -439,7 +443,7 @@ describe('test workflow lockDeploys', () => { }, workflowPath, ); - const testMockSteps = { + const testMockSteps: MockStep = { lockStagingDeploys: mocks.LOCKDEPLOYS__LOCKSTAGINGDEPLOYS__STEP_MOCKS, }; const result = await act.runEvent('issues', { diff --git a/workflow_tests/mocks/platformDeployMocks.ts b/workflow_tests/mocks/platformDeployMocks.ts index 1a14f488a81d..504510ac8962 100644 --- a/workflow_tests/mocks/platformDeployMocks.ts +++ b/workflow_tests/mocks/platformDeployMocks.ts @@ -269,7 +269,7 @@ const PLATFORM_DEPLOY__POST_GITHUB_COMMENT__STEP_MOCKS = [ PLATFORM_DEPLOY__POST_GIHUB_COMMENT__COMMENT__STEP_MOCK, ]; -export { +export default { PLATFORM_DEPLOY__VALIDATE_ACTOR__TEAM_MEMBER__STEP_MOCKS, PLATFORM_DEPLOY__VALIDATE_ACTOR__OUTSIDER__STEP_MOCKS, PLATFORM_DEPLOY__ANDROID__STEP_MOCKS, diff --git a/workflow_tests/mocks/testMocks.ts b/workflow_tests/mocks/testMocks.ts index cb8240169a8e..2d9527957b91 100644 --- a/workflow_tests/mocks/testMocks.ts +++ b/workflow_tests/mocks/testMocks.ts @@ -21,4 +21,4 @@ const TEST__SHELLTESTS__SETUP_NODE__STEP_MOCK = createMockStep('Setup Node', 'Se const TEST__SHELLTESTS__TEST_CI_GIT_LOGIC__STEP_MOCK = createMockStep('Test CI git logic', 'Test CI git logic', 'SHELLTESTS', [], []); const TEST__SHELLTESTS__STEP_MOCKS = [TEST__SHELLTESTS__CHECKOUT__STEP_MOCK, TEST__SHELLTESTS__SETUP_NODE__STEP_MOCK, TEST__SHELLTESTS__TEST_CI_GIT_LOGIC__STEP_MOCK]; -export {TEST__JEST__STEP_MOCKS, TEST__SHELLTESTS__STEP_MOCKS}; +export default {TEST__JEST__STEP_MOCKS, TEST__SHELLTESTS__STEP_MOCKS}; diff --git a/workflow_tests/platformDeploy.test.js b/workflow_tests/platformDeploy.test.ts similarity index 90% rename from workflow_tests/platformDeploy.test.js rename to workflow_tests/platformDeploy.test.ts index d693e39e7519..82903b3bbe14 100644 --- a/workflow_tests/platformDeploy.test.js +++ b/workflow_tests/platformDeploy.test.ts @@ -1,13 +1,18 @@ -const path = require('path'); -const kieMockGithub = require('@kie/mock-github'); -const utils = require('./utils/utils'); -const assertions = require('./assertions/platformDeployAssertions'); -const mocks = require('./mocks/platformDeployMocks'); -const ExtendedAct = require('./utils/ExtendedAct').default; +import type {MockStep} from '@kie/act-js/build/src/step-mocker/step-mocker.types'; +import * as kieMockGithub from '@kie/mock-github'; +import type {CreateRepositoryFile, MockGithub} from '@kie/mock-github'; +import path from 'path'; +import assertions from './assertions/platformDeployAssertions'; +import mocks from './mocks/platformDeployMocks'; +import ExtendedAct from './utils/ExtendedAct'; +import type {MockJobs} from './utils/JobMocker'; +import * as utils from './utils/utils'; jest.setTimeout(90 * 1000); -let mockGithub; -const FILES_TO_COPY_INTO_TEST_REPO = [ + +let mockGithub: MockGithub; + +const FILES_TO_COPY_INTO_TEST_REPO: CreateRepositoryFile[] = [ ...utils.deepCopy(utils.FILES_TO_COPY_INTO_TEST_REPO), { src: path.resolve(__dirname, '..', '.github', 'workflows', 'platformDeploy.yml'), @@ -16,7 +21,7 @@ const FILES_TO_COPY_INTO_TEST_REPO = [ ]; describe('test workflow platformDeploy', () => { - beforeAll(async () => { + beforeAll(() => { // in case of the tests being interrupted without cleanup the mock repo directory may be left behind // which breaks the next test run, this removes any possible leftovers utils.removeMockRepoDir(); @@ -42,7 +47,7 @@ describe('test workflow platformDeploy', () => { describe('push', () => { describe('tag', () => { it('as team member - platform deploy executes on staging', async () => { - const repoPath = mockGithub.repo.getPath('testPlatformDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPlatformDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'platformDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -50,7 +55,9 @@ describe('test workflow platformDeploy', () => { 'push', { ref: 'refs/tags/1.2.3', + // eslint-disable-next-line @typescript-eslint/naming-convention ref_type: 'tag', + // eslint-disable-next-line @typescript-eslint/naming-convention ref_name: '1.2.3', }, { @@ -88,7 +95,7 @@ describe('test workflow platformDeploy', () => { }, workflowPath, ); - const testMockSteps = { + const testMockSteps: MockStep = { validateActor: mocks.PLATFORM_DEPLOY__VALIDATE_ACTOR__TEAM_MEMBER__STEP_MOCKS, android: mocks.PLATFORM_DEPLOY__ANDROID__STEP_MOCKS, desktop: mocks.PLATFORM_DEPLOY__DESKTOP__STEP_MOCKS, @@ -98,7 +105,7 @@ describe('test workflow platformDeploy', () => { postSlackMessageOnSuccess: mocks.PLATFORM_DEPLOY__POST_SLACK_SUCCESS__STEP_MOCKS, postGithubComment: mocks.PLATFORM_DEPLOY__POST_GITHUB_COMMENT__STEP_MOCKS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { deployChecklist: { steps: mocks.PLATFORM_DEPLOY__DEPLOY_CHECKLIST__STEP_MOCKS, runsOn: 'ubuntu-latest', @@ -124,7 +131,7 @@ describe('test workflow platformDeploy', () => { }); it('as OSBotify - platform deploy executes on staging', async () => { - const repoPath = mockGithub.repo.getPath('testPlatformDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPlatformDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'platformDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -132,7 +139,9 @@ describe('test workflow platformDeploy', () => { 'push', { ref: 'refs/tags/1.2.3', + // eslint-disable-next-line @typescript-eslint/naming-convention ref_type: 'tag', + // eslint-disable-next-line @typescript-eslint/naming-convention ref_name: '1.2.3', }, { @@ -180,7 +189,7 @@ describe('test workflow platformDeploy', () => { postSlackMessageOnSuccess: mocks.PLATFORM_DEPLOY__POST_SLACK_SUCCESS__STEP_MOCKS, postGithubComment: mocks.PLATFORM_DEPLOY__POST_GITHUB_COMMENT__STEP_MOCKS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { deployChecklist: { steps: mocks.PLATFORM_DEPLOY__DEPLOY_CHECKLIST__STEP_MOCKS, runsOn: 'ubuntu-latest', @@ -206,7 +215,7 @@ describe('test workflow platformDeploy', () => { }); it('as outsider - platform deploy does not execute', async () => { - const repoPath = mockGithub.repo.getPath('testPlatformDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPlatformDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'platformDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -214,7 +223,9 @@ describe('test workflow platformDeploy', () => { 'push', { ref: 'refs/tags/1.2.3', + // eslint-disable-next-line @typescript-eslint/naming-convention ref_type: 'tag', + // eslint-disable-next-line @typescript-eslint/naming-convention ref_name: '1.2.3', }, { @@ -262,7 +273,7 @@ describe('test workflow platformDeploy', () => { postSlackMessageOnSuccess: mocks.PLATFORM_DEPLOY__POST_SLACK_SUCCESS__STEP_MOCKS, postGithubComment: mocks.PLATFORM_DEPLOY__POST_GITHUB_COMMENT__STEP_MOCKS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { deployChecklist: { steps: mocks.PLATFORM_DEPLOY__DEPLOY_CHECKLIST__STEP_MOCKS, runsOn: 'ubuntu-latest', diff --git a/workflow_tests/preDeploy.test.js b/workflow_tests/preDeploy.test.ts similarity index 95% rename from workflow_tests/preDeploy.test.js rename to workflow_tests/preDeploy.test.ts index 93dde1db061d..b75603c5e846 100644 --- a/workflow_tests/preDeploy.test.js +++ b/workflow_tests/preDeploy.test.ts @@ -1,13 +1,18 @@ -const path = require('path'); -const kieMockGithub = require('@kie/mock-github'); -const utils = require('./utils/utils'); -const assertions = require('./assertions/preDeployAssertions').default; -const mocks = require('./mocks/preDeployMocks').default; -const ExtendedAct = require('./utils/ExtendedAct').default; +import type {MockStep} from '@kie/act-js/build/src/step-mocker/step-mocker.types'; +import * as kieMockGithub from '@kie/mock-github'; +import type {CreateRepositoryFile, MockGithub} from '@kie/mock-github'; +import path from 'path'; +import assertions from './assertions/preDeployAssertions'; +import mocks from './mocks/preDeployMocks'; +import ExtendedAct from './utils/ExtendedAct'; +import type {MockJobs} from './utils/JobMocker'; +import * as utils from './utils/utils'; jest.setTimeout(90 * 1000); -let mockGithub; -const FILES_TO_COPY_INTO_TEST_REPO = [ + +let mockGithub: MockGithub; + +const FILES_TO_COPY_INTO_TEST_REPO: CreateRepositoryFile[] = [ ...utils.deepCopy(utils.FILES_TO_COPY_INTO_TEST_REPO), { src: path.resolve(__dirname, '..', '.github', 'workflows', 'preDeploy.yml'), @@ -16,7 +21,7 @@ const FILES_TO_COPY_INTO_TEST_REPO = [ ]; describe('test workflow preDeploy', () => { - beforeAll(async () => { + beforeAll(() => { // in case of the tests being interrupted without cleanup the mock repo directory may be left behind // which breaks the next test run, this removes any possible leftovers utils.removeMockRepoDir(); @@ -41,7 +46,7 @@ describe('test workflow preDeploy', () => { }); it('push to main - workflow executes', async () => { // get path to the local test repo - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; // get path to the workflow file under test const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); @@ -63,13 +68,13 @@ describe('test workflow preDeploy', () => { ); // set up mocks - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_UNLOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: mocks.TYPECHECK_JOB_MOCK_STEPS, runsOn: 'ubuntu-latest', @@ -117,16 +122,16 @@ describe('test workflow preDeploy', () => { }); it('different event than push - workflow does not execute', async () => { - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_UNLOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: mocks.TYPECHECK_JOB_MOCK_STEPS, runsOn: 'ubuntu-latest', @@ -210,7 +215,7 @@ describe('test workflow preDeploy', () => { describe('confirm passing build', () => { it('typecheck job failed - workflow exits', async () => { - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -224,13 +229,13 @@ describe('test workflow preDeploy', () => { }, 'dummy_github_token', ); - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_UNLOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: [utils.createMockStep('Run typecheck workflow', 'Running typecheck workflow - Typecheck workflow failed', 'TYPECHECK', null, null, null, null, false)], runsOn: 'ubuntu-latest', @@ -283,7 +288,7 @@ describe('test workflow preDeploy', () => { }); it('lint job failed - workflow exits', async () => { - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -297,13 +302,13 @@ describe('test workflow preDeploy', () => { }, 'dummy_github_token', ); - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_UNLOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: mocks.TYPECHECK_JOB_MOCK_STEPS, runsOn: 'ubuntu-latest', @@ -354,7 +359,7 @@ describe('test workflow preDeploy', () => { }); it('test job failed - workflow exits', async () => { - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -368,13 +373,13 @@ describe('test workflow preDeploy', () => { }, 'dummy_github_token', ); - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_UNLOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: mocks.TYPECHECK_JOB_MOCK_STEPS, runsOn: 'ubuntu-latest', @@ -425,7 +430,7 @@ describe('test workflow preDeploy', () => { }); it('lint and test job succeed - workflow continues', async () => { - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -439,13 +444,13 @@ describe('test workflow preDeploy', () => { }, 'dummy_github_token', ); - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_UNLOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: mocks.TYPECHECK_JOB_MOCK_STEPS, runsOn: 'ubuntu-latest', @@ -491,17 +496,17 @@ describe('test workflow preDeploy', () => { describe('choose deploy actions', () => { describe('staging locked', () => { it('not automated PR - deploy skipped and comment left', async () => { - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams(act, 'push', {ref: 'refs/heads/main'}, {OS_BOTIFY_TOKEN: 'dummy_token', SLACK_WEBHOOK: 'dummy_slack_webhook'}, 'dummy_github_token'); - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_LOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: mocks.TYPECHECK_JOB_MOCK_STEPS, runsOn: 'ubuntu-latest', @@ -545,17 +550,17 @@ describe('test workflow preDeploy', () => { }); it('automated PR - deploy skipped, but no comment left', async () => { - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams(act, 'push', {ref: 'refs/heads/main'}, {OS_BOTIFY_TOKEN: 'dummy_token', SLACK_WEBHOOK: 'dummy_slack_webhook'}, 'dummy_github_token'); - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_LOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: mocks.TYPECHECK_JOB_MOCK_STEPS, runsOn: 'ubuntu-latest', @@ -601,7 +606,7 @@ describe('test workflow preDeploy', () => { describe('staging not locked', () => { it('not automated PR - proceed with deploy', async () => { - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -615,13 +620,13 @@ describe('test workflow preDeploy', () => { }, 'dummy_github_token', ); - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_UNLOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: mocks.TYPECHECK_JOB_MOCK_STEPS, runsOn: 'ubuntu-latest', @@ -665,7 +670,7 @@ describe('test workflow preDeploy', () => { }); it('automated PR - deploy skipped, but no comment left', async () => { - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -678,13 +683,13 @@ describe('test workflow preDeploy', () => { }, 'dummy_github_token', ); - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_UNLOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: mocks.TYPECHECK_JOB_MOCK_STEPS, runsOn: 'ubuntu-latest', @@ -729,7 +734,7 @@ describe('test workflow preDeploy', () => { }); it('one of updateStaging steps failed - failure announced in Slack', async () => { - const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testPreDeployWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'preDeploy.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams( @@ -743,14 +748,14 @@ describe('test workflow preDeploy', () => { }, 'dummy_github_token', ); - const testMockSteps = { + const testMockSteps: MockStep = { confirmPassingBuild: mocks.CONFIRM_PASSING_BUILD_JOB_MOCK_STEPS, chooseDeployActions: mocks.CHOOSE_DEPLOY_ACTIONS_JOB_MOCK_STEPS__STAGING_UNLOCKED, skipDeploy: mocks.SKIP_DEPLOY_JOB_MOCK_STEPS, updateStaging: mocks.UPDATE_STAGING_JOB_MOCK_STEPS, }; testMockSteps.updateStaging[3].mockWith = 'exit 1'; - const testMockJobs = { + const testMockJobs: MockJobs = { typecheck: { steps: mocks.TYPECHECK_JOB_MOCK_STEPS, runsOn: 'ubuntu-latest', diff --git a/workflow_tests/reviewerChecklist.test.js b/workflow_tests/reviewerChecklist.test.ts similarity index 81% rename from workflow_tests/reviewerChecklist.test.js rename to workflow_tests/reviewerChecklist.test.ts index f219b908fbc2..07b325f9d699 100644 --- a/workflow_tests/reviewerChecklist.test.js +++ b/workflow_tests/reviewerChecklist.test.ts @@ -1,13 +1,17 @@ -const path = require('path'); -const kieMockGithub = require('@kie/mock-github'); -const utils = require('./utils/utils'); -const assertions = require('./assertions/reviewerChecklistAssertions'); -const mocks = require('./mocks/reviewerChecklistMocks').default; -const ExtendedAct = require('./utils/ExtendedAct').default; +import type {MockStep} from '@kie/act-js/build/src/step-mocker/step-mocker.types'; +import * as kieMockGithub from '@kie/mock-github'; +import type {CreateRepositoryFile, MockGithub} from '@kie/mock-github'; +import path from 'path'; +import assertions from './assertions/reviewerChecklistAssertions'; +import mocks from './mocks/reviewerChecklistMocks'; +import ExtendedAct from './utils/ExtendedAct'; +import * as utils from './utils/utils'; jest.setTimeout(90 * 1000); -let mockGithub; -const FILES_TO_COPY_INTO_TEST_REPO = [ + +let mockGithub: MockGithub; + +const FILES_TO_COPY_INTO_TEST_REPO: CreateRepositoryFile[] = [ ...utils.deepCopy(utils.FILES_TO_COPY_INTO_TEST_REPO), { src: path.resolve(__dirname, '..', '.github', 'workflows', 'reviewerChecklist.yml'), @@ -19,7 +23,7 @@ describe('test workflow reviewerChecklist', () => { const githubToken = 'dummy_github_token'; const actor = 'Dummy Actor'; - beforeAll(async () => { + beforeAll(() => { // in case of the tests being interrupted without cleanup the mock repo directory may be left behind // which breaks the next test run, this removes any possible leftovers utils.removeMockRepoDir(); @@ -44,11 +48,11 @@ describe('test workflow reviewerChecklist', () => { const event = 'pull_request_review'; const eventOptions = {}; it('runs the workflow', async () => { - const repoPath = mockGithub.repo.getPath('testReviewerChecklistWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testReviewerChecklistWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'reviewerChecklist.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams(act, event, eventOptions, {}, githubToken); - const testMockSteps = { + const testMockSteps: MockStep = { checklist: mocks.REVIEWERCHECKLIST__CHECKLIST__STEP_MOCKS, }; const result = await act.runEvent(event, { @@ -63,11 +67,11 @@ describe('test workflow reviewerChecklist', () => { describe('actor is OSBotify', () => { const osbotifyActor = 'OSBotify'; it('does not run the workflow', async () => { - const repoPath = mockGithub.repo.getPath('testReviewerChecklistWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testReviewerChecklistWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'reviewerChecklist.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams(act, event, eventOptions, {}, githubToken); - const testMockSteps = { + const testMockSteps: MockStep = { checklist: mocks.REVIEWERCHECKLIST__CHECKLIST__STEP_MOCKS, }; const result = await act.runEvent(event, { diff --git a/workflow_tests/test.test.js b/workflow_tests/test.test.ts similarity index 88% rename from workflow_tests/test.test.js rename to workflow_tests/test.test.ts index 1ad8a1b48e4b..331a657a486c 100644 --- a/workflow_tests/test.test.js +++ b/workflow_tests/test.test.ts @@ -1,13 +1,17 @@ -const path = require('path'); -const kieMockGithub = require('@kie/mock-github'); -const utils = require('./utils/utils'); -const assertions = require('./assertions/testAssertions'); -const mocks = require('./mocks/testMocks'); -const ExtendedAct = require('./utils/ExtendedAct').default; +import type {MockStep} from '@kie/act-js/build/src/step-mocker/step-mocker.types'; +import * as kieMockGithub from '@kie/mock-github'; +import type {CreateRepositoryFile, MockGithub} from '@kie/mock-github'; +import path from 'path'; +import assertions from './assertions/testAssertions'; +import mocks from './mocks/testMocks'; +import ExtendedAct from './utils/ExtendedAct'; +import * as utils from './utils/utils'; jest.setTimeout(90 * 1000); -let mockGithub; -const FILES_TO_COPY_INTO_TEST_REPO = [ + +let mockGithub: MockGithub; + +const FILES_TO_COPY_INTO_TEST_REPO: CreateRepositoryFile[] = [ ...utils.deepCopy(utils.FILES_TO_COPY_INTO_TEST_REPO), { src: path.resolve(__dirname, '..', '.github', 'workflows', 'test.yml'), @@ -20,7 +24,7 @@ describe('test workflow test', () => { const actor = 'Dummy Actor'; const osbotifyActor = 'OSBotify'; - beforeAll(async () => { + beforeAll(() => { // in case of the tests being interrupted without cleanup the mock repo directory may be left behind // which breaks the next test run, this removes any possible leftovers utils.removeMockRepoDir(); @@ -49,11 +53,11 @@ describe('test workflow test', () => { action: 'opened', }; it('runs all tests', async () => { - const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'test.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams(act, event, eventOptions, {}, githubToken); - const testMockSteps = { + const testMockSteps: MockStep = { jest: mocks.TEST__JEST__STEP_MOCKS, shellTests: mocks.TEST__SHELLTESTS__STEP_MOCKS, }; @@ -69,11 +73,11 @@ describe('test workflow test', () => { }); describe('actor is OSBotify', () => { it('does not run tests', async () => { - const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'test.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams(act, event, eventOptions, {}, githubToken); - const testMockSteps = { + const testMockSteps: MockStep = { jest: mocks.TEST__JEST__STEP_MOCKS, shellTests: mocks.TEST__SHELLTESTS__STEP_MOCKS, }; @@ -96,11 +100,11 @@ describe('test workflow test', () => { action: 'synchronize', }; it('runs all tests', async () => { - const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'test.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams(act, event, eventOptions, {}, githubToken); - const testMockSteps = { + const testMockSteps: MockStep = { jest: mocks.TEST__JEST__STEP_MOCKS, shellTests: mocks.TEST__SHELLTESTS__STEP_MOCKS, }; @@ -116,11 +120,11 @@ describe('test workflow test', () => { }); describe('actor is OSBotify', () => { it('does not run tests', async () => { - const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'test.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams(act, event, eventOptions, {}, githubToken); - const testMockSteps = { + const testMockSteps: MockStep = { jest: mocks.TEST__JEST__STEP_MOCKS, shellTests: mocks.TEST__SHELLTESTS__STEP_MOCKS, }; @@ -141,11 +145,11 @@ describe('test workflow test', () => { const event = 'workflow_call'; const eventOptions = {}; it('runs all tests', async () => { - const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'test.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams(act, event, eventOptions, {}, githubToken); - const testMockSteps = { + const testMockSteps: MockStep = { jest: mocks.TEST__JEST__STEP_MOCKS, shellTests: mocks.TEST__SHELLTESTS__STEP_MOCKS, }; @@ -161,11 +165,11 @@ describe('test workflow test', () => { }); describe('actor is OSBotify', () => { it('runs all tests normally', async () => { - const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') || ''; + const repoPath = mockGithub.repo.getPath('testTestWorkflowRepo') ?? ''; const workflowPath = path.join(repoPath, '.github', 'workflows', 'test.yml'); let act = new ExtendedAct(repoPath, workflowPath); act = utils.setUpActParams(act, event, eventOptions, {}, githubToken); - const testMockSteps = { + const testMockSteps: MockStep = { jest: mocks.TEST__JEST__STEP_MOCKS, shellTests: mocks.TEST__SHELLTESTS__STEP_MOCKS, }; diff --git a/workflow_tests/utils/utils.ts b/workflow_tests/utils/utils.ts index a39891dc2302..b70a88c24c7a 100644 --- a/workflow_tests/utils/utils.ts +++ b/workflow_tests/utils/utils.ts @@ -1,13 +1,10 @@ +import type {EventJSON} from '@kie/act-js/build/src/action-event/action-event.types'; import type {StepIdentifier} from '@kie/act-js/build/src/step-mocker/step-mocker.types'; import fs from 'fs'; import path from 'path'; import yaml from 'yaml'; import type ExtendedAct from './ExtendedAct'; -type EventOptions = { - action?: string; -}; - type StepAssertionInputEntry = {key: string; value: string | boolean}; type StepAssertion = { @@ -19,7 +16,7 @@ type StepAssertion = { function setUpActParams( act: ExtendedAct, event: string | null = null, - eventOptions: EventOptions | null = null, + eventOptions: EventJSON | null = null, secrets: Record | null = null, githubToken: string | null = null, envVars: Record | null = null,