Skip to content
Snippets Groups Projects
Select Git revision
  • 9aff7a955ffa586c84b35bacbd14ce995b91b2d3
  • main default protected
  • next
  • chore/update-static-data
  • renovate/main-redis-5.x
  • feat/gnupg
  • fix/36615b-branch-reuse-no-cache
  • chore/punycode
  • refactor/pin-new-value
  • feat/36219--git-x509-signing
  • feat/structured-logger
  • hotfix/39.264.1
  • feat/skip-dangling
  • gh-readonly-queue/next/pr-36034-7a061c4ca1024a19e2c295d773d9642625d1c2be
  • hotfix/39.238.3
  • refactor/gitlab-auto-approve
  • feat/template-strings
  • gh-readonly-queue/next/pr-35654-137d934242c784e0c45d4b957362214f0eade1d7
  • fix/32307-global-extends-merging
  • fix/32307-global-extends-repositories
  • gh-readonly-queue/next/pr-35009-046ebf7cb84ab859f7fefceb5fa53a54ce9736f8
  • 41.52.2
  • 41.52.1
  • 41.52.0
  • 41.51.2
  • 41.51.1
  • 41.51.0
  • 41.50.0
  • 41.49.1
  • 41.49.0
  • 41.48.1
  • 41.48.0
  • 41.47.1
  • 41.47.0
  • 41.46.8
  • 41.46.7
  • 41.46.6
  • 41.46.5
  • 41.46.4
  • 41.46.3
  • 41.46.2
41 results

get-updated.spec.ts

Blame
  • user avatar
    Rhys Arkins authored and GitHub committed
    ab0ebfee
    History
    get-updated.spec.ts 5.39 KiB
    import { defaultConfig, git, mocked } from '../../../test/util';
    import * as datasourceGitSubmodules from '../../datasource/git-submodules';
    import * as _composer from '../../manager/composer';
    import * as _gitSubmodules from '../../manager/git-submodules';
    import * as _npm from '../../manager/npm';
    import { BranchConfig } from '../common';
    import * as _autoReplace from './auto-replace';
    import { getUpdatedPackageFiles } from './get-updated';
    
    const composer = mocked(_composer);
    const gitSubmodules = mocked(_gitSubmodules);
    const npm = mocked(_npm);
    const autoReplace = mocked(_autoReplace);
    
    jest.mock('../../manager/composer');
    jest.mock('../../manager/npm');
    jest.mock('../../manager/git-submodules');
    jest.mock('../../util/git');
    jest.mock('./auto-replace');
    
    describe('workers/branch/get-updated', () => {
      describe('getUpdatedPackageFiles()', () => {
        let config: BranchConfig;
        beforeEach(() => {
          config = {
            ...defaultConfig,
            upgrades: [],
          } as never;
          npm.updateDependency = jest.fn();
          git.getFile.mockResolvedValueOnce('existing content');
        });
        it('handles autoreplace base updated', async () => {
          config.upgrades.push({ manager: 'html', branchName: undefined });
          autoReplace.doAutoReplace.mockResolvedValueOnce('updated-file');
          const res = await getUpdatedPackageFiles(config);
          expect(res).toMatchSnapshot();
        });
        it('handles autoreplace branch no update', async () => {
          config.upgrades.push({ manager: 'html', branchName: undefined });
          autoReplace.doAutoReplace.mockResolvedValueOnce('existing content');
          const res = await getUpdatedPackageFiles(config);
          expect(res).toMatchSnapshot();
        });
        it('handles autoreplace failure', async () => {
          config.upgrades.push({ manager: 'html', branchName: undefined });
          autoReplace.doAutoReplace.mockResolvedValueOnce(null);
          await expect(getUpdatedPackageFiles(config)).rejects.toThrow();
        });
        it('handles autoreplace branch needs update', async () => {
          config.reuseExistingBranch = true;
          config.upgrades.push({ manager: 'html', branchName: undefined });
          autoReplace.doAutoReplace.mockResolvedValueOnce(null);
          autoReplace.doAutoReplace.mockResolvedValueOnce('updated-file');
          const res = await getUpdatedPackageFiles(config);
          expect(res).toMatchSnapshot();
        });
        it('handles empty', async () => {
          const res = await getUpdatedPackageFiles(config);
          expect(res).toMatchSnapshot();
        });
        it('handles null content', async () => {
          config.reuseExistingBranch = true;
          config.upgrades.push({
            manager: 'npm',
          } as never);
          await expect(getUpdatedPackageFiles(config)).rejects.toThrow();
        });
        it('handles content change', async () => {
          config.reuseExistingBranch = true;
          config.upgrades.push({
            manager: 'npm',
          } as never);
          npm.updateDependency.mockReturnValue('some new content');
          const res = await getUpdatedPackageFiles(config);
          expect(res).toMatchSnapshot();
        });
        it('handles lock files', async () => {
          config.reuseExistingBranch = true;
          config.upgrades.push({
            manager: 'composer',
            branchName: undefined,
          });
          autoReplace.doAutoReplace.mockResolvedValueOnce('some new content');
          composer.updateArtifacts.mockResolvedValueOnce([
            {
              file: {
                name: 'composer.json',
                contents: 'some contents',
              },
            },
          ]);
          const res = await getUpdatedPackageFiles(config);
          expect(res).toMatchSnapshot();
        });
        it('handles lockFileMaintenance', async () => {
          config.upgrades.push({
            manager: 'composer',
            updateType: 'lockFileMaintenance',
          } as never);
          composer.updateArtifacts.mockResolvedValueOnce([
            {
              file: {
                name: 'composer.json',
                contents: 'some contents',
              },
            },
          ]);
          const res = await getUpdatedPackageFiles(config);
          expect(res).toMatchSnapshot();
        });
        it('handles lockFileMaintenance error', async () => {
          config.upgrades.push({
            manager: 'composer',
            updateType: 'lockFileMaintenance',
          } as never);
          composer.updateArtifacts.mockResolvedValueOnce([
            {
              artifactError: {
                lockFile: 'composer.lock',
                stderr: 'some error',
              },
            },
          ]);
          const res = await getUpdatedPackageFiles(config);
          expect(res).toMatchSnapshot();
        });
        it('handles lock file errors', async () => {
          config.reuseExistingBranch = true;
          config.upgrades.push({
            manager: 'composer',
            branchName: undefined,
          });
          autoReplace.doAutoReplace.mockResolvedValueOnce('some new content');
          composer.updateArtifacts.mockResolvedValueOnce([
            {
              artifactError: {
                lockFile: 'composer.lock',
                stderr: 'some error',
              },
            },
          ]);
          const res = await getUpdatedPackageFiles(config);
          expect(res).toMatchSnapshot();
        });
        it('handles git submodules', async () => {
          config.upgrades.push({
            manager: 'git-submodules',
            datasource: datasourceGitSubmodules.id,
          } as never);
          gitSubmodules.updateDependency.mockResolvedValueOnce('existing content');
          const res = await getUpdatedPackageFiles(config);
          expect(res).toMatchSnapshot();
        });
      });
    });