import { describe, expect, it } from 'vitest'
import { getDevDependencySuggestion } from '../../../../shared/utils/dev-dependency'
describe('getDevDependencySuggestion', () => {
it('suggests dev dependency for known tooling packages', () => {
expect(getDevDependencySuggestion('eslint')).toEqual({
recommended: true,
reason: 'known-package',
})
expect(getDevDependencySuggestion('@types/node')).toEqual({
recommended: true,
reason: 'known-package',
})
expect(getDevDependencySuggestion('@typescript-eslint/parser')).toEqual({
recommended: true,
reason: 'known-package',
})
})
it('suggests dev dependency from README install command hints', () => {
const readme = '
Install with npm install --save-dev some-tool
'
expect(getDevDependencySuggestion('some-tool', readme)).toEqual({
recommended: true,
reason: 'readme-hint',
})
})
it('suggests dev dependency from README --dev flag hints', () => {
const readme = 'yarn add --dev some-tool
'
expect(getDevDependencySuggestion('some-tool', readme)).toEqual({
recommended: true,
reason: 'readme-hint',
})
})
it('suggests dev dependency from README deno -D hints', () => {
const readme = 'deno add -D npm:some-tool
'
expect(getDevDependencySuggestion('some-tool', readme)).toEqual({
recommended: true,
reason: 'readme-hint',
})
})
it('does not suggest dev dependency for runtime packages without hints', () => {
expect(getDevDependencySuggestion('react')).toEqual({
recommended: false,
})
})
it('does not suggest when README hint targets a different package', () => {
const readme = 'Install with yarn add -D bar
'
expect(getDevDependencySuggestion('foo', readme)).toEqual({
recommended: false,
})
})
})