public void GetAdviseGroupMenuItems_IfNoAdviseGroupsExist_ReturnsCorrectMenuItems()
        {
            // Arrange

            var adviseGroupHelperStub = new Mock <IAdviseGroupHelper>();

            adviseGroupHelperStub.Setup(x => x.AdviseGroups).Returns(Array.Empty <AdviseGroupModel>());

            var mocker = new AutoMocker();

            mocker.Use(adviseGroupHelperStub);

            // Act

            var menuItems = DerivedExplorerItem.InvokeGetAdviseGroupMenuItems(Mock.Of <BasicAdviseGroupHolder>(), Mock.Of <ILibraryExplorerViewModel>(), adviseGroupHelperStub.Object);

            // Assert

            var expectedMenuItems = new[]
            {
                new CommandMenuItem(() => Task.CompletedTask)
                {
                    Header = "New Advise Group ...", IconKind = PackIconKind.FolderPlus
                },
            };

            menuItems.Should().BeEquivalentTo(expectedMenuItems, x => x.WithStrictOrdering());
        }
        public void AdviseGroupMenuItems_IfAdviseGroupsExistAndItemWithoutAdviseGroupIsSelected_ReturnsCorrectMenuItems()
        {
            // Arrange

            var adviseGroups = new[]
            {
                new AdviseGroupModel {
                    Id = new ItemId("1"), Name = "Advise Group 1"
                },
                new AdviseGroupModel {
                    Id = new ItemId("2"), Name = "Advise Group 2"
                },
            };

            var adviseGroupHelperStub = new Mock <IAdviseGroupHelper>();

            adviseGroupHelperStub.Setup(x => x.AdviseGroups).Returns(adviseGroups);

            var adviseGroupHolderStub = new Mock <BasicAdviseGroupHolder>();

            adviseGroupHolderStub.Setup(x => x.CurrentAdviseGroup).Returns <AdviseGroupModel>(null);

            var mocker = new AutoMocker();

            mocker.Use(adviseGroupHelperStub);

            // Act

            var menuItems = DerivedExplorerItem.InvokeGetAdviseGroupMenuItems(adviseGroupHolderStub.Object, Mock.Of <ILibraryExplorerViewModel>(), adviseGroupHelperStub.Object);

            // Assert

            var expectedMenuItems = new BasicMenuItem[]
            {
                new CommandMenuItem(() => Task.CompletedTask)
                {
                    Header = "New Advise Group ...", IconKind = PackIconKind.FolderPlus
                },
                new SeparatorMenuItem(),
                new CommandMenuItem(() => Task.CompletedTask)
                {
                    Header = "Advise Group 1", IconKind = null
                },
                new CommandMenuItem(() => Task.CompletedTask)
                {
                    Header = "Advise Group 2", IconKind = null
                },
            };

            menuItems.Should().BeEquivalentTo(expectedMenuItems, x => x.WithStrictOrdering().RespectingRuntimeTypes());
        }