Skip to content
Snippets Groups Projects
index.spec.ts 4.01 KiB
import { loadModules } from '../util/modules';
import { ManagerApi } from './common';
import * as manager from '.';

describe('manager', () => {
  describe('get()', () => {
    it('gets something', () => {
      expect(manager.get('dockerfile', 'extractPackageFile')).not.toBeNull();
    });
  });
  describe('getLanguageList()', () => {
    it('gets', () => {
      expect(manager.getLanguageList()).not.toBeNull();
    });
  });
  describe('getManagerList()', () => {
    it('gets', () => {
      expect(manager.getManagerList()).not.toBeNull();
    });
  });

  it('validates', () => {
    function validate(module: ManagerApi): boolean {
      if (!module.defaultConfig) {
        return false;
      }
      if (!module.extractPackageFile && !module.extractAllPackageFiles) {
        return false;
      }
      return true;
    }
    const mgrs = manager.getManagers();

    const loadedMgr = loadModules(__dirname, validate);
    expect(Array.from(mgrs.keys())).toEqual(Object.keys(loadedMgr));

    for (const name of mgrs.keys()) {
      const mgr = mgrs.get(name);
      expect(validate(mgr)).toBe(true);
    }
  });

  describe('extractAllPackageFiles()', () => {
    it('returns null', async () => {
      manager.getManagers().set('dummy', {
        defaultConfig: {},
      });
      expect(
        await manager.extractAllPackageFiles('unknown', {} as any, [])
      ).toBeNull();
      expect(
        await manager.extractAllPackageFiles('dummy', {} as any, [])
      ).toBeNull();
    });
    it('returns non-null', async () => {
      manager.getManagers().set('dummy', {
        defaultConfig: {},
        extractAllPackageFiles: () => Promise.resolve([]),
      });
      expect(
        await manager.extractAllPackageFiles('dummy', {} as any, [])
      ).not.toBeNull();
    });
    afterEach(() => {
      manager.getManagers().delete('dummy');
    });
  });

  describe('extractPackageFile()', () => {
    it('returns null', () => {
      manager.getManagers().set('dummy', {
        defaultConfig: {},
      });
      expect(manager.extractPackageFile('unknown', null)).toBeNull();
      expect(manager.extractPackageFile('dummy', null)).toBeNull();
    });
    it('returns non-null', () => {
      manager.getManagers().set('dummy', {
        defaultConfig: {},
        extractPackageFile: () => Promise.resolve({ deps: [] }),
      });

      expect(manager.extractPackageFile('dummy', null)).not.toBeNull();
    });
    afterEach(() => {
      manager.getManagers().delete('dummy');
    });
  });

  describe('getPackageUpdates', () => {
    it('returns null', () => {
      manager.getManagers().set('dummy', {
        defaultConfig: {},
      });
      expect(manager.getPackageUpdates('unknown', null)).toBeNull();
      expect(manager.getPackageUpdates('dummy', null)).toBeNull();
    });
    it('returns non-null', () => {
      manager.getManagers().set('dummy', {
        defaultConfig: {},
        getPackageUpdates: () => Promise.resolve([]),
      });
      expect(manager.getPackageUpdates('dummy', {} as any)).not.toBeNull();
    });
    afterEach(() => {
      manager.getManagers().delete('dummy');
    });
  });

  describe('getRangeStrategy', () => {
    it('returns null', () => {
      manager.getManagers().set('dummy', {
        defaultConfig: {},
      });
      expect(
        manager.getRangeStrategy({ manager: 'unknown', rangeStrategy: 'auto' })
      ).toBeNull();
    });
    it('returns non-null', () => {
      manager.getManagers().set('dummy', {
        defaultConfig: {},
        getRangeStrategy: () => 'replace',
      });
      expect(
        manager.getRangeStrategy({ manager: 'dummy', rangeStrategy: 'auto' })
      ).not.toBeNull();

      manager.getManagers().set('dummy', {
        defaultConfig: {},
      });
      expect(
        manager.getRangeStrategy({ manager: 'dummy', rangeStrategy: 'auto' })
      ).not.toBeNull();

      expect(
        manager.getRangeStrategy({ manager: 'dummy', rangeStrategy: 'bump' })
      ).not.toBeNull();
    });
    afterEach(() => {
      manager.getManagers().delete('dummy');
    });
  });
});