diff options
Diffstat (limited to 'spec/frontend/issues/show/components/incidents/timeline_events_item_spec.js')
-rw-r--r-- | spec/frontend/issues/show/components/incidents/timeline_events_item_spec.js | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/spec/frontend/issues/show/components/incidents/timeline_events_item_spec.js b/spec/frontend/issues/show/components/incidents/timeline_events_item_spec.js index ba0527e5395..24653a23036 100644 --- a/spec/frontend/issues/show/components/incidents/timeline_events_item_spec.js +++ b/spec/frontend/issues/show/components/incidents/timeline_events_item_spec.js @@ -9,8 +9,8 @@ import { mockEvents } from './mock_data'; describe('IncidentTimelineEventList', () => { let wrapper; - const mountComponent = ({ propsData, provide } = {}) => { - const { action, noteHtml, occurredAt } = mockEvents[0]; + const mountComponent = ({ propsData, provide, mockEvent = mockEvents[0] } = {}) => { + const { action, noteHtml, occurredAt } = mockEvent; wrapper = mountExtended(IncidentTimelineEventItem, { propsData: { action, @@ -27,9 +27,10 @@ describe('IncidentTimelineEventList', () => { const findCommentIcon = () => wrapper.findComponent(GlIcon); const findEventTime = () => wrapper.findByTestId('event-time'); - const findEventTag = () => wrapper.findComponent(GlBadge); + const findEventTags = () => wrapper.findAllComponents(GlBadge); const findDropdown = () => wrapper.findComponent(GlDropdown); const findDeleteButton = () => wrapper.findByText(timelineItemI18n.delete); + const findEditButton = () => wrapper.findByText(timelineItemI18n.edit); describe('template', () => { beforeEach(() => { @@ -69,15 +70,16 @@ describe('IncidentTimelineEventList', () => { }); }); - describe('timeline event tag', () => { - it('does not show when tag is not provided', () => { - expect(findEventTag().exists()).toBe(false); - }); - - it('shows when tag is provided', () => { - mountComponent({ propsData: { eventTag: 'Start time' } }); + describe.each([ + { eventTags: [], expected: 0 }, + { eventTags: ['Start time'], expected: 1 }, + { eventTags: ['Start time', 'End time'], expected: 2 }, + ])('timeline event tags', ({ eventTags, expected }) => { + it(`shows ${expected} badges when ${expected} tags are provided`, () => { + mountComponent({ propsData: { eventTags } }); - expect(findEventTag().exists()).toBe(true); + expect(findEventTags().exists()).toBe(Boolean(expected)); + expect(findEventTags().length).toBe(eventTags.length); }); }); @@ -87,6 +89,21 @@ describe('IncidentTimelineEventList', () => { expect(findDeleteButton().exists()).toBe(false); }); + it('does not show edit item when event was system generated', () => { + const systemGeneratedMockEvent = { + ...mockEvents[0], + action: 'status', + }; + + mountComponent({ + provide: { canUpdateTimelineEvent: true }, + mockEvent: systemGeneratedMockEvent, + }); + + expect(findDropdown().exists()).toBe(true); + expect(findEditButton().exists()).toBe(false); + }); + it('shows dropdown and delete item when user has update permission', () => { mountComponent({ provide: { canUpdateTimelineEvent: true } }); |