LouisMazel/maz-ui

View on GitHub
packages/cli/src/commands/create-files/create-library-test-file.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { writeFile } from 'node:fs/promises'
import { resolve } from 'node:path'
import { exit } from 'node:process'
import { fileURLToPath } from 'node:url'
import { logger } from '../../utils/logger'

const _dirname = fileURLToPath(new URL('.', import.meta.url))

export async function createLibraryTestFile({
  filename,
  filenameKebab,
}: {
  filename: string
  filenameKebab: string
}): Promise<void> {
  const testComponentTemplate = `import { shallowMount, type VueWrapper } from '@vue/test-utils'
import ${filename} from '@components/${filename}.vue'

describe('${filename}', () => {
  let wrapper: VueWrapper<InstanceType<typeof ${filename}>>

  beforeEach(() => {
    wrapper = shallowMount(${filename})
  })
})
`

  try {
    const TEST_FILE_OUTPUT = resolve(
      _dirname,
      `../../../../lib/tests/specs/components/${filenameKebab}.spec.ts`,
    )

    await writeFile(TEST_FILE_OUTPUT, testComponentTemplate)
  } catch (error) {
    logger.error(`Error: Failed to create file "${filename}".`, error)
    exit(1)
  }
}