Skip to content

Commit 06f08b0

Browse files
committed
Consolidate package-url-builder.test.mts: parameterize factory method tests
Refactor 8 factory method tests (npm, pypi, maven, gem, golang, cargo, nuget, composer) into a single parameterized it.each test. Reduces ~50 lines while maintaining identical test coverage.
1 parent 8fc67b3 commit 06f08b0

File tree

1 file changed

+21
-66
lines changed

1 file changed

+21
-66
lines changed

test/package-url-builder.test.mts

Lines changed: 21 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -131,72 +131,27 @@ describe('PackageURLBuilder', () => {
131131
expect(builder).toBeInstanceOf(PackageURLBuilder)
132132
})
133133

134-
it('should create npm builder', () => {
135-
const purl = PackageURLBuilder.npm().name('lodash').build()
136-
137-
expect(purl.type).toBe('npm')
138-
expect(purl.name).toBe('lodash')
139-
})
140-
141-
it('should create pypi builder', () => {
142-
const purl = PackageURLBuilder.pypi().name('requests').build()
143-
144-
expect(purl.type).toBe('pypi')
145-
expect(purl.name).toBe('requests')
146-
})
147-
148-
it('should create maven builder', () => {
149-
const purl = PackageURLBuilder.maven()
150-
.namespace('org.apache.commons')
151-
.name('commons-lang3')
152-
.build()
153-
154-
expect(purl.type).toBe('maven')
155-
expect(purl.namespace).toBe('org.apache.commons')
156-
expect(purl.name).toBe('commons-lang3')
157-
})
158-
159-
it('should create gem builder', () => {
160-
const purl = PackageURLBuilder.gem().name('rails').build()
161-
162-
expect(purl.type).toBe('gem')
163-
expect(purl.name).toBe('rails')
164-
})
165-
166-
it('should create golang builder', () => {
167-
const purl = PackageURLBuilder.golang()
168-
.namespace('github.com/gin-gonic')
169-
.name('gin')
170-
.build()
171-
172-
expect(purl.type).toBe('golang')
173-
expect(purl.namespace).toBe('github.com/gin-gonic')
174-
expect(purl.name).toBe('gin')
175-
})
176-
177-
it('should create cargo builder', () => {
178-
const purl = PackageURLBuilder.cargo().name('serde').build()
179-
180-
expect(purl.type).toBe('cargo')
181-
expect(purl.name).toBe('serde')
182-
})
183-
184-
it('should create nuget builder', () => {
185-
const purl = PackageURLBuilder.nuget().name('Newtonsoft.Json').build()
186-
187-
expect(purl.type).toBe('nuget')
188-
expect(purl.name).toBe('Newtonsoft.Json')
189-
})
190-
191-
it('should create composer builder', () => {
192-
const purl = PackageURLBuilder.composer()
193-
.namespace('symfony')
194-
.name('console')
195-
.build()
196-
197-
expect(purl.type).toBe('composer')
198-
expect(purl.namespace).toBe('symfony')
199-
expect(purl.name).toBe('console')
134+
it.each([
135+
['npm', undefined, 'lodash'],
136+
['pypi', undefined, 'requests'],
137+
['maven', 'org.apache.commons', 'commons-lang3'],
138+
['gem', undefined, 'rails'],
139+
['golang', 'github.com/gin-gonic', 'gin'],
140+
['cargo', undefined, 'serde'],
141+
['nuget', undefined, 'Newtonsoft.Json'],
142+
['composer', 'symfony', 'console'],
143+
] as const)('should create %s builder', (type, namespace, name) => {
144+
const builder = (PackageURLBuilder as any)[type]()
145+
if (namespace !== undefined) {
146+
builder.namespace(namespace)
147+
}
148+
const purl = builder.name(name).build()
149+
150+
expect(purl.type).toBe(type)
151+
expect(purl.name).toBe(name)
152+
if (namespace !== undefined) {
153+
expect(purl.namespace).toBe(namespace)
154+
}
200155
})
201156
})
202157

0 commit comments

Comments
 (0)