[READ-ONLY] a fast, modern browser for the npm registry
at main 60 lines 1.9 kB view raw
1import { describe, expect, it } from 'vitest' 2import { getDevDependencySuggestion } from '../../../../shared/utils/dev-dependency' 3 4describe('getDevDependencySuggestion', () => { 5 it('suggests dev dependency for known tooling packages', () => { 6 expect(getDevDependencySuggestion('eslint')).toEqual({ 7 recommended: true, 8 reason: 'known-package', 9 }) 10 expect(getDevDependencySuggestion('@types/node')).toEqual({ 11 recommended: true, 12 reason: 'known-package', 13 }) 14 expect(getDevDependencySuggestion('@typescript-eslint/parser')).toEqual({ 15 recommended: true, 16 reason: 'known-package', 17 }) 18 }) 19 20 it('suggests dev dependency from README install command hints', () => { 21 const readme = '<p>Install with <code>npm install --save-dev some-tool</code></p>' 22 23 expect(getDevDependencySuggestion('some-tool', readme)).toEqual({ 24 recommended: true, 25 reason: 'readme-hint', 26 }) 27 }) 28 29 it('suggests dev dependency from README --dev flag hints', () => { 30 const readme = '<p><code>yarn add --dev some-tool</code></p>' 31 32 expect(getDevDependencySuggestion('some-tool', readme)).toEqual({ 33 recommended: true, 34 reason: 'readme-hint', 35 }) 36 }) 37 38 it('suggests dev dependency from README deno -D hints', () => { 39 const readme = '<p><code>deno add -D npm:some-tool</code></p>' 40 41 expect(getDevDependencySuggestion('some-tool', readme)).toEqual({ 42 recommended: true, 43 reason: 'readme-hint', 44 }) 45 }) 46 47 it('does not suggest dev dependency for runtime packages without hints', () => { 48 expect(getDevDependencySuggestion('react')).toEqual({ 49 recommended: false, 50 }) 51 }) 52 53 it('does not suggest when README hint targets a different package', () => { 54 const readme = '<p>Install with <code>yarn add -D bar</code></p>' 55 56 expect(getDevDependencySuggestion('foo', readme)).toEqual({ 57 recommended: false, 58 }) 59 }) 60})