UNPKG

box-ui-elements-mlh

Version:
257 lines (240 loc) 8.18 kB
import { FOLDER_FIELDS_TO_FETCH, PREVIEW_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH, TASKS_FIELDS_TO_FETCH, FILE_VERSIONS_FIELDS_TO_FETCH, TASK_ASSIGNMENTS_FIELDS_TO_FETCH, COMMENTS_FIELDS_TO_FETCH, findMissingProperties, fillMissingProperties, fillUserPlaceholder, } from '../fields'; import { FIELD_ID, FIELD_NAME, FIELD_TYPE, FIELD_SIZE, FIELD_PARENT, FIELD_EXTENSION, FIELD_PERMISSIONS, FIELD_ITEM_COLLECTION, FIELD_ITEM_EXPIRATION, FIELD_PATH_COLLECTION, FIELD_CONTENT_CREATED_AT, FIELD_CONTENT_MODIFIED_AT, FIELD_MODIFIED_AT, FIELD_CREATED_AT, FIELD_SHARED_LINK, FIELD_HAS_COLLABORATIONS, FIELD_IS_EXTERNALLY_OWNED, FIELD_CREATED_BY, FIELD_MODIFIED_BY, FIELD_OWNED_BY, FIELD_RESTORED_BY, FIELD_TRASHED_BY, FIELD_DESCRIPTION, FIELD_REPRESENTATIONS, FIELD_SHA1, FIELD_WATERMARK_INFO, FIELD_AUTHENTICATED_DOWNLOAD_URL, FIELD_FILE_VERSION, FIELD_IS_DOWNLOAD_AVAILABLE, FIELD_VERSION_LIMIT, FIELD_VERSION_NUMBER, FIELD_METADATA_SKILLS, FIELD_TASK_ASSIGNMENT_COLLECTION, FIELD_IS_COMPLETED, FIELD_MESSAGE, FIELD_TAGGED_MESSAGE, FIELD_DUE_AT, FIELD_RESTORED_AT, FIELD_TRASHED_AT, FIELD_ASSIGNED_TO, FIELD_STATUS, FIELD_RESTORED_FROM, FIELD_RETENTION, FIELD_URL, FIELD_UPLOADER_DISPLAY_NAME, PLACEHOLDER_USER, } from '../../constants'; describe('util/fields', () => { test('should fetch correct folder fields', () => { expect(FOLDER_FIELDS_TO_FETCH).toEqual([ FIELD_ID, FIELD_NAME, FIELD_TYPE, FIELD_SIZE, FIELD_PARENT, FIELD_EXTENSION, FIELD_PERMISSIONS, FIELD_PATH_COLLECTION, FIELD_MODIFIED_AT, FIELD_CREATED_AT, FIELD_MODIFIED_BY, FIELD_HAS_COLLABORATIONS, FIELD_IS_EXTERNALLY_OWNED, FIELD_ITEM_COLLECTION, FIELD_AUTHENTICATED_DOWNLOAD_URL, FIELD_IS_DOWNLOAD_AVAILABLE, FIELD_REPRESENTATIONS, FIELD_URL, ]); }); test('should fetch correct preview fields', () => { expect(PREVIEW_FIELDS_TO_FETCH).toEqual([ FIELD_ID, FIELD_PERMISSIONS, FIELD_SHARED_LINK, FIELD_SHA1, FIELD_FILE_VERSION, FIELD_NAME, FIELD_SIZE, FIELD_EXTENSION, FIELD_REPRESENTATIONS, FIELD_WATERMARK_INFO, FIELD_AUTHENTICATED_DOWNLOAD_URL, FIELD_IS_DOWNLOAD_AVAILABLE, ]); }); test('should fetch correct sidebar fields', () => { expect(SIDEBAR_FIELDS_TO_FETCH).toEqual([ FIELD_ID, FIELD_NAME, FIELD_SIZE, FIELD_EXTENSION, FIELD_FILE_VERSION, FIELD_SHARED_LINK, FIELD_PERMISSIONS, FIELD_CONTENT_CREATED_AT, FIELD_CONTENT_MODIFIED_AT, FIELD_CREATED_AT, FIELD_CREATED_BY, FIELD_MODIFIED_AT, FIELD_MODIFIED_BY, FIELD_OWNED_BY, FIELD_DESCRIPTION, FIELD_METADATA_SKILLS, FIELD_ITEM_EXPIRATION, FIELD_VERSION_LIMIT, FIELD_VERSION_NUMBER, FIELD_IS_EXTERNALLY_OWNED, FIELD_RESTORED_FROM, FIELD_AUTHENTICATED_DOWNLOAD_URL, FIELD_IS_DOWNLOAD_AVAILABLE, FIELD_UPLOADER_DISPLAY_NAME, ]); }); test('should fetch correct tasks fields', () => { expect(TASKS_FIELDS_TO_FETCH).toEqual([ FIELD_TASK_ASSIGNMENT_COLLECTION, FIELD_IS_COMPLETED, FIELD_CREATED_AT, FIELD_CREATED_BY, FIELD_DUE_AT, FIELD_MESSAGE, ]); }); test('should fetch correct version fields', () => { expect(FILE_VERSIONS_FIELDS_TO_FETCH).toEqual([ FIELD_AUTHENTICATED_DOWNLOAD_URL, FIELD_CREATED_AT, FIELD_EXTENSION, FIELD_IS_DOWNLOAD_AVAILABLE, FIELD_MODIFIED_AT, FIELD_MODIFIED_BY, FIELD_NAME, FIELD_PERMISSIONS, FIELD_RESTORED_AT, FIELD_RESTORED_BY, FIELD_RETENTION, FIELD_SIZE, FIELD_TRASHED_AT, FIELD_TRASHED_BY, FIELD_UPLOADER_DISPLAY_NAME, FIELD_VERSION_NUMBER, ]); }); test('should fetch correct task assignment fields', () => { expect(TASK_ASSIGNMENTS_FIELDS_TO_FETCH).toEqual([FIELD_ASSIGNED_TO, FIELD_STATUS]); }); test('should fetch correct comments fields', () => { expect(COMMENTS_FIELDS_TO_FETCH).toEqual([ FIELD_TAGGED_MESSAGE, FIELD_MESSAGE, FIELD_CREATED_AT, FIELD_CREATED_BY, FIELD_MODIFIED_AT, FIELD_PERMISSIONS, ]); }); describe('findMissingProperties()', () => { test('should return passed in properties when object is null', () => { const properties = ['foo', 'bar']; expect(findMissingProperties(null, properties)).toBe(properties); }); test('should return passed in properties when object is empty', () => { const properties = ['foo', 'bar']; expect(findMissingProperties({}, properties)).toBe(properties); }); test('should return passed in properties when object is invalid', () => { const properties = ['foo', 'bar']; expect(findMissingProperties('string', properties)).toBe(properties); }); test('should return missing properties', () => { const properties = ['foo', 'bar']; expect(findMissingProperties({ foo: 1, baz: 2 }, properties)).toEqual(['bar']); }); }); describe('fillMissingProperties()', () => { test('should return passed in object when properties is null', () => { const obj = { foo: 1 }; expect(fillMissingProperties(obj)).toBe(obj); }); test('should return passed in object when properties is empty', () => { const obj = { foo: 1 }; expect(fillMissingProperties(obj, [])).toBe(obj); }); test('should return object with missing properties nulled', () => { const obj = { foo: { bar: 1 } }; const properties = ['foo', 'bar', 'foo.baz.bum', 'bar.bum', 'foo.baz.bup', 'bar.bop.bip']; expect(fillMissingProperties(obj, properties)).toEqual({ foo: { bar: 1, baz: { bum: null, bup: null } }, bar: { bum: null, bop: { bip: null } }, }); }); }); describe('fillUserPlaceholder()', () => { test('should return same object if none of the user properties are present', () => { const obj = { foo: 1 }; expect(fillUserPlaceholder(obj)).toEqual(obj); }); test('should not modify existing created_by if the value is not null', () => { const obj = { foo: 1, created_by: { bar: 2 } }; expect(fillUserPlaceholder(obj)).toEqual(obj); }); test('should add placeholder user for created_by if value is null', () => { const obj = { foo: 1, created_by: null }; expect(fillUserPlaceholder(obj)).toEqual({ foo: 1, created_by: PLACEHOLDER_USER, }); }); test('should add placeholder user for all user properties if values are null', () => { const obj = { foo: 1, created_by: null, owned_by: null, assigned_to: null, modified_by: null, }; expect(fillUserPlaceholder(obj)).toEqual({ foo: 1, created_by: PLACEHOLDER_USER, owned_by: PLACEHOLDER_USER, assigned_to: PLACEHOLDER_USER, modified_by: PLACEHOLDER_USER, }); }); }); });