Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/vue_merge_request_widget/test_extensions.js')
-rw-r--r--spec/frontend/vue_merge_request_widget/test_extensions.js192
1 files changed, 192 insertions, 0 deletions
diff --git a/spec/frontend/vue_merge_request_widget/test_extensions.js b/spec/frontend/vue_merge_request_widget/test_extensions.js
new file mode 100644
index 00000000000..1977f550577
--- /dev/null
+++ b/spec/frontend/vue_merge_request_widget/test_extensions.js
@@ -0,0 +1,192 @@
+import { EXTENSION_ICONS } from '~/vue_merge_request_widget/constants';
+
+export const workingExtension = (shouldCollapse = true) => ({
+ name: 'WidgetTestExtension',
+ props: ['targetProjectFullPath'],
+ expandEvent: 'test_expand_event',
+ i18n: {
+ loading: 'Test extension loading...',
+ },
+ computed: {
+ summary({ count, targetProjectFullPath } = {}) {
+ return `Test extension summary count: ${count} & ${targetProjectFullPath}`;
+ },
+ statusIcon({ count } = {}) {
+ return count > 0 ? EXTENSION_ICONS.warning : EXTENSION_ICONS.success;
+ },
+ shouldCollapse() {
+ return shouldCollapse;
+ },
+ },
+ methods: {
+ fetchCollapsedData({ targetProjectFullPath }) {
+ return Promise.resolve({ targetProjectFullPath, count: 1 });
+ },
+ fetchFullData() {
+ return Promise.resolve([
+ {
+ id: 1,
+ text: 'Hello world',
+ icon: {
+ name: EXTENSION_ICONS.failed,
+ },
+ badge: {
+ text: 'Closed',
+ },
+ link: {
+ href: 'https://gitlab.com',
+ text: 'GitLab.com',
+ },
+ actions: [{ text: 'Full report', href: 'https://gitlab.com', target: '_blank' }],
+ },
+ ]);
+ },
+ },
+});
+
+export const collapsedDataErrorExtension = {
+ name: 'WidgetTestCollapsedErrorExtension',
+ props: ['targetProjectFullPath'],
+ expandEvent: 'test_expand_event',
+ computed: {
+ summary({ count, targetProjectFullPath }) {
+ return `Test extension summary count: ${count} & ${targetProjectFullPath}`;
+ },
+ statusIcon({ count }) {
+ return count > 0 ? EXTENSION_ICONS.warning : EXTENSION_ICONS.success;
+ },
+ },
+ methods: {
+ fetchCollapsedData() {
+ return Promise.reject(new Error('Fetch error'));
+ },
+ fetchFullData() {
+ return Promise.resolve([
+ {
+ id: 1,
+ text: 'Hello world',
+ icon: {
+ name: EXTENSION_ICONS.failed,
+ },
+ badge: {
+ text: 'Closed',
+ },
+ link: {
+ href: 'https://gitlab.com',
+ text: 'GitLab.com',
+ },
+ actions: [{ text: 'Full report', href: 'https://gitlab.com', target: '_blank' }],
+ },
+ ]);
+ },
+ },
+};
+
+export const fullDataErrorExtension = {
+ name: 'WidgetTestCollapsedErrorExtension',
+ props: ['targetProjectFullPath'],
+ expandEvent: 'test_expand_event',
+ computed: {
+ summary({ count, targetProjectFullPath }) {
+ return `Test extension summary count: ${count} & ${targetProjectFullPath}`;
+ },
+ statusIcon({ count }) {
+ return count > 0 ? EXTENSION_ICONS.warning : EXTENSION_ICONS.success;
+ },
+ },
+ methods: {
+ fetchCollapsedData({ targetProjectFullPath }) {
+ return Promise.resolve({ targetProjectFullPath, count: 1 });
+ },
+ fetchFullData() {
+ return Promise.reject(new Error('Fetch error'));
+ },
+ },
+};
+
+export const pollingExtension = {
+ ...workingExtension(),
+ enablePolling: true,
+};
+
+export const pollingFullDataExtension = {
+ ...workingExtension(),
+ enableExpandedPolling: true,
+ methods: {
+ fetchCollapsedData({ targetProjectFullPath }) {
+ return Promise.resolve({ targetProjectFullPath, count: 1 });
+ },
+ fetchFullData() {
+ return Promise.resolve([
+ {
+ headers: { 'poll-interval': 0 },
+ status: 200,
+ data: {
+ id: 1,
+ text: 'Hello world',
+ icon: {
+ name: EXTENSION_ICONS.failed,
+ },
+ badge: {
+ text: 'Closed',
+ },
+ link: {
+ href: 'https://gitlab.com',
+ text: 'GitLab.com',
+ },
+ actions: [{ text: 'Full report', href: 'https://gitlab.com', target: '_blank' }],
+ },
+ },
+ ]);
+ },
+ },
+};
+
+export const fullReportExtension = {
+ ...workingExtension(),
+ computed: {
+ ...workingExtension().computed,
+ tertiaryButtons() {
+ return [
+ {
+ text: 'test',
+ href: `testref`,
+ target: '_blank',
+ fullReport: true,
+ },
+ ];
+ },
+ },
+};
+
+export const noTelemetryExtension = {
+ ...fullReportExtension,
+ telemetry: false,
+};
+
+export const multiPollingExtension = (endpointsToBePolled) => ({
+ name: 'WidgetTestMultiPollingExtension',
+ props: [],
+ i18n: {
+ loading: 'Test extension loading...',
+ },
+ computed: {
+ summary(data) {
+ return `Multi polling test extension reports: ${data?.[0]?.reports}, count: ${data.length}`;
+ },
+ statusIcon(data) {
+ return data?.[0]?.reports === 'parsed' ? EXTENSION_ICONS.success : EXTENSION_ICONS.warning;
+ },
+ },
+ enablePolling: true,
+ methods: {
+ fetchMultiData() {
+ return endpointsToBePolled;
+ },
+ },
+});
+
+export const pollingErrorExtension = {
+ ...collapsedDataErrorExtension,
+ enablePolling: true,
+};