public void IsReadyToPost(int?numberOfClipsPerDay, string nowString, string stampString, bool enableNumberOfClipsPerDay, bool expectedResult) { var stamp = DateTime.Parse(stampString); var existingHistory = new BroadcasterHistoryContainer { Stamp = stamp }; var existingHistories = new List <BroadcasterHistoryContainer> { existingHistory }; var yesterday = DateTime.Parse(nowString).AddDays(-1); var pendingBroadcasterConfig = new PendingBroadcasterConfig { NumberOfClipsPerDay = numberOfClipsPerDay, ExistingHistories = existingHistories }; var broadcasters = new List <PendingBroadcasterConfig> { pendingBroadcasterConfig }; var pendingChannelConfigContainer = new PendingChannelConfigContainer { Broadcasters = broadcasters }; var channelContainers = new List <PendingChannelConfigContainer> { pendingChannelConfigContainer }; var result = _Helper.ReadyToPostContainers(channelContainers, yesterday, enableNumberOfClipsPerDay); var anyReadyBroadcasters = result.SelectMany(s => s.Broadcasters).Any(); Assert.That(anyReadyBroadcasters, Is.EqualTo(expectedResult)); }
public async Task SendMessagesAsync(string title, int views, float duration, string createdAtString, string clipUrl, decimal?utcHourOffset, string expectedMessage) { var createdAt = DateTime.Parse(createdAtString); var channel = new Mock <IMessageChannel>(); var insertedContainer = new ClipHistoryContainer { ClipUrl = clipUrl, Title = title, Views = views, Duration = duration, CreatedAt = createdAt }; var userMessage = new Mock <IUserMessage>(); channel.Setup(s => s.SendMessageAsync(expectedMessage, It.IsAny <bool>(), It.IsAny <Embed>(), It.IsAny <RequestOptions>())).ReturnsAsync(userMessage.Object); var unseenClips = new List <ClipHistoryContainer> { insertedContainer }; var pendingChannelConfigContainer = new PendingChannelConfigContainer { UtcHourOffset = utcHourOffset }; var unseenChannelClipsContainer = new UnseenChannelClipsContainer(pendingChannelConfigContainer, unseenClips); var channelContainer = new ChannelContainer(unseenChannelClipsContainer, channel.Object); var task = _Helper.SendMessagesAsync(channelContainer); await task; /* * TODO * * VerifyAll fails the test when ran in the cloud: * * Moq.MockException : The following setups on mock 'Mock<Discord.IMessageChannel:00000002>' were not matched. */ //channel.VerifyAll(); Assert.That(task.IsCompletedSuccessfully, Is.True); }
public void ClipsWithMinViews(int clipViews, int?globalMinViews, int?minViews, int expectedResult) { const int id = 123; var clip = new Clip { Views = clipViews }; var clips = new List <Clip> { clip }; var pendingClipContainer = new PendingClipContainer { Clips = clips, MinViews = minViews }; var pendingClipContainers = new List <PendingClipContainer> { pendingClipContainer }; var pendingChannelConfigContainer = new PendingChannelConfigContainer { ChannelId = id, GlobalMinViews = globalMinViews }; var channelClipsContainer = new ChannelClipsContainer { PendingChannelConfigContainer = pendingChannelConfigContainer, PendingClipContainers = pendingClipContainers }; var channelClipsContainers = new List <ChannelClipsContainer> { channelClipsContainer }; var results = _Helper.ClipsWithMinViews(channelClipsContainers); Assert.That(results.Count(s => s.PendingChannelConfigContainer.ChannelId == id), Is.EqualTo(expectedResult)); }
static bool IsAfterTimeBetweenClips(PendingChannelConfigContainer channelContainer, DateTime now) { if (!channelContainer.TimeSpanBetweenClipsAsTicks.HasValue) { return(true); } var histories = channelContainer.Broadcasters.SelectMany(s => s.ExistingHistories).ToList(); if (!histories.Any()) { return(true); } var latestHistoryStamp = histories.Max(s => s.Stamp); var timeSinceLastPost = now - latestHistoryStamp; return(timeSinceLastPost.Ticks >= channelContainer.TimeSpanBetweenClipsAsTicks.Value); }
public async Task BuildClipContainers() { const string broadcaster = "broadcaster"; var pendingBroadcasterConfig = new PendingBroadcasterConfig { Broadcaster = broadcaster }; var broadcasters = new List <PendingBroadcasterConfig> { pendingBroadcasterConfig }; var container = new PendingChannelConfigContainer { Broadcasters = broadcasters }; var containers = new List <PendingChannelConfigContainer> { container }; const string topClipsEndpoint = "https://twitch.tv/topclips"; const string clientId = "123"; const string accept = "application/json"; var channelEndpoint = $"{topClipsEndpoint}&channel={broadcaster}"; var clip = new Clip(); var clips = new List <Clip> { clip }; var getClipsResponse = new GetClipsResponse { Clips = clips }; _TwitchWrapper.Setup(s => s.GetClips(channelEndpoint, clientId, accept)).ReturnsAsync(getClipsResponse); var results = await _Helper.BuildClipContainers(topClipsEndpoint, clientId, accept, containers); _TwitchWrapper.VerifyAll(); Assert.That(results.Count, Is.EqualTo(1)); var result = results[0]; Assert.That(result.PendingChannelConfigContainer, Is.EqualTo(container)); Assert.That(result.PendingClipContainers[0].Clips, Contains.Item(clip)); }
public ChannelClipsContainer(PendingChannelConfigContainer pendingChannelConfigContainer, List <PendingClipContainer> pendingClipContainers) { PendingChannelConfigContainer = pendingChannelConfigContainer; PendingClipContainers = pendingClipContainers; }
public UnseenChannelClipsContainer(PendingChannelConfigContainer pendingChannelConfigContainer, List <ClipHistoryContainer> unseenClips) { PendingChannelConfigContainer = pendingChannelConfigContainer; UnseenClips = unseenClips; }