import { parse, defaultExtension, Extension } from './extension'

/**
 * Parseのテスト
 */
describe('parse', () => {
  type TestData = {
    id: string
    args: {
      extension: any
    }
    exp: Extension
  }

  const testDatas: TestData[] = [
    {
      id: 'set extension to null',
      args: {
        extension: null,
      },
      exp: defaultExtension,
    },
    {
      id: 'set extension to undefined',
      args: {
        extension: undefined,
      },
      exp: defaultExtension,
    },
    {
      id: 'set extension to number',
      args: {
        extension: 123,
      },
      exp: defaultExtension,
    },
    {
      id: 'set extension to empty object',
      args: {
        extension: {},
      },
      exp: defaultExtension,
    },
    {
      id: 'set extension to additional property',
      args: {
        extension: {
          additionalProperty: 'additionalProperty',
        },
      },
      exp: { ...defaultExtension },
    },
  ]

  testDatas.forEach(({ id, args: { extension }, exp }) => {
    test(id, () => {
      expect(parse(extension)).toStrictEqual(exp)
    })
  })
})
