@@ -64,19 +64,19 @@ describe('ManifestStore', () => {
6464 }
6565 } ) ;
6666
67- it ( 'should preserve provided extensions' , ( ) => {
67+ it ( 'should preserve extensions set via setExtension ' , ( ) => {
6868 const baseDir = setupBaseDir ( ) ;
6969 try {
70- const extensions = { tegg : { moduleReferences : [ { name : 'mod' , path : '/tmp/mod' } ] } } ;
70+ const teggData = { moduleReferences : [ { name : 'mod' , path : '/tmp/mod' } ] } ;
7171 const collector = ManifestStore . createCollector ( baseDir ) ;
72+ collector . setExtension ( 'tegg' , teggData ) ;
7273 const manifest = collector . generateManifest ( {
7374 serverEnv : 'prod' ,
7475 serverScope : '' ,
7576 typescriptEnabled : true ,
76- extensions,
7777 } ) ;
7878
79- assert . deepStrictEqual ( manifest . extensions , extensions ) ;
79+ assert . deepStrictEqual ( manifest . extensions , { tegg : teggData } ) ;
8080 } finally {
8181 fs . rmSync ( baseDir , { recursive : true , force : true } ) ;
8282 }
@@ -474,4 +474,80 @@ describe('ManifestStore', () => {
474474 }
475475 } ) ;
476476 } ) ;
477+
478+ describe ( 'setExtension()' , ( ) => {
479+ it ( 'should store and retrieve extension data' , ( ) => {
480+ const baseDir = setupBaseDir ( ) ;
481+ try {
482+ const collector = ManifestStore . createCollector ( baseDir ) ;
483+ const data = { modules : [ 'a' , 'b' ] } ;
484+ collector . setExtension ( 'tegg' , data ) ;
485+ // Not accessible via getExtension until generateManifest
486+ // (getExtension reads from data, not collector)
487+ const manifest = collector . generateManifest ( {
488+ serverEnv : 'prod' ,
489+ serverScope : '' ,
490+ typescriptEnabled : true ,
491+ } ) ;
492+ assert . deepStrictEqual ( manifest . extensions . tegg , data ) ;
493+ } finally {
494+ fs . rmSync ( baseDir , { recursive : true , force : true } ) ;
495+ }
496+ } ) ;
497+
498+ it ( 'should support multiple extension keys' , ( ) => {
499+ const baseDir = setupBaseDir ( ) ;
500+ try {
501+ const collector = ManifestStore . createCollector ( baseDir ) ;
502+ collector . setExtension ( 'tegg' , { a : 1 } ) ;
503+ collector . setExtension ( 'custom' , { b : 2 } ) ;
504+ const manifest = collector . generateManifest ( {
505+ serverEnv : 'prod' ,
506+ serverScope : '' ,
507+ typescriptEnabled : true ,
508+ } ) ;
509+ assert . deepStrictEqual ( manifest . extensions . tegg , { a : 1 } ) ;
510+ assert . deepStrictEqual ( manifest . extensions . custom , { b : 2 } ) ;
511+ } finally {
512+ fs . rmSync ( baseDir , { recursive : true , force : true } ) ;
513+ }
514+ } ) ;
515+
516+ it ( 'should overwrite previous value for same key' , ( ) => {
517+ const baseDir = setupBaseDir ( ) ;
518+ try {
519+ const collector = ManifestStore . createCollector ( baseDir ) ;
520+ collector . setExtension ( 'tegg' , { old : true } ) ;
521+ collector . setExtension ( 'tegg' , { new : true } ) ;
522+ const manifest = collector . generateManifest ( {
523+ serverEnv : 'prod' ,
524+ serverScope : '' ,
525+ typescriptEnabled : true ,
526+ } ) ;
527+ assert . deepStrictEqual ( manifest . extensions . tegg , { new : true } ) ;
528+ } finally {
529+ fs . rmSync ( baseDir , { recursive : true , force : true } ) ;
530+ }
531+ } ) ;
532+
533+ it ( 'should survive write → load roundtrip' , async ( ) => {
534+ const baseDir = setupBaseDir ( ) ;
535+ try {
536+ const collector = ManifestStore . createCollector ( baseDir ) ;
537+ collector . setExtension ( 'tegg' , { roundtrip : true } ) ;
538+ const manifest = collector . generateManifest ( {
539+ serverEnv : 'prod' ,
540+ serverScope : '' ,
541+ typescriptEnabled : true ,
542+ } ) ;
543+ await ManifestStore . write ( baseDir , manifest ) ;
544+
545+ const store = ManifestStore . load ( baseDir , 'prod' , '' ) ! ;
546+ assert . ok ( store ) ;
547+ assert . deepStrictEqual ( store . getExtension ( 'tegg' ) , { roundtrip : true } ) ;
548+ } finally {
549+ fs . rmSync ( baseDir , { recursive : true , force : true } ) ;
550+ }
551+ } ) ;
552+ } ) ;
477553} ) ;
0 commit comments