// Initial env variable setup for tests. process.env['INPUT_FOLDER'] = 'build' process.env['GITHUB_SHA'] = '123' process.env['INPUT_DEBUG'] = 'debug' import '../src/main' import {action} from '../src/constants' import run from '../src/lib' import {execute} from '../src/execute' import {rmRF} from '@actions/io' import {setFailed, exportVariable} from '@actions/core' const originalAction = JSON.stringify(action) jest.mock('../src/execute', () => ({ execute: jest.fn() })) jest.mock('@actions/io', () => ({ rmRF: jest.fn() })) jest.mock('@actions/core', () => ({ setFailed: jest.fn(), getInput: jest.fn(), exportVariable: jest.fn(), isDebug: jest.fn(), info: jest.fn() })) describe('main', () => { afterEach(() => { Object.assign(action, JSON.parse(originalAction)) }) it('should run through the commands', async () => { Object.assign(action, { repositoryPath: 'JamesIves/github-pages-deploy-action', folder: 'assets', branch: 'branch', gitHubToken: '123', pusher: { name: 'asd', email: 'as@cat' }, isTest: false, debug: true }) await run(action) expect(execute).toBeCalledTimes(19) expect(rmRF).toBeCalledTimes(1) expect(exportVariable).toBeCalledTimes(1) }) it('should run through the commands and succeed', async () => { Object.assign(action, { repositoryPath: 'JamesIves/github-pages-deploy-action', folder: 'assets', branch: 'branch', gitHubToken: '123', pusher: { name: 'asd', email: 'as@cat' } }) await run(action) expect(execute).toBeCalledTimes(18) expect(rmRF).toBeCalledTimes(1) expect(exportVariable).toBeCalledTimes(1) }) it('should throw if an error is encountered', async () => { Object.assign(action, { folder: 'assets', branch: 'branch', baseBranch: 'master', gitHubToken: null, ssh: null, accessToken: null, pusher: { name: 'asd', email: 'as@cat' }, isTest: true }) await run(action) expect(execute).toBeCalledTimes(0) expect(setFailed).toBeCalledTimes(1) expect(exportVariable).toBeCalledTimes(1) }) })