import { extractPackageFile } from '.';

describe('modules/manager/copier/extract', () => {
  describe('extractPackageFile()', () => {
    it('extracts repository and version from .copier-answers.yml', () => {
      const content = `
        _commit: v1.0.0
        _src_path: https://github.com/username/template-repo
      `;
      const result = extractPackageFile(content);
      expect(result).toEqual({
        deps: [
          {
            depName: 'https://github.com/username/template-repo',
            packageName: 'https://github.com/username/template-repo',
            currentValue: 'v1.0.0',
            datasource: 'git-tags',
            depType: 'template',
          },
        ],
      });
    });

    it('returns null for invalid .copier-answers.yml', () => {
      const content = `
        not_valid:
          key: value
      `;
      const result = extractPackageFile(content);
      expect(result).toBeNull();
    });

    it('returns null for invalid _src_path', () => {
      const content = `
        _commit: v1.0.0
        _src_path: notaurl
      `;
      const result = extractPackageFile(content);
      expect(result).toBeNull();
    });

    it('returns null for missing _commit field', () => {
      const content = `
        _src_path: https://github.com/username/template-repo
      `;
      const result = extractPackageFile(content);
      expect(result).toBeNull();
    });

    it('returns null for missing _src_path field', () => {
      const content = `
        _commit: v1.0.0
      `;
      const result = extractPackageFile(content);
      expect(result).toBeNull();
    });
  });
});