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"); }
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"); }
public async Task OnRefreshChannelListClick(Office.IRibbonControl control) { try { var session = await _sessionRepository.RestoreSession(); var channelList = await Task.Run(() => session.GetChannels()); var channelSettings = new ChannelListSetting { Channels = channelList.Select(x => x.ToSetting()).ToList() }; var channelMap = JsonConvert.SerializeObject(channelSettings); await Task.Run(() => _settingsSaveService.SaveChannels(channelMap)); } catch (MattermostException mex) { _errorDisplay.Display(mex); } catch (Exception exception) { _errorDisplay.Display(exception); } }