forked from
npmx.dev/npmx.dev
[READ-ONLY]
a fast, modern browser for the npm registry
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})