diff --git a/src/api/Feed.js b/src/api/Feed.js index fccf25f066..8a109ec3e9 100644 --- a/src/api/Feed.js +++ b/src/api/Feed.js @@ -253,6 +253,7 @@ export const getParsedFileActivitiesResponse = ( } if (versionsItem.action_type === ACTION_TYPE_PROMOTED && versionsItem.start?.promoted_from) { versionsItem.version_promoted = versionsItem.start?.promoted_from; + versionsItem.promoted_by = { ...versionsItem.start?.promoted_by }; } } diff --git a/src/api/__tests__/Feed.test.js b/src/api/__tests__/Feed.test.js index f588ab4f9e..21f80c7d57 100644 --- a/src/api/__tests__/Feed.test.js +++ b/src/api/__tests__/Feed.test.js @@ -2356,6 +2356,7 @@ describe('api/Feed', () => { test('should return a parsed entries array when response is valid', () => { const mockUser = fileActivitiesVersion.start.created_by; + const promotedByUser = promotedFileActivitiesVersion.start.promoted_by; const promotedFileActivities = { entries: [ { @@ -2376,6 +2377,7 @@ describe('api/Feed', () => { id: '123', collaborators: { 42: mockUser }, version_promoted: 2, + promoted_by: promotedByUser, }, ]); }); diff --git a/src/api/fixtures.js b/src/api/fixtures.js index 4cd3bc8bfa..3acb990569 100644 --- a/src/api/fixtures.js +++ b/src/api/fixtures.js @@ -146,6 +146,12 @@ export const promotedFileActivitiesVersion = { uploader_display_name: 'John Doe', type: 'file_version', promoted_from: 2, + promoted_by: { + id: '42', + name: 'John Doe', + login: 'johndoe@box.com', + type: 'user', + }, }, start: { created_at: '2022-01-05T10:12:28.000-08:00', @@ -160,6 +166,12 @@ export const promotedFileActivitiesVersion = { uploader_display_name: 'John Doe', type: 'file_version', promoted_from: 2, + promoted_by: { + id: '42', + name: 'John Doe', + login: 'johndoe@box.com', + type: 'user', + }, }, action_by: [ { diff --git a/src/elements/content-sidebar/activity-feed/task-new/Task.js b/src/elements/content-sidebar/activity-feed/task-new/Task.js index f8358e0a0d..5db92b1a69 100644 --- a/src/elements/content-sidebar/activity-feed/task-new/Task.js +++ b/src/elements/content-sidebar/activity-feed/task-new/Task.js @@ -241,7 +241,7 @@ class Task extends React.Component { const isTaskCompleted = !(status === TASK_NEW_NOT_STARTED || status === TASK_NEW_IN_PROGRESS); - const isCreator = created_by.target.id === currentUser.id; + const isCreator = created_by.target?.id === currentUser.id; const isMultiFile = task_links.entries.length > 1; @@ -334,11 +334,15 @@ class Task extends React.Component { )}
- + {createdByUser.name ? ( + + ) : ( + + )}
diff --git a/src/elements/content-sidebar/activity-feed/task-new/__tests__/Task.test.js b/src/elements/content-sidebar/activity-feed/task-new/__tests__/Task.test.js index bfdfd46fae..cefd90fd0e 100644 --- a/src/elements/content-sidebar/activity-feed/task-new/__tests__/Task.test.js +++ b/src/elements/content-sidebar/activity-feed/task-new/__tests__/Task.test.js @@ -1,6 +1,7 @@ import * as React from 'react'; import { mount, shallow } from 'enzyme'; import cloneDeep from 'lodash/cloneDeep'; +import { FormattedMessage } from 'react-intl'; import { FEED_ITEM_TYPE_TASK } from '../../../../../constants'; import { TaskComponent as Task } from '..'; @@ -18,6 +19,7 @@ const allHandlers = { const approverSelectorContacts = []; describe('elements/content-sidebar/ActivityFeed/task-new/Task', () => { + const placeholderUser = { nam: '', id: '0', type: 'user' }; const currentUser = { name: 'Jake Thomas', id: '1', type: 'user' }; const otherUser = { name: 'Patrick Paul', id: '3', type: 'user' }; const creatorUser = { name: 'Steven Yang', id: '5', type: 'user' }; @@ -144,6 +146,22 @@ describe('elements/content-sidebar/ActivityFeed/task-new/Task', () => { expect(wrapper.find('[data-testid="task-due-date"]')).toHaveLength(1); }); + test('should show prior collaborator text if created_by user is a placeholder user', () => { + const completeWrapper = mount( + , + ); + const headline = completeWrapper.find('.bcs-Task-headline'); + expect(headline.find(FormattedMessage).prop('id')).toBe('be.priorCollaborator'); + }); + test('due date should have overdue class if task is incomplete and due date is in past', () => { const incompleteWrapper = mount( { test('should call onView when view-task-details button is clicked for multifile task', () => { const onViewSpy = jest.fn(); const wrapper = mount(); - wrapper - .find('[data-testid="view-task"]') - .hostNodes() - .simulate('click'); + wrapper.find('[data-testid="view-task"]').hostNodes().simulate('click'); expect(onViewSpy).toHaveBeenCalledWith(taskId, false); });