import { shallowMount } from '@vue/test-utils';
import MockAdapter from 'axios-mock-adapter';
import axios from '~/lib/utils/axios_utils';
import Dashboard from '~/monitoring/components/dashboard.vue';
import DashboardHeader from '~/monitoring/components/dashboard_header.vue';
import { createStore } from '~/monitoring/stores';
import { dashboardProps } from '../fixture_data';
import { setupAllDashboards } from '../store_utils';

jest.mock('~/lib/utils/url_utility');

describe('Dashboard template', () => {
  let wrapper;
  let store;
  let mock;

  beforeEach(() => {
    store = createStore({
      currentEnvironmentName: 'production',
    });
    mock = new MockAdapter(axios);

    setupAllDashboards(store);
  });

  afterEach(() => {
    mock.restore();
  });

  it('matches the default snapshot', () => {
    wrapper = shallowMount(Dashboard, {
      propsData: { ...dashboardProps },
      store,
      stubs: {
        DashboardHeader,
      },
    });

    expect(wrapper.element).toMatchSnapshot();
  });
});