| File: Pipelines\PipelineSummaryTests.cs | Web Access |
| Project: src\tests\Aspire.Hosting.Tests\Aspire.Hosting.Tests.csproj (Aspire.Hosting.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #pragma warning disable ASPIREPIPELINES001 using Aspire.Hosting.Pipelines; namespace Aspire.Hosting.Tests.Pipelines; [Trait("Partition", "4")] public class PipelineSummaryTests { [Fact] public void Add_WithValidKeyAndValue_AddsItemToCollection() { // Arrange var summary = new PipelineSummary(); // Act summary.Add("Key1", "Value1"); // Assert Assert.Single(summary.Items); Assert.Equal("Key1", summary.Items[0].Key); Assert.Equal("Value1", summary.Items[0].Value); Assert.False(summary.Items[0].EnableMarkdown); } [Fact] public void Add_MultipleItems_PreservesInsertionOrder() { // Arrange var summary = new PipelineSummary(); // Act summary.Add("First", "1"); summary.Add("Second", "2"); summary.Add("Third", "3"); // Assert Assert.Equal(3, summary.Items.Count); Assert.Equal("First", summary.Items[0].Key); Assert.Equal("Second", summary.Items[1].Key); Assert.Equal("Third", summary.Items[2].Key); } [Fact] public void Add_DuplicateKeys_AllowsBothInItems() { // Arrange var summary = new PipelineSummary(); // Act summary.Add("Key", "Value1"); summary.Add("Key", "Value2"); // Assert Assert.Equal(2, summary.Items.Count); Assert.Equal("Value1", summary.Items[0].Value); Assert.Equal("Value2", summary.Items[1].Value); } [Theory] [InlineData(null)] [InlineData("")] [InlineData(" ")] public void Add_WithNullOrWhitespaceKey_ThrowsArgumentException(string? key) { // Arrange var summary = new PipelineSummary(); // Act & Assert Assert.ThrowsAny<ArgumentException>(() => summary.Add(key!, "value")); } [Theory] [InlineData(null)] [InlineData("")] [InlineData(" ")] public void Add_WithNullOrWhitespaceValue_ThrowsArgumentException(string? value) { // Arrange var summary = new PipelineSummary(); // Act & Assert Assert.ThrowsAny<ArgumentException>(() => summary.Add("key", value!)); } [Fact] public void Items_ReturnsReadOnlyCollection() { // Arrange var summary = new PipelineSummary(); summary.Add("Key", "Value"); // Act var items = summary.Items; // Assert Assert.IsType<System.Collections.ObjectModel.ReadOnlyCollection<PipelineSummaryItem>>(items); } [Fact] public void Items_WhenEmpty_ReturnsEmptyCollection() { // Arrange var summary = new PipelineSummary(); // Act & Assert Assert.Empty(summary.Items); } [Fact] public void Items_WithItems_ReturnsItemsInInsertionOrder() { // Arrange var summary = new PipelineSummary(); summary.Add("Key1", "Value1"); summary.Add("Key2", "Value2"); // Act & Assert Assert.Equal(2, summary.Items.Count); Assert.Equal("Key1", summary.Items[0].Key); Assert.Equal("Value1", summary.Items[0].Value); Assert.Equal("Key2", summary.Items[1].Key); Assert.Equal("Value2", summary.Items[1].Value); } [Fact] public void Items_WithDuplicateKeys_PreservesAllEntries() { // Arrange var summary = new PipelineSummary(); summary.Add("Key", "FirstValue"); summary.Add("Key", "LastValue"); // Act & Assert Assert.Equal(2, summary.Items.Count); Assert.Equal("FirstValue", summary.Items[0].Value); Assert.Equal("LastValue", summary.Items[1].Value); } [Fact] public void Add_WithUnicodeCharactersInKey_Succeeds() { // Arrange var summary = new PipelineSummary(); // Act summary.Add("☁️ Target", "Azure"); summary.Add("📦 Resource Group", "rg-test"); // Assert Assert.Equal(2, summary.Items.Count); Assert.Equal("☁️ Target", summary.Items[0].Key); Assert.Equal("📦 Resource Group", summary.Items[1].Key); } [Fact] public void Add_WithMarkdownString_SetsEnableMarkdownTrue() { // Arrange var summary = new PipelineSummary(); // Act summary.Add("📦 Resource Group", new MarkdownString("[rg-test](https://portal.azure.com)")); // Assert Assert.Single(summary.Items); Assert.Equal("📦 Resource Group", summary.Items[0].Key); Assert.Equal("[rg-test](https://portal.azure.com)", summary.Items[0].Value); Assert.True(summary.Items[0].EnableMarkdown); } [Fact] public void Add_WithPlainString_SetsEnableMarkdownFalse() { // Arrange var summary = new PipelineSummary(); // Act summary.Add("☁️ Target", "Azure"); // Assert Assert.Single(summary.Items); Assert.False(summary.Items[0].EnableMarkdown); } [Fact] public void Add_MixedPlainAndMarkdown_PreservesFlags() { // Arrange var summary = new PipelineSummary(); // Act summary.Add("☁️ Target", "Azure"); summary.Add("📦 Resource Group", new MarkdownString("[rg-test](https://portal.azure.com)")); summary.Add("🌐 Location", "eastus"); // Assert Assert.Equal(3, summary.Items.Count); Assert.False(summary.Items[0].EnableMarkdown); Assert.True(summary.Items[1].EnableMarkdown); Assert.False(summary.Items[2].EnableMarkdown); } }