text: import { shallow, mount } from 'vue-test-utils'
  import Coffee from './resources/Coffee.vue'
  import CoffeeScript from './resources/CoffeeScript.vue'
  import CoffeeES6 from './resources/CoffeeES6.vue'
  import CoffeeScriptES6 from './resources/CoffeeScriptES6.vue'
  import jestVue from '../vue-jest'
  import { resolve } from 'path'
  import {
    readFileSync,
    writeFileSync,
    renameSync
  } from 'fs'
  import clearModule from 'clear-module'
  import cache from '../lib/cache'
  
  describe('Test CoffeeScript - coffee.spec.js', () => {
    beforeEach(() => {
      cache.flushAll()
      clearModule.all()
    })
  
    test('processes .vue file with lang set to coffee', () => {
      shallow(Coffee)
    })
  
    test('processes .vue file with lang set to coffeescript', () => {
      shallow(CoffeeScript)
    })
  
    test('processes .vue file with lang set to coffee (ES6)', () => {
      shallow(CoffeeES6)
    })
  
    test('processes .vue file with lang set to coffeescript (ES6)', () => {
      shallow(CoffeeScriptES6)
    })
  
    test('processes .vue file with lang set to coffeescript (ES6)', () => {
      const wrapper = mount(CoffeeScriptES6)
      expect(typeof wrapper).toBe('object')
    })
  
    test('processes .vue files with lang set to coffeescript using .babelrc if there is no .babelrc', () => {
      const babelRcPath = resolve(__dirname, '../.babelrc')
      const tempPath = resolve(__dirname, '../.renamed')
      renameSync(babelRcPath, tempPath)
      const filePath = resolve(__dirname, './resources/CoffeeScriptES6.vue')
      const fileString = readFileSync(filePath, { encoding: 'utf8' })
      try {
        jestVue.process(fileString, filePath)
      } catch (err) {
        renameSync(tempPath, babelRcPath)
        throw err
      }
      renameSync(tempPath, babelRcPath)
    })
  
    test('processes .vue files with lang set to coffeescript, uses babelrc in package.json if none in .babelrc', () => {
      const babelRcPath = resolve(__dirname, '../.babelrc')
      const tempPath = resolve(__dirname, '../.renamed')
      const packagePath = resolve(__dirname, '../package.json')
      const packageOriginal = readFileSync(packagePath, { encoding: 'utf8' })
      writeFileSync(packagePath, '{ "babel": {"presets": ["env"],"plugins": ["istanbul"]}}')
      renameSync(babelRcPath, tempPath)
      const filePath = resolve(__dirname, './resources/CoffeeScriptES6.vue')
      const fileString = readFileSync(filePath, { encoding: 'utf8' })
  
      try {
        const output = jestVue.process(fileString, filePath)
        expect(output.code).toContain('coverageData.hash')
      } catch (err) {
        renameSync(tempPath, babelRcPath)
        writeFileSync(packagePath, packageOriginal)
        jest.resetModules()
        throw err
      }
      renameSync(tempPath, babelRcPath)
      writeFileSync(packagePath, packageOriginal)
      jest.resetModules()
    })
  
    test('processes .vue files with lang set to coffeescript using .babelrc if it exists in route', () => {
      const babelRcPath = resolve(__dirname, '../.babelrc')
      const babelRcOriginal = readFileSync(babelRcPath, { encoding: 'utf8' })
      writeFileSync(babelRcPath, '{"presets": ["env"],"plugins": ["istanbul"]}')
      const filePath = resolve(__dirname, './resources/CoffeeScriptES6.vue')
      const fileString = readFileSync(filePath, { encoding: 'utf8' })
  
      const output = jestVue.process(fileString, filePath)
      writeFileSync(babelRcPath, babelRcOriginal)
      // coverageData.hash is added by babel-plugin-istanbul, added to root .babelrc for this test only
      expect(output.code).toContain('coverageData.hash')
    })
  })
  