@@ -47,8 +47,7 @@ public async Task Can_Read_PackageManifests_At_Root()
4747 var first = result . First ( ) ;
4848 Assert . AreEqual ( "My Package" , first . Name ) ;
4949 Assert . AreEqual ( "1.2.3" , first . Version ) ;
50- Assert . AreEqual ( 2 , first . Extensions . Count ( ) ) ;
51- Assert . IsTrue ( first . Extensions . All ( e => e is JsonElement ) ) ;
50+ Assert . AreEqual ( 2 , first . Extensions . Length ) ;
5251
5352 Assert . NotNull ( first . Importmap ) ;
5453 var importmap = first . Importmap ;
@@ -66,6 +65,45 @@ public async Task Can_Read_PackageManifests_At_Root()
6665 Assert . AreEqual ( "https://example.com/modules/shapes/square.js" , firstScope . Value ) ;
6766 }
6867
68+ [ Test ]
69+ public async Task Can_Deserialize_Extensions ( )
70+ {
71+ const string content = @"{
72+ ""name"": ""My Package"",
73+ ""version"": ""1.2.3"",
74+ ""allowTelemetry"": true,
75+ ""extensions"": [{
76+ ""type"": ""tree"",
77+ ""meta"": {
78+ ""label"": ""My Tree"",
79+ ""someArray"": [1, 2, 3]
80+ }
81+ }, {
82+ ""type"": ""headerApp""
83+ }
84+ ]
85+ }" ;
86+ _rootDirectoryContentsMock
87+ . Setup ( f => f . GetEnumerator ( ) )
88+ . Returns ( new List < IFileInfo > { CreatePackageManifestFile ( content ) } . GetEnumerator ( ) ) ;
89+
90+ var result = await _reader . ReadPackageManifestsAsync ( ) ;
91+ Assert . AreEqual ( 1 , result . Count ( ) ) ;
92+
93+ var first = result . First ( ) ;
94+
95+ // Ensure that the extensions are deserialized as JsonElement
96+ Assert . IsTrue ( first . Extensions . All ( e => e is JsonElement ) ) ;
97+
98+ // Test the deserialization of the first extension to make sure we don't break the JSON parsing
99+ JsonElement firstExtension = ( JsonElement ) first . Extensions . First ( ) ;
100+ Assert . AreEqual ( "tree" , firstExtension . GetProperty ( "type" ) . GetString ( ) ) ;
101+ var meta = firstExtension . GetProperty ( "meta" ) ;
102+ Assert . AreEqual ( "My Tree" , meta . GetProperty ( "label" ) . GetString ( ) ) ;
103+ var someArray = meta . GetProperty ( "someArray" ) ;
104+ Assert . AreEqual ( 1 , someArray [ 0 ] . GetInt32 ( ) ) ;
105+ }
106+
69107 [ Test ]
70108 public async Task Can_Read_PackageManifest_In_Root_Directories ( )
71109 {
0 commit comments