Skip to content

Commit 7a3199e

Browse files
committed
test: add coverage for package default constants
- Add tests for package-default-socket-categories (7 tests, 100% coverage) - Add tests for package-default-node-range (7 tests, 100% coverage) - Test immutability, format validation, and value constraints - Total: 14 new tests, 18 lines of source now fully covered Low-hanging fruit: these are tiny constants files (8-10 lines each) that export frozen values used across the codebase.
1 parent c6ff02c commit 7a3199e

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* @fileoverview Unit tests for default Node.js version range.
3+
*/
4+
5+
import { packageDefaultNodeRange } from '@socketsecurity/lib/package-default-node-range'
6+
import { describe, expect, it } from 'vitest'
7+
8+
describe('package-default-node-range', () => {
9+
it('should export a string', () => {
10+
expect(typeof packageDefaultNodeRange).toBe('string')
11+
})
12+
13+
it('should start with >= operator', () => {
14+
expect(packageDefaultNodeRange).toMatch(/^>=/)
15+
})
16+
17+
it('should contain a major version number', () => {
18+
expect(packageDefaultNodeRange).toMatch(/^>=\d+$/)
19+
})
20+
21+
it('should be a valid semver range format', () => {
22+
// Extract the version number
23+
const versionMatch = packageDefaultNodeRange.match(/^>=(\d+)$/)
24+
expect(versionMatch).not.toBeNull()
25+
if (versionMatch) {
26+
const majorVersion = Number.parseInt(versionMatch[1], 10)
27+
expect(majorVersion).toBeGreaterThan(0)
28+
expect(majorVersion).toBeLessThan(100) // Sanity check
29+
}
30+
})
31+
32+
it('should be based on maintained Node versions', () => {
33+
// The value should be a reasonable Node.js version
34+
// As of 2025, maintained versions are typically >= 18
35+
const versionMatch = packageDefaultNodeRange.match(/^>=(\d+)$/)
36+
if (versionMatch) {
37+
const majorVersion = Number.parseInt(versionMatch[1], 10)
38+
expect(majorVersion).toBeGreaterThanOrEqual(18)
39+
}
40+
})
41+
42+
it('should not have trailing spaces', () => {
43+
expect(packageDefaultNodeRange).toBe(packageDefaultNodeRange.trim())
44+
})
45+
46+
it('should not be empty', () => {
47+
expect(packageDefaultNodeRange.length).toBeGreaterThan(0)
48+
})
49+
})
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* @fileoverview Unit tests for default Socket security categories.
3+
*/
4+
5+
import { packageDefaultSocketCategories } from '@socketsecurity/lib/package-default-socket-categories'
6+
import { describe, expect, it } from 'vitest'
7+
8+
describe('package-default-socket-categories', () => {
9+
it('should export an array with cleanup category', () => {
10+
expect(packageDefaultSocketCategories).toEqual(['cleanup'])
11+
})
12+
13+
it('should be a frozen array', () => {
14+
expect(Object.isFrozen(packageDefaultSocketCategories)).toBe(true)
15+
})
16+
17+
it('should be an array', () => {
18+
expect(Array.isArray(packageDefaultSocketCategories)).toBe(true)
19+
})
20+
21+
it('should have length of 1', () => {
22+
expect(packageDefaultSocketCategories).toHaveLength(1)
23+
})
24+
25+
it('should not be modifiable', () => {
26+
expect(() => {
27+
// @ts-expect-error - testing immutability
28+
packageDefaultSocketCategories.push('new-category')
29+
}).toThrow()
30+
})
31+
32+
it('should contain only string values', () => {
33+
for (const category of packageDefaultSocketCategories) {
34+
expect(typeof category).toBe('string')
35+
}
36+
})
37+
38+
it('should contain cleanup as first element', () => {
39+
expect(packageDefaultSocketCategories[0]).toBe('cleanup')
40+
})
41+
})

0 commit comments

Comments
 (0)