예제 #1
0
        public void GetDynamicMenu_ReturnsPostButton_ForSubscribedChannel()
        {
            const string             channelButtonIdPrefix = "channel_id-";
            const string             channelName           = "FunnyChannelName";
            const string             channelId             = "1234";
            const ChannelTypeSetting publicChannel         = ChannelTypeSetting.Public;
            var channelList = new ChannelListSetting
            {
                Channels = new List <ChannelSetting>
                {
                    new ChannelSetting {
                        ChannelName = channelName, ChannelId = channelId, Type = publicChannel
                    }
                }
            };
            var channels = JsonConvert.SerializeObject(channelList);
            var settings = new AddInSettings("http://localhost", "teamId",
                                             "username", channels, It.IsAny <MattermostVersion>());
            var settingsLoadService = new Mock <ISettingsLoadService>();

            settingsLoadService.Setup(x => x.Load()).Returns(settings);

            var classUnderTest = new MailItemContextMenuEntry(
                Mock.Of <IMailExplorer>(),
                settingsLoadService.Object,
                Mock.Of <ISettingsSaveService>(),
                Mock.Of <IErrorDisplay>(),
                Mock.Of <ISettingsUserInterface>(),
                Mock.Of <ISessionRepository>(),
                Mock.Of <IStringProvider>());

            var result = classUnderTest.GetDynamicMenu(Mock.Of <IRibbonControl>());

            result.Should()
            .WithNamespace("ns", "http://schemas.microsoft.com/office/2009/07/customui")
            .ContainXmlNode(@"//ns:button[contains(@label, ""FunnyChannelName"")]",
                            "because there should be one button for each channel");
            result.Should()
            .WithNamespace("ns", "http://schemas.microsoft.com/office/2009/07/customui")
            .ContainXmlNode(@"//ns:button[contains(@id, """ + channelButtonIdPrefix + channelId + @""")]",
                            "because the tag of the button should match the channelId");
        }
예제 #2
0
        public void GetDynamicMenu_ReturnsNoChannelButtons_IfChannelTypeIsDirect()
        {
            const string             channelName               = "FunnyChannelName";
            const string             channelId                 = "1234";
            const ChannelTypeSetting directChannel             = ChannelTypeSetting.Direct;
            const string             subscribedChannelAttribut = "OnPostIntoChannelClick";
            var channelList = new ChannelListSetting
            {
                Channels =
                    new List <ChannelSetting>
                {
                    new ChannelSetting {
                        ChannelName = channelName, ChannelId = channelId, Type = directChannel
                    }
                }
            };
            var channels = JsonConvert.SerializeObject(channelList);
            var settings = new AddInSettings("http://localhost", "teamId",
                                             "username", channels, It.IsAny <MattermostVersion>());
            var settingsLoadService = new Mock <ISettingsLoadService>();

            settingsLoadService.Setup(x => x.Load()).Returns(settings);

            var classUnderTest = new MailItemContextMenuEntry(
                Mock.Of <IMailExplorer>(),
                settingsLoadService.Object,
                Mock.Of <ISettingsSaveService>(),
                Mock.Of <IErrorDisplay>(),
                Mock.Of <ISettingsUserInterface>(),
                Mock.Of <ISessionRepository>(),
                Mock.Of <IStringProvider>());

            var result = classUnderTest.GetDynamicMenu(Mock.Of <IRibbonControl>());

            result.Should()
            .WithNamespace("ns", "http://schemas.microsoft.com/office/2009/07/customui")
            .DoNotContainXmlNode(@"//ns:button[contains(@onAction, """ + subscribedChannelAttribut + @""")]",
                                 "because there should be one button for each channel");
        }