using CursorLang.Models; using CursorLang.ViewModels; namespace CursorLang.Tests.ViewModels; public sealed class LayoutPopupViewModelTests { // Before the first layout change there is nothing to show, yet the window // is already being built [Fact] public void Before_the_first_layout_a_dash_is_shown() { Assert.Equal("—", new LayoutPopupViewModel(new AppSettings()).ShortName); } [Fact] public void The_look_comes_straight_from_the_settings() { var settings = new AppSettings(); Assert.Same(settings, new LayoutPopupViewModel(settings).Settings); } [Fact] public void A_changed_layout_name_is_announced_to_subscribers() { var viewModel = new LayoutPopupViewModel(new AppSettings()); List changed = []; viewModel.PropertyChanged += (_, e) => changed.Add(e.PropertyName); viewModel.ShortName = "RU"; Assert.Equal("RU", viewModel.ShortName); Assert.Equal([nameof(LayoutPopupViewModel.ShortName)], changed); } [Fact] public void The_same_layout_name_is_not_announced_again() { var viewModel = new LayoutPopupViewModel(new AppSettings()) { ShortName = "RU" }; List changed = []; viewModel.PropertyChanged += (_, e) => changed.Add(e.PropertyName); viewModel.ShortName = "RU"; Assert.Empty(changed); } }