public async void OnNewFollowersDetected_Raised_When_NewFollower() { var usersFollowsResponseFirstUserJson = JMock.Of <GetUsersFollowsResponse>(o => o.Follows == new[] { Mock.Of <Follow>(f => f.FromUserId == "FromFirstUserId") } ); var mockHandler = TwitchLibMock.HttpCallHandler(("https://api.twitch.tv/helix/users/follows", usersFollowsResponseFirstUserJson)); _api = TwitchLibMock.TwitchApi(mockHandler); var eventExecuteCount = 0; _followerService = new FollowerService(_api); _followerService.SetChannelsById(Utils.CreateListWithEmptyString()); _followerService.OnNewFollowersDetected += (sender, e) => eventExecuteCount++; await _followerService.UpdateLatestFollowersAsync(); var usersFollowsResponseSecondUserJson = JMock.Of <GetUsersFollowsResponse>(o => o.Follows == new[] { Mock.Of <Follow>(f => f.FromUserId == "FromSecondUserId") } ); TwitchLibMock.ResetHttpCallHandlerResponses(mockHandler, ("https://api.twitch.tv/helix/users/follows", usersFollowsResponseSecondUserJson)); await _followerService.UpdateLatestFollowersAsync(); Assert.Equal(2, eventExecuteCount); }
public async void OnNewFollowersDetected_NotRaised_When_NoNewFollowers() { var usersFollowsResponseJson = JMock.Of <GetUsersFollowsResponse>(o => o.Follows == new[] { Mock.Of <Follow>(f => f.FromUserId == "FromUserId") } ); _api = TwitchLibMock.TwitchApi( ("https://api.twitch.tv/helix/users/follows", usersFollowsResponseJson) ); var eventExcecutCount = 0; _followerService = new FollowerService(_api); _followerService.SetChannelsById(Utils.CreateListWithEmptyString()); _followerService.OnNewFollowersDetected += (sender, e) => eventExcecutCount++; await _followerService.UpdateLatestFollowersAsync(); await _followerService.UpdateLatestFollowersAsync(); Assert.Equal(1, eventExcecutCount); }
public async void OnStreamUpdate_Called_When_StreamAlreadyOnline() { var usersFollowsResponseJson = JMock.Of <GetStreamsResponse>(o => o.Streams == new[] { Mock.Of <Stream>(u => u.UserId == "UserId") } ); var mockHandler = TwitchLibMock.HttpCallHandler(("https://api.twitch.tv/helix/streams", usersFollowsResponseJson)); _api = TwitchLibMock.TwitchApi(mockHandler); var eventExecuteCount = 0; _liveStreamMonitor = new LiveStreamMonitorService(_api); _liveStreamMonitor.SetChannelsById(Utils.CreateListWithStrings("UserId")); _liveStreamMonitor.OnStreamUpdate += (sender, e) => eventExecuteCount++; await _liveStreamMonitor.UpdateLiveStreamersAsync(); await _liveStreamMonitor.UpdateLiveStreamersAsync(); Assert.Equal(1, eventExecuteCount); }
public async void OnNewFollowersDetected_NotRaised_When_NewFollowerOlderThanLatest() { var usersFollowsResponseFirstUserJson = JMock.Of <GetUsersFollowsResponse>(o => o.Follows == new[] { Mock.Of <Follow>(f => f.FromUserId == "FromFirstUserId" && f.FollowedAt == new DateTime(1)) } ); var mockHandler = new Mock <IHttpCallHandler>(); mockHandler .Setup(x => x.GeneralRequest(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Core.Enums.ApiVersion>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(new KeyValuePair <int, string>(200, usersFollowsResponseFirstUserJson)); _api = TwitchLibMock.TwitchApi(mockHandler); var eventExecuteCount = 0; _followerService = new FollowerService(_api); _followerService.SetChannelsById(Utils.CreateListWithEmptyString()); _followerService.OnNewFollowersDetected += (sender, e) => eventExecuteCount++; await _followerService.UpdateLatestFollowersAsync(); var usersFollowsResponseSecondUserJson = JMock.Of <GetUsersFollowsResponse>(o => o.Follows == new[] { Mock.Of <Follow>(f => f.FromUserId == "FromSecondUserId" && f.FollowedAt == new DateTime(0)) } ); mockHandler.Reset(); mockHandler .Setup(x => x.GeneralRequest(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Core.Enums.ApiVersion>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(new KeyValuePair <int, string>(200, usersFollowsResponseSecondUserJson)); await _followerService.UpdateLatestFollowersAsync(); Assert.Equal(1, eventExecuteCount); }
public async void LiveStreams_Contains_UserId_When_ServiceUpdated() { var usersFollowsResponseJson = JMock.Of <GetStreamsResponse>(o => o.Streams == new[] { Mock.Of <Stream>(u => u.UserId == "UserId") } ); _api = TwitchLibMock.TwitchApi( ("https://api.twitch.tv/helix/streams", usersFollowsResponseJson) ); _liveStreamMonitor = new LiveStreamMonitorService(_api); _liveStreamMonitor.SetChannelsById(Utils.CreateListWithStrings("UserId")); await _liveStreamMonitor.UpdateLiveStreamersAsync(); Assert.True(_liveStreamMonitor.LiveStreams.ContainsKey("UserId")); }
public async void KnownFollowers_Contains_UserId_When_ServiceUpdated() { var usersFollowsResponseJson = JMock.Of <GetUsersFollowsResponse>(o => o.Follows == new[] { Mock.Of <Follow>(u => u.FromUserId == "UserId" && u.ToUserId == "Id") } ); _api = TwitchLibMock.TwitchApi( ("https://api.twitch.tv/helix/users/follows", usersFollowsResponseJson) ); _followerService = new FollowerService(_api); _followerService.SetChannelsById(Utils.CreateListWithEmptyString()); await _followerService.UpdateLatestFollowersAsync(); Assert.NotNull(_followerService.KnownFollowers[string.Empty].FirstOrDefault(f => f.FromUserId == "UserId")); //Same check for SetChannelsByName var usersResponseJson = JMock.Of <GetUsersResponse>(o => o.Users == new[] { Mock.Of <User>(u => u.Id == "Id" && u.DisplayName == "DisplayName"), }); _api = TwitchLibMock.TwitchApi( ("https://api.twitch.tv/helix/users", usersResponseJson), ("https://api.twitch.tv/helix/users/follows", usersFollowsResponseJson) ); _followerService = new FollowerService(_api); _followerService.SetChannelsByName(Utils.CreateListWithEmptyString()); await _followerService.UpdateLatestFollowersAsync(); Assert.NotNull(_followerService.KnownFollowers[string.Empty].FirstOrDefault(f => f.FromUserId == "UserId")); }
public void OnServiceTick_Raised_When_ServiceTicked() { var usersFollowsResponseJson = JMock.Of <GetUsersFollowsResponse>(o => o.Follows == new[] { Mock.Of <Follow>() } ); _api = TwitchLibMock.TwitchApi( ("https://api.twitch.tv/helix/users/follows", usersFollowsResponseJson) ); var signalEvent = new ManualResetEvent(false); _followerService = new FollowerService(_api, checkIntervalInSeconds: 1); _followerService.SetChannelsById(Utils.CreateListWithEmptyString()); _followerService.OnServiceTick += (sender, e) => signalEvent.Set(); _followerService.Start(); Assert.True(signalEvent.WaitOne(1500)); }
public async void OnNewFollowersDetected_Raised_When_LatestFollowersUpdated() { var usersFollowsResponseJson = JMock.Of <GetUsersFollowsResponse>(o => o.Follows == new[] { Mock.Of <Follow>() } ); _api = TwitchLibMock.TwitchApi( ("https://api.twitch.tv/helix/users/follows", usersFollowsResponseJson) ); var eventExcecuted = false; _followerService = new FollowerService(_api); _followerService.SetChannelsById(Utils.CreateListWithEmptyString()); _followerService.OnNewFollowersDetected += (sender, e) => eventExcecuted = true; await _followerService.UpdateLatestFollowersAsync(); Assert.True(eventExcecuted); }