/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */

import {trigger} from '@angular/animations';

import {TriggerAst} from '../src/dsl/animation_ast';
import {buildAnimationAst} from '../src/dsl/animation_ast_builder';
import {AnimationTrigger, buildTrigger} from '../src/dsl/animation_trigger';
import {NoopAnimationStyleNormalizer} from '../src/dsl/style_normalization/animation_style_normalizer';
import {triggerParsingFailed} from '../src/error_helpers';
import {triggerParsingWarnings} from '../src/warning_helpers';
import {MockAnimationDriver} from '../testing/src/mock_animation_driver';

export function makeTrigger(
  name: string,
  steps: any,
  skipErrors: boolean = false,
): AnimationTrigger {
  const driver = new MockAnimationDriver();
  const errors: Error[] = [];
  const warnings: string[] = [];
  const triggerData = trigger(name, steps);
  const triggerAst = buildAnimationAst(driver, triggerData, errors, warnings) as TriggerAst;
  if (!skipErrors && errors.length) {
    throw triggerParsingFailed(name, errors);
  }
  if (warnings.length) {
    triggerParsingWarnings(name, warnings);
  }
  return buildTrigger(name, triggerAst, new NoopAnimationStyleNormalizer());
}
