192 lines
4.8 KiB
JavaScript
192 lines
4.8 KiB
JavaScript
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,
|
|
};
|