summaryrefslogtreecommitdiff
path: root/spec/frontend/vue_shared/alert_details/alert_metrics_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/vue_shared/alert_details/alert_metrics_spec.js')
-rw-r--r--spec/frontend/vue_shared/alert_details/alert_metrics_spec.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/spec/frontend/vue_shared/alert_details/alert_metrics_spec.js b/spec/frontend/vue_shared/alert_details/alert_metrics_spec.js
new file mode 100644
index 00000000000..c75909651d7
--- /dev/null
+++ b/spec/frontend/vue_shared/alert_details/alert_metrics_spec.js
@@ -0,0 +1,62 @@
+import { shallowMount } from '@vue/test-utils';
+import MockAdapter from 'axios-mock-adapter';
+import axios from 'axios';
+import waitForPromises from 'helpers/wait_for_promises';
+import AlertMetrics from '~/vue_shared/alert_details/components/alert_metrics.vue';
+import MetricEmbed from '~/monitoring/components/embeds/metric_embed.vue';
+
+jest.mock('~/monitoring/stores', () => ({
+ monitoringDashboard: {},
+}));
+
+jest.mock('~/monitoring/components/embeds/metric_embed.vue', () => ({
+ render(h) {
+ return h('div');
+ },
+}));
+
+describe('Alert Metrics', () => {
+ let wrapper;
+ const mock = new MockAdapter(axios);
+
+ function mountComponent({ props } = {}) {
+ wrapper = shallowMount(AlertMetrics, {
+ propsData: {
+ ...props,
+ },
+ });
+ }
+
+ const findChart = () => wrapper.find(MetricEmbed);
+ const findEmptyState = () => wrapper.find({ ref: 'emptyState' });
+
+ afterEach(() => {
+ if (wrapper) {
+ wrapper.destroy();
+ }
+ });
+
+ afterAll(() => {
+ mock.restore();
+ });
+
+ describe('Empty state', () => {
+ it('should display a message when metrics dashboard url is not provided ', () => {
+ mountComponent();
+ expect(findChart().exists()).toBe(false);
+ expect(findEmptyState().text()).toBe("Metrics weren't available in the alerts payload.");
+ });
+ });
+
+ describe('Chart', () => {
+ it('should be rendered when dashboard url is provided', async () => {
+ mountComponent({ props: { dashboardUrl: 'metrics.url' } });
+
+ await waitForPromises();
+ await wrapper.vm.$nextTick();
+
+ expect(findEmptyState().exists()).toBe(false);
+ expect(findChart().exists()).toBe(true);
+ });
+ });
+});