import { FormDefinition } from '@features/configure-forms/form.typing'; import { MockModule } from '@yourcause/common/testing'; import { Spec, TestCase } from '@yourcause/test-decorators'; import { DescribeAngularService } from '@yourcause/test-decorators/angular'; import { expect, spy } from 'chai'; import { FlattenFormDefinitionPipe } from './flatten-form-definition.pipe'; @DescribeAngularService(FlattenFormDefinitionPipe, { imports: [MockModule] }) export class FlattenFormDefinitionPipeSpec implements Spec { formDefinition: FormDefinition = { components: [ { type: 'panel', key: '', components: [ { type: 'textfield', label: 'First Name', key: 'firstName' } ] } ] }; @TestCase('should flatten when shouldFlatten is true') test (service: FlattenFormDefinitionPipe) { spy.on(service['componentHelper'], 'flattenFormDefinition', () => []); service.transform(this.formDefinition, true); expect(service['componentHelper'].flattenFormDefinition).to.have.been.called.once; } @TestCase('should not flatten when shouldFlatten is false') testShouldNotFlatten (service: FlattenFormDefinitionPipe) { expect(service.transform(this.formDefinition, false)).to.equal(this.formDefinition.components); } }