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