UNPKG

box-node-sdk

Version:

Official SDK for Box Platform APIs

393 lines (392 loc) 16.2 kB
import { serializeMetadataTaxonomy } from '@/schemas/metadataTaxonomy'; import { deserializeMetadataTaxonomy } from '@/schemas/metadataTaxonomy'; import { serializeCreateMetadataTaxonomyRequestBody } from '@/managers/metadataTaxonomies'; import { deserializeCreateMetadataTaxonomyRequestBody } from '@/managers/metadataTaxonomies'; import { serializeMetadataTaxonomies } from '@/schemas/metadataTaxonomies'; import { deserializeMetadataTaxonomies } from '@/schemas/metadataTaxonomies'; import { serializeUpdateMetadataTaxonomyRequestBody } from '@/managers/metadataTaxonomies'; import { deserializeUpdateMetadataTaxonomyRequestBody } from '@/managers/metadataTaxonomies'; import { serializeMetadataTaxonomyLevels } from '@/schemas/metadataTaxonomyLevels'; import { deserializeMetadataTaxonomyLevels } from '@/schemas/metadataTaxonomyLevels'; import { serializeMetadataTaxonomyLevel } from '@/schemas/metadataTaxonomyLevel'; import { deserializeMetadataTaxonomyLevel } from '@/schemas/metadataTaxonomyLevel'; import { serializeUpdateMetadataTaxonomyLevelByIdRequestBody } from '@/managers/metadataTaxonomies'; import { deserializeUpdateMetadataTaxonomyLevelByIdRequestBody } from '@/managers/metadataTaxonomies'; import { serializeAddMetadataTaxonomyLevelRequestBody } from '@/managers/metadataTaxonomies'; import { deserializeAddMetadataTaxonomyLevelRequestBody } from '@/managers/metadataTaxonomies'; import { serializeMetadataTaxonomyNode } from '@/schemas/metadataTaxonomyNode'; import { deserializeMetadataTaxonomyNode } from '@/schemas/metadataTaxonomyNode'; import { serializeCreateMetadataTaxonomyNodeRequestBody } from '@/managers/metadataTaxonomies'; import { deserializeCreateMetadataTaxonomyNodeRequestBody } from '@/managers/metadataTaxonomies'; import { serializeMetadataTaxonomyNodes } from '@/schemas/metadataTaxonomyNodes'; import { deserializeMetadataTaxonomyNodes } from '@/schemas/metadataTaxonomyNodes'; import { serializeUpdateMetadataTaxonomyNodeRequestBody } from '@/managers/metadataTaxonomies'; import { deserializeUpdateMetadataTaxonomyNodeRequestBody } from '@/managers/metadataTaxonomies'; import { serializeMetadataTemplate } from '@/schemas/metadataTemplate'; import { deserializeMetadataTemplate } from '@/schemas/metadataTemplate'; import { serializeCreateMetadataTemplateRequestBody } from '@/managers/metadataTemplates'; import { deserializeCreateMetadataTemplateRequestBody } from '@/managers/metadataTemplates'; import { serializeCreateMetadataTemplateRequestBodyFieldsField } from '@/managers/metadataTemplates'; import { deserializeCreateMetadataTemplateRequestBodyFieldsField } from '@/managers/metadataTemplates'; import { serializeCreateMetadataTemplateRequestBodyFieldsTypeField } from '@/managers/metadataTemplates'; import { deserializeCreateMetadataTemplateRequestBodyFieldsTypeField } from '@/managers/metadataTemplates'; import { serializeCreateMetadataTemplateRequestBodyFieldsOptionsRulesField } from '@/managers/metadataTemplates'; import { deserializeCreateMetadataTemplateRequestBodyFieldsOptionsRulesField } from '@/managers/metadataTemplates'; import { serializeDeleteMetadataTemplateScope } from '@/managers/metadataTemplates'; import { deserializeDeleteMetadataTemplateScope } from '@/managers/metadataTemplates'; import { UpdateMetadataTaxonomyNodeOptionalsInput } from '@/managers/metadataTaxonomies'; import { UpdateMetadataTaxonomyNodeOptionals } from '@/managers/metadataTaxonomies'; import { BoxClient } from '@/client'; import { MetadataTaxonomy } from '@/schemas/metadataTaxonomy'; import { CreateMetadataTaxonomyRequestBody } from '@/managers/metadataTaxonomies'; import { MetadataTaxonomies } from '@/schemas/metadataTaxonomies'; import { UpdateMetadataTaxonomyRequestBody } from '@/managers/metadataTaxonomies'; import { MetadataTaxonomyLevels } from '@/schemas/metadataTaxonomyLevels'; import { MetadataTaxonomyLevel } from '@/schemas/metadataTaxonomyLevel'; import { UpdateMetadataTaxonomyLevelByIdRequestBody } from '@/managers/metadataTaxonomies'; import { AddMetadataTaxonomyLevelRequestBody } from '@/managers/metadataTaxonomies'; import { MetadataTaxonomyNode } from '@/schemas/metadataTaxonomyNode'; import { CreateMetadataTaxonomyNodeRequestBody } from '@/managers/metadataTaxonomies'; import { MetadataTaxonomyNodes } from '@/schemas/metadataTaxonomyNodes'; import { UpdateMetadataTaxonomyNodeRequestBody } from '@/managers/metadataTaxonomies'; import { MetadataTemplate } from '@/schemas/metadataTemplate'; import { CreateMetadataTemplateRequestBody } from '@/managers/metadataTemplates'; import { CreateMetadataTemplateRequestBodyFieldsField } from '@/managers/metadataTemplates'; import { CreateMetadataTemplateRequestBodyFieldsTypeField } from '@/managers/metadataTemplates'; import { CreateMetadataTemplateRequestBodyFieldsOptionsRulesField } from '@/managers/metadataTemplates'; import { DeleteMetadataTemplateScope } from '@/managers/metadataTemplates'; import { getUuid } from '@/internal/utils'; import { getEnvVar } from '@/internal/utils'; import { delayInSeconds } from '@/internal/utils'; import { getDefaultClient } from './commons'; import { toString } from '@/internal/utils'; import { sdToJson } from '@/serialization/json'; import { SerializedData } from '@/serialization/json'; import { sdIsEmpty } from '@/serialization/json'; import { sdIsBoolean } from '@/serialization/json'; import { sdIsNumber } from '@/serialization/json'; import { sdIsString } from '@/serialization/json'; import { sdIsList } from '@/serialization/json'; import { sdIsMap } from '@/serialization/json'; export const client: BoxClient = getDefaultClient(); test('testMetadataTaxonomiesCRUD', async function testMetadataTaxonomiesCRUD(): Promise<any> { const namespace: string = ''.concat( 'enterprise_', getEnvVar('ENTERPRISE_ID'), ) as string; const uuid: string = getUuid(); const taxonomyKey: string = ''.concat('geography', uuid) as string; const displayName: string = ''.concat('Geography Taxonomy', uuid) as string; const createdTaxonomy: MetadataTaxonomy = await client.metadataTaxonomies.createMetadataTaxonomy({ displayName: displayName, key: taxonomyKey, namespace: namespace, } satisfies CreateMetadataTaxonomyRequestBody); if (!(createdTaxonomy.displayName == displayName)) { throw new Error('Assertion failed'); } if (!(createdTaxonomy.namespace == namespace)) { throw new Error('Assertion failed'); } const taxonomies: MetadataTaxonomies = await client.metadataTaxonomies.getMetadataTaxonomies(namespace); if (!(taxonomies.entries!.length > 0)) { throw new Error('Assertion failed'); } if (!(taxonomies.entries![0].namespace == namespace)) { throw new Error('Assertion failed'); } const updatedDisplayName: string = ''.concat( 'Geography Taxonomy UPDATED', uuid, ) as string; const updatedTaxonomy: MetadataTaxonomy = await client.metadataTaxonomies.updateMetadataTaxonomy( namespace, taxonomyKey, { displayName: updatedDisplayName, } satisfies UpdateMetadataTaxonomyRequestBody, ); if (!(updatedTaxonomy.displayName == updatedDisplayName)) { throw new Error('Assertion failed'); } if (!(updatedTaxonomy.namespace == namespace)) { throw new Error('Assertion failed'); } if (!(updatedTaxonomy.id == createdTaxonomy.id)) { throw new Error('Assertion failed'); } const getTaxonomy: MetadataTaxonomy = await client.metadataTaxonomies.getMetadataTaxonomyByKey( namespace, taxonomyKey, ); if (!(getTaxonomy.displayName == updatedDisplayName)) { throw new Error('Assertion failed'); } if (!(getTaxonomy.namespace == namespace)) { throw new Error('Assertion failed'); } if (!(getTaxonomy.id == createdTaxonomy.id)) { throw new Error('Assertion failed'); } await client.metadataTaxonomies.deleteMetadataTaxonomy( namespace, taxonomyKey, ); await expect(async () => { await client.metadataTaxonomies.getMetadataTaxonomyByKey( namespace, taxonomyKey, ); }).rejects.toThrow(); }); test('testMetadataTaxonomiesNodes', async function testMetadataTaxonomiesNodes(): Promise<any> { const namespace: string = ''.concat( 'enterprise_', getEnvVar('ENTERPRISE_ID'), ) as string; const uuid: string = getUuid(); const taxonomyKey: string = ''.concat('geography', uuid) as string; const displayName: string = ''.concat('Geography Taxonomy', uuid) as string; const createdTaxonomy: MetadataTaxonomy = await client.metadataTaxonomies.createMetadataTaxonomy({ displayName: displayName, key: taxonomyKey, namespace: namespace, } satisfies CreateMetadataTaxonomyRequestBody); if (!(createdTaxonomy.displayName == displayName)) { throw new Error('Assertion failed'); } if (!(createdTaxonomy.namespace == namespace)) { throw new Error('Assertion failed'); } const taxonomyLevels: MetadataTaxonomyLevels = await client.metadataTaxonomies.createMetadataTaxonomyLevel( namespace, taxonomyKey, [ { displayName: 'Continent', description: 'Continent Level', } satisfies MetadataTaxonomyLevel, { displayName: 'Country', description: 'Country Level', } satisfies MetadataTaxonomyLevel, ], ); if (!(taxonomyLevels.entries!.length == 2)) { throw new Error('Assertion failed'); } if (!(taxonomyLevels.entries![0].displayName == 'Continent')) { throw new Error('Assertion failed'); } if (!(taxonomyLevels.entries![1].displayName == 'Country')) { throw new Error('Assertion failed'); } const updatedTaxonomyLevels: MetadataTaxonomyLevel = await client.metadataTaxonomies.updateMetadataTaxonomyLevelById( namespace, taxonomyKey, 1, { displayName: 'Continent UPDATED', description: 'Continent Level UPDATED', } satisfies UpdateMetadataTaxonomyLevelByIdRequestBody, ); if (!(updatedTaxonomyLevels.displayName == 'Continent UPDATED')) { throw new Error('Assertion failed'); } if (!(updatedTaxonomyLevels.description == 'Continent Level UPDATED')) { throw new Error('Assertion failed'); } if (!(updatedTaxonomyLevels.level == taxonomyLevels.entries![0].level)) { throw new Error('Assertion failed'); } const taxonomyLevelsAfterAddition: MetadataTaxonomyLevels = await client.metadataTaxonomies.addMetadataTaxonomyLevel( namespace, taxonomyKey, { displayName: 'Region', description: 'Region Description', } satisfies AddMetadataTaxonomyLevelRequestBody, ); if (!(taxonomyLevelsAfterAddition.entries!.length == 3)) { throw new Error('Assertion failed'); } if (!(taxonomyLevelsAfterAddition.entries![2].displayName == 'Region')) { throw new Error('Assertion failed'); } const taxonomyLevelsAfterDeletion: MetadataTaxonomyLevels = await client.metadataTaxonomies.deleteMetadataTaxonomyLevel( namespace, taxonomyKey, ); if (!(taxonomyLevelsAfterDeletion.entries!.length == 2)) { throw new Error('Assertion failed'); } if ( !( taxonomyLevelsAfterDeletion.entries![0].displayName == 'Continent UPDATED' ) ) { throw new Error('Assertion failed'); } if (!(taxonomyLevelsAfterDeletion.entries![1].displayName == 'Country')) { throw new Error('Assertion failed'); } const continentNode: MetadataTaxonomyNode = await client.metadataTaxonomies.createMetadataTaxonomyNode( namespace, taxonomyKey, { displayName: 'Europe', level: 1, } satisfies CreateMetadataTaxonomyNodeRequestBody, ); if (!(continentNode.displayName == 'Europe')) { throw new Error('Assertion failed'); } if (!(continentNode.level == 1)) { throw new Error('Assertion failed'); } const countryNode: MetadataTaxonomyNode = await client.metadataTaxonomies.createMetadataTaxonomyNode( namespace, taxonomyKey, { displayName: 'Poland', level: 2, parentId: continentNode.id, } satisfies CreateMetadataTaxonomyNodeRequestBody, ); if (!(countryNode.displayName == 'Poland')) { throw new Error('Assertion failed'); } if (!(countryNode.level == 2)) { throw new Error('Assertion failed'); } if (!(countryNode.parentId == continentNode.id)) { throw new Error('Assertion failed'); } await delayInSeconds(5); const allNodes: MetadataTaxonomyNodes = await client.metadataTaxonomies.getMetadataTaxonomyNodes( namespace, taxonomyKey, ); if (!(allNodes.entries!.length == 2)) { throw new Error('Assertion failed'); } const updatedCountryNode: MetadataTaxonomyNode = await client.metadataTaxonomies.updateMetadataTaxonomyNode( namespace, taxonomyKey, countryNode.id, { requestBody: { displayName: 'Poland UPDATED', } satisfies UpdateMetadataTaxonomyNodeRequestBody, } satisfies UpdateMetadataTaxonomyNodeOptionalsInput, ); if (!(updatedCountryNode.displayName == 'Poland UPDATED')) { throw new Error('Assertion failed'); } if (!(updatedCountryNode.level == 2)) { throw new Error('Assertion failed'); } if (!(updatedCountryNode.parentId == countryNode.parentId)) { throw new Error('Assertion failed'); } if (!(updatedCountryNode.id == countryNode.id)) { throw new Error('Assertion failed'); } const getCountryNode: MetadataTaxonomyNode = await client.metadataTaxonomies.getMetadataTaxonomyNodeById( namespace, taxonomyKey, countryNode.id, ); if (!(getCountryNode.displayName == 'Poland UPDATED')) { throw new Error('Assertion failed'); } if (!(getCountryNode.id == countryNode.id)) { throw new Error('Assertion failed'); } const metadataTemplateKey: string = ''.concat( 'templateKey', getUuid(), ) as string; const metadataTemplate: MetadataTemplate = await client.metadataTemplates.createMetadataTemplate({ scope: 'enterprise', displayName: metadataTemplateKey, templateKey: metadataTemplateKey, fields: [ { type: 'taxonomy' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'taxonomy', displayName: 'taxonomy', taxonomyKey: taxonomyKey, namespace: namespace, optionsRules: { multiSelect: true, selectableLevels: [1], } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsRulesField, } satisfies CreateMetadataTemplateRequestBodyFieldsField, ], } satisfies CreateMetadataTemplateRequestBody); if (!(metadataTemplate.templateKey == metadataTemplateKey)) { throw new Error('Assertion failed'); } if (!(metadataTemplate.displayName == metadataTemplateKey)) { throw new Error('Assertion failed'); } if (!(metadataTemplate.fields!.length == 1)) { throw new Error('Assertion failed'); } if (!((toString(metadataTemplate.fields![0].type) as string) == 'taxonomy')) { throw new Error('Assertion failed'); } const options: MetadataTaxonomyNodes = await client.metadataTaxonomies.getMetadataTemplateFieldOptions( namespace, metadataTemplateKey, 'taxonomy', ); if (!(options.entries!.length == 1)) { throw new Error('Assertion failed'); } await client.metadataTemplates.deleteMetadataTemplate( 'enterprise' as DeleteMetadataTemplateScope, metadataTemplateKey, ); await client.metadataTaxonomies.deleteMetadataTaxonomyNode( namespace, taxonomyKey, countryNode.id, ); await client.metadataTaxonomies.deleteMetadataTaxonomyNode( namespace, taxonomyKey, continentNode.id, ); await delayInSeconds(5); const allNodesAfterDeletion: MetadataTaxonomyNodes = await client.metadataTaxonomies.getMetadataTaxonomyNodes( namespace, taxonomyKey, ); if (!(allNodesAfterDeletion.entries!.length == 0)) { throw new Error('Assertion failed'); } await client.metadataTaxonomies.deleteMetadataTaxonomy( namespace, taxonomyKey, ); }); export {};