text: import ImageTag from './image-tag';
  
  describe('UnityImageVersion', () => {
    const some = {
      repository: 'test1',
      name: 'test2',
      version: '2099.9.f9f9',
      platform: 'Test',
      builderPlatform: '',
    };
  
    const defaults = {
      repository: 'gableroux',
      name: 'unity3d',
      image: 'gableroux/unity3d',
    };
  
    describe('constructor', () => {
      it('can be called', () => {
        const { platform } = some;
        expect(() => new ImageTag({ platform })).not.toThrow();
      });
  
      it('accepts parameters and sets the right properties', () => {
        const image = new ImageTag(some);
  
        expect(image.repository).toStrictEqual(some.repository);
        expect(image.name).toStrictEqual(some.name);
        expect(image.version).toStrictEqual(some.version);
        expect(image.platform).toStrictEqual(some.platform);
        expect(image.builderPlatform).toStrictEqual(some.builderPlatform);
      });
  
      test.each(['2000.0.0f0', '2011.1.11f1'])('accepts %p version format', (version) => {
        expect(() => new ImageTag({ version, platform: some.platform })).not.toThrow();
      });
  
      test.each(['some version', '', 1])('throws for incorrect versions %p', (version) => {
        const { platform } = some;
        expect(() => new ImageTag({ version, platform })).toThrow();
      });
  
      test.each([undefined, 'nonExisting'])('throws for unsupported target %p', (platform) => {
        expect(() => new ImageTag({ platform })).toThrow();
      });
    });
  
    describe('toString', () => {
      it('returns the correct version', () => {
        const image = new ImageTag({ version: '2099.1.1111', platform: some.platform });
  
        expect(image.toString()).toStrictEqual(`${defaults.image}:2099.1.1111`);
      });
  
      it('returns the specific build platform', () => {
        const image = new ImageTag({ version: '2019.2.11f1', platform: 'WebGL' });
  
        expect(image.toString()).toStrictEqual(`${defaults.image}:2019.2.11f1-webgl`);
      });
  
      it('returns no specific build platform for generic targetPlatforms', () => {
        const image = new ImageTag({ platform: 'NoTarget' });
  
        expect(image.toString()).toStrictEqual(`${defaults.image}:2019.2.11f1`);
      });
    });
  });
  