text: import { shallowMount } from '@vue/test-utils';
  
  import { GlDrawer } from '@gitlab/ui';
  
  import EditDrawer from '~/static_site_editor/components/edit_drawer.vue';
  import FrontMatterControls from '~/static_site_editor/components/front_matter_controls.vue';
  
  describe('~/static_site_editor/components/edit_drawer.vue', () => {
    let wrapper;
  
    const buildWrapper = (propsData = {}) => {
      wrapper = shallowMount(EditDrawer, {
        propsData: {
          isOpen: false,
          settings: { title: 'Some title' },
          ...propsData,
        },
      });
    };
  
    const findFrontMatterControls = () => wrapper.find(FrontMatterControls);
    const findGlDrawer = () => wrapper.find(GlDrawer);
  
    beforeEach(() => {
      buildWrapper();
    });
  
    afterEach(() => {
      wrapper.destroy();
      wrapper = null;
    });
  
    it('renders the GlDrawer', () => {
      expect(findGlDrawer().exists()).toBe(true);
    });
  
    it('renders the FrontMatterControls', () => {
      expect(findFrontMatterControls().exists()).toBe(true);
    });
  
    it('forwards the settings to FrontMatterControls', () => {
      expect(findFrontMatterControls().props('settings')).toBe(wrapper.props('settings'));
    });
  
    it('is closed by default', () => {
      expect(findGlDrawer().props('open')).toBe(false);
    });
  
    it('can open', () => {
      buildWrapper({ isOpen: true });
  
      expect(findGlDrawer().props('open')).toBe(true);
    });
  
    it.each`
      event               | payload             | finderFn
      ${'close'}          | ${undefined}        | ${findGlDrawer}
      ${'updateSettings'} | ${{ some: 'data' }} | ${findFrontMatterControls}
    `(
      'forwards the emitted $event event from the $finderFn with $payload',
      ({ event, payload, finderFn }) => {
        finderFn().vm.$emit(event, payload);
  
        expect(wrapper.emitted(event)[0][0]).toBe(payload);
        expect(wrapper.emitted(event).length).toBe(1);
      },
    );
  });
  