text: import { GlLink } from '@gitlab/ui';
  import { createLocalVue, shallowMount } from '@vue/test-utils';
  import Vuex from 'vuex';
  import IdeStatusList from '~/ide/components/ide_status_list.vue';
  import TerminalSyncStatusSafe from '~/ide/components/terminal_sync/terminal_sync_status_safe.vue';
  
  const TEST_FILE = {
    name: 'lorem.md',
    content: 'abc\nndef',
    permalink: '/lorem.md',
  };
  const TEST_FILE_EDITOR = {
    fileLanguage: 'markdown',
    editorRow: 3,
    editorColumn: 23,
  };
  const TEST_EDITOR_POSITION = `${TEST_FILE_EDITOR.editorRow}:${TEST_FILE_EDITOR.editorColumn}`;
  
  const localVue = createLocalVue();
  localVue.use(Vuex);
  
  describe('ide/components/ide_status_list', () => {
    let activeFileEditor;
    let activeFile;
    let store;
    let wrapper;
  
    const findLink = () => wrapper.find(GlLink);
    const createComponent = (options = {}) => {
      store = new Vuex.Store({
        getters: {
          activeFile: () => activeFile,
        },
        modules: {
          editor: {
            namespaced: true,
            getters: {
              activeFileEditor: () => activeFileEditor,
            },
          },
        },
      });
  
      wrapper = shallowMount(IdeStatusList, {
        localVue,
        store,
        ...options,
      });
    };
  
    beforeEach(() => {
      activeFile = TEST_FILE;
      activeFileEditor = TEST_FILE_EDITOR;
    });
  
    afterEach(() => {
      wrapper.destroy();
  
      store = null;
      wrapper = null;
    });
  
    describe('with regular file', () => {
      beforeEach(() => {
        createComponent();
      });
  
      it('shows a link to the file that contains the file name', () => {
        expect(findLink().attributes('href')).toBe(TEST_FILE.permalink);
        expect(findLink().text()).toBe(TEST_FILE.name);
      });
  
      it('shows file eol', () => {
        expect(wrapper.text()).not.toContain('CRLF');
        expect(wrapper.text()).toContain('LF');
      });
  
      it('shows file editor position', () => {
        expect(wrapper.text()).toContain(TEST_EDITOR_POSITION);
      });
  
      it('shows file language', () => {
        expect(wrapper.text()).toContain(TEST_FILE_EDITOR.fileLanguage);
      });
    });
  
    describe('with binary file', () => {
      beforeEach(() => {
        activeFile.name = 'abc.dat';
        activeFile.content = '🐱'; // non-ascii binary content
        createComponent();
      });
  
      it('does not show file editor position', () => {
        expect(wrapper.text()).not.toContain(TEST_EDITOR_POSITION);
      });
    });
  
    it('renders terminal sync status', () => {
      createComponent();
  
      expect(wrapper.find(TerminalSyncStatusSafe).exists()).toBe(true);
    });
  });
  