import { SchemaMigrationV1 } from '../../src/schemas/share-v1';

const V0 = {
  language: 'language',
  code: 'code',
  entrypoint: 'entrypoint',
  parameters: 'parameters',
  storage: 'storage'
};

const V1 = {
  version: 'v1',
  state: {
    editor: {
      language: 'language',
      code: 'code'
    },
    compile: {
      entrypoint: 'entrypoint'
    },
    dryRun: {
      entrypoint: 'entrypoint',
      parameters: 'parameters',
      storage: 'storage'
    },
    deploy: {
      entrypoint: 'entrypoint',
      storage: 'storage',
      useTezBridge: false
    },
    evaluateFunction: {
      entrypoint: 'entrypoint',
      parameters: 'parameters'
    },
    evaluateValue: {
      entrypoint: 'entrypoint'
    }
  }
};

describe('Share Schema Migration V1', () => {
  it('should forward migrate v0 to v1', () => {
    expect(new SchemaMigrationV1().forward(V0)).toEqual(V1);
  });

  it('should forward migrate v1 to v1', () => {
    expect(new SchemaMigrationV1().forward(V1)).toEqual(V1);
  });

  it('should throw error on unknown version', () => {
    function forwardUnknownVersion() {
      new SchemaMigrationV1().forward({
        a: 0
      });
    }

    expect(forwardUnknownVersion).toThrowError();
  });
});