UNPKG

@chatterton/angular2-schema-form

Version:

Angular2 Schema Form (DISCLAIMER: it is not related to angular-schema-form)

100 lines (76 loc) 2.58 kB
import { AtomicProperty } from './atomicproperty'; import { FormProperty } from './formproperty'; import { NumberProperty } from './numberproperty'; import { ValidatorRegistry } from './validatorregistry'; import { ZSchemaValidatorFactory } from '../schemavalidatorfactory'; class AtomicPropertyImpl extends AtomicProperty { protected fallbackValue() { return Symbol(); } } describe('Atomic properties', () => { let A_SCHEMA_VALIDATOR_FACTORY = new ZSchemaValidatorFactory(); let A_VALIDATOR_REGISTRY = new ValidatorRegistry(); describe('AtomicProperty', () => { let THE_PROPERTY_SCHEMA = {}; let atomicProperty: AtomicProperty; beforeEach(() => { atomicProperty = new AtomicPropertyImpl(A_SCHEMA_VALIDATOR_FACTORY, A_VALIDATOR_REGISTRY, THE_PROPERTY_SCHEMA, null, ''); }); it('reset with no argument and default value in schema should use the default value', () => { let THE_DEFAULT_VALUE = Symbol(); let A_SCHEMA_WITH_DEFAULT = {'default': THE_DEFAULT_VALUE }; let atomicPropertyWithDefault = new AtomicPropertyImpl( A_SCHEMA_VALIDATOR_FACTORY, A_VALIDATOR_REGISTRY, A_SCHEMA_WITH_DEFAULT, null, '' ); atomicPropertyWithDefault.reset(); expect(atomicPropertyWithDefault.value).toBe(THE_DEFAULT_VALUE); }); it('reset with no argument, and no default value in schema use property\'s type fallback default', () => { let fallback = Symbol(); spyOn(atomicProperty, 'fallbackValue').and.returnValue(fallback); atomicProperty.reset(); expect(atomicProperty.value).toBe(fallback); }); }); describe('NumberProperty', () => { let AN_INT_PROPERTY_SCHEMA_WITH_MINIMUM = {'type': 'number', 'minimum': 10}; let AN_INT_PROPERTY_SCHEMA_WITHOUT_MINIMUM = {'type': 'number'}; it('with minimum in schema should fallback to minimum on reset', () => { let property = new NumberProperty( A_SCHEMA_VALIDATOR_FACTORY, A_VALIDATOR_REGISTRY, AN_INT_PROPERTY_SCHEMA_WITH_MINIMUM, null, '' ); property.reset(); expect(property.value).toBe(AN_INT_PROPERTY_SCHEMA_WITH_MINIMUM.minimum); }); it('without minimum in schema should fallback to 0 on reset', () => { let property = new NumberProperty( A_SCHEMA_VALIDATOR_FACTORY, A_VALIDATOR_REGISTRY, AN_INT_PROPERTY_SCHEMA_WITHOUT_MINIMUM, null, '' ); property.reset(); expect(property.value).toBe(0); }); }); });