UNPKG

@atlaskit/build-utils

Version:

Collection of utilities to used during the release process of Atlaskit

59 lines (54 loc) 2.56 kB
// @flow jest.enableAutomock(); jest.unmock('../../packages'); const bolt = require('bolt'); const git = require('../../git'); const { getChangedPackages } = require('../../packages'); const mockGit /*: any*/ = git; mockGit.getChangedFilesSince.mockImplementation(commit => { if (['master', 'develop'].includes(commit)) { return [`${commit}/file`]; } throw Error('Invalid commit'); }); mockGit.getRef.mockImplementation(branch => branch); bolt.getProject.mockImplementation(() => ({ dir: 'bar' })); bolt.getWorkspaces.mockImplementation(() => [ { dir: 'master' }, { dir: 'develop' }, ]); describe('getChangedPackages', () => { beforeEach(() => { mockGit.getBaseBranch.mockReset(); }); test('It returns changed packages from calculated base branch', async () => { mockGit.getBaseBranch.mockImplementationOnce(() => 'develop'); const changedPackagesFromDevelop = await getChangedPackages('fix/bug'); expect(changedPackagesFromDevelop).toMatchObject([{ dir: 'develop' }]); mockGit.getBaseBranch.mockImplementationOnce(() => 'master'); const changedPackagesFromMaster = await getChangedPackages('fix/bug'); expect(changedPackagesFromMaster).toMatchObject([{ dir: 'master' }]); }); test('if source branch is a release branch, it returns changed packages from master', async () => { mockGit.getBaseBranch.mockImplementationOnce(() => 'develop'); const changedPackagesFromMaster = await getChangedPackages( 'release-candidate/foo', ); expect(changedPackagesFromMaster).toMatchObject([{ dir: 'master' }]); }); test('if source branch is develop, it returns changed packages from master', async () => { mockGit.getBaseBranch.mockImplementationOnce(() => 'develop'); const changedPackagesFromMaster = await getChangedPackages('develop'); expect(changedPackagesFromMaster).toMatchObject([{ dir: 'master' }]); }); test('if source branch is not a release branch, it returns changed packages from calculated branch', async () => { mockGit.getBaseBranch.mockImplementationOnce(() => 'develop'); const changedPackagesFromDevelop = await getChangedPackages('feature/foo'); expect(changedPackagesFromDevelop).toMatchObject([{ dir: 'develop' }]); }); test('if source branch is not defined, it returns changed packages from master', async () => { mockGit.getBaseBranch.mockImplementationOnce(() => 'develop'); const changedPackagesFromDevelop = await getChangedPackages(); expect(changedPackagesFromDevelop).toMatchObject([{ dir: 'master' }]); }); });