| File: JsonExtensionsTests.cs | Web Access |
| Project: src\tests\Aspire.Hosting.Azure.Tests\Aspire.Hosting.Azure.Tests.csproj (Aspire.Hosting.Azure.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Text.Json.Nodes; namespace Aspire.Hosting.Azure.Tests; public class JsonExtensionsTests { [Fact] public void Prop_ReturnsExistingNode_WhenNodeAlreadyExists() { // Arrange var rootJson = new JsonObject(); var azureNode = rootJson.Prop("Azure"); azureNode.AsObject()["TestProperty"] = "TestValue"; // Act var retrievedNode = rootJson.Prop("Azure"); // Assert Assert.Same(azureNode, retrievedNode); Assert.Equal("TestValue", retrievedNode["TestProperty"]!.GetValue<string>()); } [Fact] public void Prop_CreatesNewNode_WhenNodeDoesNotExist() { // Arrange var rootJson = new JsonObject(); // Act var newNode = rootJson.Prop("NewProperty"); // Assert Assert.NotNull(newNode); Assert.Same(rootJson["NewProperty"], newNode); } [Fact] public void Prop_NestedAccess_CreatesHierarchy() { // Arrange var rootJson = new JsonObject(); // Act var deeply = rootJson.Prop("Level1") .Prop("Level2") .Prop("Level3") .Prop("Level4"); // Assert Assert.NotNull(rootJson["Level1"]); Assert.NotNull(rootJson["Level1"]!["Level2"]); Assert.NotNull(rootJson["Level1"]!["Level2"]!["Level3"]); Assert.NotNull(rootJson["Level1"]!["Level2"]!["Level3"]!["Level4"]); Assert.Same(deeply, rootJson["Level1"]!["Level2"]!["Level3"]!["Level4"]); } }