/**
 * Copyright IBM Corp. 2024, 2025
 */

import { Assertion as KindAssertion } from '@apic/api-model/test/Assertion.js';
import { AssertionSchema } from '../schemas/assertions.schema.js';
import { transformZodErrors } from '../helpers/zod-error-formatter.helper.js';

export type Assertion = KindAssertion;

export class AssertionFactory {
  create(raw: any): Assertion {
    let parsed;
    try {
      parsed = AssertionSchema.parse(raw);
    } catch (error) {
      throw transformZodErrors(error);
    }
    const model = {
      kind: parsed.kind,
      metadata: parsed.metadata,
      spec: parsed.spec,
    };
    return model;
  }
}
