@@ -2,7 +2,11 @@ import { expect, test } from '@rstest/core';
22import {
33 checkCancel ,
44 create ,
5+ isNpmTemplate ,
56 multiselect ,
7+ resolveCustomTemplate ,
8+ resolveNpmTemplate ,
9+ sanitizeCacheKey ,
610 select ,
711 text ,
812} from '../dist/index.js' ;
@@ -14,3 +18,37 @@ test('should export public APIs', () => {
1418 expect ( typeof select ) . toBe ( 'function' ) ;
1519 expect ( typeof text ) . toBe ( 'function' ) ;
1620} ) ;
21+
22+ test ( 'should export npm template utilities' , ( ) => {
23+ expect ( typeof isNpmTemplate ) . toBe ( 'function' ) ;
24+ expect ( typeof resolveCustomTemplate ) . toBe ( 'function' ) ;
25+ expect ( typeof resolveNpmTemplate ) . toBe ( 'function' ) ;
26+ expect ( typeof sanitizeCacheKey ) . toBe ( 'function' ) ;
27+ } ) ;
28+
29+ test ( 'should detect npm templates correctly' , ( ) => {
30+ // npm: prefix
31+ expect ( isNpmTemplate ( 'npm:my-package' ) ) . toBe ( true ) ;
32+ expect ( isNpmTemplate ( 'npm:@scope/package' ) ) . toBe ( true ) ;
33+
34+ // Scoped packages
35+ expect ( isNpmTemplate ( '@scope/package' ) ) . toBe ( true ) ;
36+
37+ // Pure package names
38+ expect ( isNpmTemplate ( 'my-package' ) ) . toBe ( true ) ;
39+ expect ( isNpmTemplate ( 'my-package-name' ) ) . toBe ( true ) ;
40+
41+ // Not npm templates
42+ expect ( isNpmTemplate ( './local-path' ) ) . toBe ( false ) ;
43+ expect ( isNpmTemplate ( '../relative-path' ) ) . toBe ( false ) ;
44+ expect ( isNpmTemplate ( 'github:user/repo' ) ) . toBe ( false ) ;
45+ expect ( isNpmTemplate ( 'https://example.com' ) ) . toBe ( false ) ;
46+ expect ( isNpmTemplate ( '/absolute/path' ) ) . toBe ( false ) ;
47+ } ) ;
48+
49+ test ( 'should sanitize cache keys correctly' , ( ) => {
50+ expect ( sanitizeCacheKey ( 'my-package' , '1.0.0' ) ) . toBe ( 'my-package@1.0.0' ) ;
51+ expect ( sanitizeCacheKey ( '@scope/package' , 'latest' ) ) . toBe ( '@scope/package@latest' ) ;
52+ expect ( sanitizeCacheKey ( 'my-package' , '' ) ) . toBe ( 'my-package@latest' ) ;
53+ expect ( sanitizeCacheKey ( 'my/package' , '1.0.0' ) ) . toBe ( 'my_package@1.0.0' ) ;
54+ } ) ;
0 commit comments