Fixes bug where activity stream changes were displaying as [object object]

This commit is contained in:
mabashian 2021-05-25 15:23:15 -04:00
parent e28bed5a6c
commit e0e66e3818
2 changed files with 63 additions and 2 deletions

View File

@ -52,7 +52,9 @@ function ActivityStreamDetailButton({ streamItem, user, description }) {
<VariablesDetail
label={t`Changes`}
rows={changeRows}
value={streamItem?.changes}
value={
streamItem?.changes ? JSON.stringify(streamItem.changes) : ''
}
/>
)}
</DetailList>

View File

@ -1,6 +1,5 @@
import React from 'react';
import { Link } from 'react-router-dom';
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
import ActivityStreamDetailButton from './ActivityStreamDetailButton';
@ -18,4 +17,64 @@ describe('<ActivityStreamDetailButton />', () => {
/>
);
});
test('details are properly rendered', () => {
function assertDetail(label, value) {
expect(wrapper.find(`Detail[label="${label}"] dt`).text()).toBe(label);
expect(wrapper.find(`Detail[label="${label}"] dd`).text()).toBe(value);
}
const wrapper = mountWithContexts(
<ActivityStreamDetailButton
streamItem={{
summary_fields: {
actor: {
id: 1,
username: 'Bob',
first_name: '',
last_name: '',
},
setting: [
{
category: 'system',
name: 'INSIGHTS_TRACKING_STATE',
},
],
},
timestamp: '2021-05-25T18:17:59.835788Z',
operation: 'create',
changes: {
value: false,
id: 6,
},
object1: 'setting',
object2: '',
object_association: '',
action_node: 'awx_1',
object_type: '',
}}
user={<Link to="/users/1/details">Bob</Link>}
description={<span>foo</span>}
/>
);
expect(wrapper.find('Modal[title="Event detail"]').prop('isOpen')).toBe(
false
);
wrapper.find('Button').simulate('click');
expect(wrapper.find('Modal[title="Event detail"]').prop('isOpen')).toBe(
true
);
assertDetail('Time', '5/25/2021, 6:17:59 PM');
assertDetail('Initiated by', 'Bob');
assertDetail('Setting category', 'system');
assertDetail('Setting name', 'INSIGHTS_TRACKING_STATE');
assertDetail('Action', 'foo');
const input = wrapper.find('VariablesDetail___StyledCodeEditor');
expect(input).toHaveLength(1);
expect(input.prop('value')).toEqual('{\n "value": false,\n "id": 6\n}');
});
});