Skip to content

Commit 9c7949d

Browse files
committed
add test to ensure the json converter do not mess with the extensions list
1 parent 1a8797e commit 9c7949d

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestReaderTests.cs

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)