UNPKG

apibuilder-js

Version:

A reference implementation of API Builder for JavaScript

60 lines (50 loc) 2.46 kB
import faker from 'faker'; import keyBy from 'lodash/keyBy'; import { ApiBuilderEnum, ApiBuilderEnumValue, ApiBuilderService } from '../../src'; import { createMockDeprecation, createMockEnum } from '../helpers/mocks'; import apidocApi from '../fixtures/apidocApi'; const service = new ApiBuilderService(apidocApi); const enumerations = keyBy(apidocApi.enums, 'name'); describe('ApiBuilderEnum', () => { test('should have static function to create enumeration from schema declaration', () => { const instance = ApiBuilderEnum.fromConfig(enumerations.visibility, service); expect(instance).toBeInstanceOf(ApiBuilderEnum); }); test('should define enum type with values', () => { const instance = ApiBuilderEnum.fromConfig(enumerations.visibility, service); instance.values.forEach((value) => { expect(value).toBeInstanceOf(ApiBuilderEnumValue); }); }); test('should have pascal case nickname', () => { const instance = ApiBuilderEnum.fromConfig(enumerations.original_type, service); expect(instance).toHaveProperty('nickname', 'OriginalType'); }); test('should be deprecated', () => { const enumeration = createMockEnum({ deprecation: createMockDeprecation() }); const instance = ApiBuilderEnum.fromConfig(enumeration, service); expect(instance).toHaveProperty('isDeprecated', true); }); test('should not be deprecated', () => { const enumeration = createMockEnum(); const instance = ApiBuilderEnum.fromConfig(enumeration, service); expect(instance).toHaveProperty('isDeprecated', false); }); test('should have deprecation reason', () => { const deprecationReason = faker.lorem.sentence(); const enumeration = createMockEnum({ deprecation: createMockDeprecation({ description: deprecationReason, }), }); const instance = ApiBuilderEnum.fromConfig(enumeration, service); expect(instance).toHaveProperty('deprecationReason', deprecationReason); }); test('should define other properties from enum schema', () => { const instance = ApiBuilderEnum.fromConfig(enumerations.visibility, service); expect(instance).toHaveProperty('name', enumerations.visibility.name); expect(instance).toHaveProperty('plural', enumerations.visibility.plural); expect(instance).toHaveProperty('description', enumerations.visibility.description); expect(instance).toHaveProperty('attributes', enumerations.visibility.attributes); }); });