import SdkSettings from '../settings'
import { Context } from '../api'
import { webcrypto } from 'crypto'
import { SDK_VERSION } from '../version'
import { Header } from '../utils/request'
import HttpStatus, { StatusCodes } from 'http-status-codes'

export function makeContext(): Context {
  return {
    url: 'https://this.is.a.test/index.html',
    sessionId: webcrypto.randomUUID(),
    pageSessionId: webcrypto.randomUUID(),
    tracking: true,
    clientId: webcrypto.randomUUID(),
    languageCode: 'en-US',
    enhancedContent: {
      idType: 'MYID',
    },
    version: SDK_VERSION,
    jsSource: 'npm',
  }
}

export function makeSettings(options?: Record<string, unknown>): SdkSettings {
  return {
    clientId: webcrypto.randomUUID(),
    languageCode: 'en-US',
    enhancedContent: {
      idType: 'MYID',
    },
    tracking: false,
    staging: false,
    ...options,
  }
}
export function makeResponse(data: string, status: StatusCodes = HttpStatus.OK): Response {
  return new Response(data, {
    status,
    headers: {
      [Header.ContentLength]: `${data.length}`,
    },
  })
}
