From 1a14e5230e5b7f705fc09c3baf46f6cf74ca3ad0 Mon Sep 17 00:00:00 2001 From: Sam Bigelow Date: Fri, 1 Mar 2019 16:41:16 -0500 Subject: Add merge request popover with details - Show pipeline status, title, MR Status and project path - Popover attached to gitlab flavored markdown everywhere, including: + MR/Issue Title + MR/Issue description + MR/Issue comments + Rendered markdown files --- .../__snapshots__/mr_popover_spec.js.snap | 93 ++++++++++++++++++++++ spec/frontend/mr_popover/mr_popover_spec.js | 61 ++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 spec/frontend/mr_popover/__snapshots__/mr_popover_spec.js.snap create mode 100644 spec/frontend/mr_popover/mr_popover_spec.js (limited to 'spec/frontend/mr_popover') diff --git a/spec/frontend/mr_popover/__snapshots__/mr_popover_spec.js.snap b/spec/frontend/mr_popover/__snapshots__/mr_popover_spec.js.snap new file mode 100644 index 00000000000..5f9f13d591d --- /dev/null +++ b/spec/frontend/mr_popover/__snapshots__/mr_popover_spec.js.snap @@ -0,0 +1,93 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`MR Popover loaded state matches the snapshot 1`] = ` + +
+
+
+
+ + Open + +
+ + + Opened + + +
+ + +
+ +
+ MR Title +
+ +
+ + foo/bar!1 + +
+
+
+`; + +exports[`MR Popover shows skeleton-loader while apollo is loading 1`] = ` + +
+
+ +
+ +
+ MR Title +
+ +
+ + foo/bar!1 + +
+
+
+`; diff --git a/spec/frontend/mr_popover/mr_popover_spec.js b/spec/frontend/mr_popover/mr_popover_spec.js new file mode 100644 index 00000000000..79ed4163010 --- /dev/null +++ b/spec/frontend/mr_popover/mr_popover_spec.js @@ -0,0 +1,61 @@ +import MRPopover from '~/mr_popover/components/mr_popover'; +import { shallowMount } from '@vue/test-utils'; + +describe('MR Popover', () => { + let wrapper; + + beforeEach(() => { + wrapper = shallowMount(MRPopover, { + propsData: { + target: document.createElement('a'), + projectPath: 'foo/bar', + mergeRequestIID: '1', + mergeRequestTitle: 'MR Title', + }, + mocks: { + $apollo: { + loading: false, + }, + }, + }); + }); + + it('shows skeleton-loader while apollo is loading', () => { + wrapper.vm.$apollo.loading = true; + + expect(wrapper.element).toMatchSnapshot(); + }); + + describe('loaded state', () => { + it('matches the snapshot', () => { + wrapper.setData({ + mergeRequest: { + state: 'opened', + createdAt: new Date(), + headPipeline: { + detailedStatus: { + group: 'success', + status: 'status_success', + }, + }, + }, + }); + + expect(wrapper.element).toMatchSnapshot(); + }); + + it('does not show CI Icon if there is no pipeline data', () => { + wrapper.setData({ + mergeRequest: { + state: 'opened', + headPipeline: null, + stateHumanName: 'Open', + title: 'Merge Request Title', + createdAt: new Date(), + }, + }); + + expect(wrapper.contains('ciicon-stub')).toBe(false); + }); + }); +}); -- cgit v1.2.3