File: Layout\TerminalDockStateTests.cs
Web Access
Project: src\tests\Aspire.Dashboard.Components.Tests\Aspire.Dashboard.Components.Tests.csproj (Aspire.Dashboard.Components.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Aspire.Dashboard.Components.Layout;
using Xunit;
 
namespace Aspire.Dashboard.Components.Tests.Layout;
 
public sealed class TerminalDockStateTests
{
    [Fact]
    public void Update_TracksVisibleResourceAndRaisesOnlyForChanges()
    {
        var state = new TerminalDockState();
        var changeCount = 0;
        state.Changed += () => changeCount++;
 
        state.Update(isVisible: true, resourceName: "frontend");
        state.Update(isVisible: true, resourceName: "frontend");
 
        Assert.True(state.IsResourceOpen("frontend"));
        Assert.False(state.IsResourceOpen("worker"));
        Assert.Equal(1, changeCount);
 
        state.Update(isVisible: false, resourceName: null);
 
        Assert.False(state.IsResourceOpen("frontend"));
        Assert.Equal(2, changeCount);
    }
}