Skip to content

Commit

Permalink
feat(api): Address small comments
Browse files Browse the repository at this point in the history
  • Loading branch information
kajarosz committed Aug 22, 2024
1 parent a38a799 commit 23d1f3c
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 54 deletions.
35 changes: 12 additions & 23 deletions src/api/Metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ import type {
MetadataFields,
MetadataSuggestion,
MetadataTemplateInstance,
MetadataInstanceTemplateField,
MetadataTemplateInstanceField,
} from '../common/types/metadata';
import type { BoxItem } from '../common/types/core';
import type APICache from '../utils/Cache';
Expand Down Expand Up @@ -360,32 +360,25 @@ class Metadata extends File {
* @return {Object} metadata template instance
*/
createTemplateInstance(instance: MetadataInstanceV2, template: MetadataTemplate): MetadataTemplateInstance {
const metadataFields: MetadataInstanceTemplateField[] = [];
const fields: MetadataTemplateInstanceField[] = [];

// templateKey is unique identifier for the template,
// but its value is set to 'properties' if instance was created using Custom Metadata option instead of template
const isCustomMetadataInstance = template.templateKey !== METADATA_TEMPLATE_PROPERTIES;
if (isCustomMetadataInstance) {
// Get Metadata Fields for Instances created from predefinied template
const isInstanceFromTemplate = template.templateKey !== METADATA_TEMPLATE_PROPERTIES;
if (isInstanceFromTemplate) {
// Get Metadata Fields for Instances created from predefined template
const templateFields = template.fields || [];
templateFields.forEach(async field => {
metadataFields.push({
description: field.description,
displayName: field.displayName,
hidden: field.hidden,
id: field.id,
key: field.key,
options: field.options,
type: field.type,
templateFields.forEach(field => {
fields.push({
...field,
value: instance[field.key],
});
});
} else {
// Get Metadata Fields for Custom Instances
Object.keys(instance).forEach(key => {
if (!key.startsWith('$')) {
// $FlowFixMe
metadataFields.push({
fields.push({
key,
type: 'string',
value: instance[key],
Expand All @@ -395,12 +388,8 @@ class Metadata extends File {
}

return {
displayName: template.displayName,
hidden: template.hidden,
id: template.id,
metadataFields,
scope: template.scope,
templateKey: template.templateKey,
...template,
fields,
};
}

Expand Down Expand Up @@ -445,7 +434,7 @@ class Metadata extends File {
/**
* API for getting metadata editors
*
* @param file
* @param {Object} file
* @param {Function} successCallback - Success callback
* @param {Function} errorCallback - Error callback
* @param {boolean} hasMetadataFeature - metadata feature check
Expand Down
34 changes: 8 additions & 26 deletions src/api/__tests__/Metadata.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ describe('api/Metadata', () => {
displayName: 'Test template',
hidden: undefined,
id: '123456',
metadataFields: [
fields: [
{
description: 'Test description',
displayName: 'Test string field',
Expand Down Expand Up @@ -239,7 +239,7 @@ describe('api/Metadata', () => {
displayName: 'Test template',
hidden: undefined,
id: '123456',
metadataFields: [
fields: [
{
key: 'testCustomField',
type: 'string',
Expand Down Expand Up @@ -788,10 +788,7 @@ describe('api/Metadata', () => {
metadata.getTemplateInstances = jest.fn().mockResolvedValueOnce('templateInstances');
metadata.getCustomPropertiesTemplate = jest.fn().mockReturnValueOnce('custom');
metadata.getUserAddableTemplates = jest.fn().mockReturnValueOnce('templates');
metadata.getTemplates = jest
.fn()
.mockResolvedValueOnce('global')
.mockResolvedValueOnce('enterprise');
metadata.getTemplates = jest.fn().mockResolvedValueOnce('global').mockResolvedValueOnce('enterprise');
metadata.extractClassification = jest.fn().mockReturnValueOnce('filteredInstances');

await metadata.getMetadata(file, jest.fn(), jest.fn(), true);
Expand Down Expand Up @@ -846,10 +843,7 @@ describe('api/Metadata', () => {
metadata.getTemplateInstances = jest.fn().mockResolvedValueOnce('templateInstances');
metadata.getCustomPropertiesTemplate = jest.fn().mockReturnValueOnce('custom');
metadata.getUserAddableTemplates = jest.fn().mockReturnValueOnce('templates');
metadata.getTemplates = jest
.fn()
.mockResolvedValueOnce('global')
.mockResolvedValueOnce('enterprise');
metadata.getTemplates = jest.fn().mockResolvedValueOnce('global').mockResolvedValueOnce('enterprise');
metadata.extractClassification = jest.fn().mockReturnValueOnce('filteredInstances');

await metadata.getMetadata(file, jest.fn(), jest.fn(), true, {}, true);
Expand Down Expand Up @@ -905,10 +899,7 @@ describe('api/Metadata', () => {
metadata.getTemplateInstances = jest.fn().mockResolvedValueOnce('templateInstances');
metadata.getCustomPropertiesTemplate = jest.fn().mockReturnValueOnce('custom');
metadata.getUserAddableTemplates = jest.fn().mockReturnValueOnce('templates');
metadata.getTemplates = jest
.fn()
.mockResolvedValueOnce('global')
.mockResolvedValueOnce('enterprise');
metadata.getTemplates = jest.fn().mockResolvedValueOnce('global').mockResolvedValueOnce('enterprise');
metadata.extractClassification = jest.fn().mockReturnValueOnce('filteredInstances');

await metadata.getMetadata(file, jest.fn(), jest.fn(), true, { refreshCache: true });
Expand Down Expand Up @@ -966,10 +957,7 @@ describe('api/Metadata', () => {
metadata.getTemplateInstances = jest.fn().mockResolvedValueOnce('templateInstances');
metadata.getCustomPropertiesTemplate = jest.fn().mockReturnValueOnce('custom');
metadata.getUserAddableTemplates = jest.fn().mockReturnValueOnce('templates');
metadata.getTemplates = jest
.fn()
.mockResolvedValueOnce('global')
.mockResolvedValueOnce('enterprise');
metadata.getTemplates = jest.fn().mockResolvedValueOnce('global').mockResolvedValueOnce('enterprise');
metadata.extractClassification = jest.fn().mockReturnValueOnce('filteredInstances');

await metadata.getMetadata(file, jest.fn(), jest.fn(), true, { forceFetch: true });
Expand Down Expand Up @@ -1026,10 +1014,7 @@ describe('api/Metadata', () => {
metadata.getTemplateInstances = jest.fn().mockResolvedValueOnce('templateInstances');
metadata.getCustomPropertiesTemplate = jest.fn().mockReturnValueOnce('custom');
metadata.getUserAddableTemplates = jest.fn().mockReturnValueOnce('templates');
metadata.getTemplates = jest
.fn()
.mockResolvedValueOnce('global')
.mockResolvedValueOnce('enterprise');
metadata.getTemplates = jest.fn().mockResolvedValueOnce('global').mockResolvedValueOnce('enterprise');
metadata.extractClassification = jest.fn().mockReturnValueOnce('filteredInstances');

await metadata.getMetadata(file, jest.fn(), jest.fn(), false);
Expand Down Expand Up @@ -1124,10 +1109,7 @@ describe('api/Metadata', () => {
metadata.getTemplateInstances = jest.fn().mockResolvedValueOnce('templateInstances');
metadata.getCustomPropertiesTemplate = jest.fn().mockReturnValueOnce('custom');
metadata.getUserAddableTemplates = jest.fn().mockReturnValueOnce('templates');
metadata.getTemplates = jest
.fn()
.mockResolvedValueOnce('global')
.mockResolvedValueOnce('enterprise');
metadata.getTemplates = jest.fn().mockResolvedValueOnce('global').mockResolvedValueOnce('enterprise');
metadata.extractClassification = jest.fn().mockReturnValueOnce('filteredInstances');

await metadata.getMetadata(file, jest.fn(), jest.fn(), true, { forceFetch: true });
Expand Down
10 changes: 5 additions & 5 deletions src/common/types/metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,11 @@ type MetadataSuggestion = {
suggestions: { [key: string]: string | number | string[] },
};

type MetadataInstanceTemplateField = {
type MetadataTemplateInstanceField = {
description?: string,
displayName: string,
displayName?: string,
hidden?: boolean,
id: string,
id?: string,
key: string, // V2
options?: Array<MetadataTemplateFieldOption>, // V3
type: MetadataFieldType,
Expand All @@ -129,13 +129,13 @@ type MetadataTemplateInstance = {
displayName?: string,
hidden?: boolean,
id: string,
metadataFields: MetadataInstanceTemplateField[],
fields: MetadataTemplateInstanceField[],
scope: string,
templateKey: string,
};

export type {
MetadataInstanceTemplateField,
MetadataTemplateInstanceField,
MetadataTemplateInstance,
MetadataFieldType,
MetadataTemplateFieldOption,
Expand Down

0 comments on commit 23d1f3c

Please sign in to comment.