public void DontRaiseEventWhenViewersIsSameAsBefore() { var packet = BuildLiveEvent("channel:1234:update", viewers: 35); var sim = SimAnon.Value; var ws = sim.ConstellationWebSocket; using (var sut = new MixerService(sim.Config, LoggerFactory, sim)) { sut.StartAsync(sim.Cancel.Token).Wait(Simulator.TIMEOUT); ws.InjectPacket(packet); // 1st using (var monitor = sut.Monitor()) { ws.InjectPacket(packet); // 2nd monitor.Should().NotRaise(nameof(sut.Updated)); } } }
public void RaisesUserLeftEvent() { var sim = SimAnon.Value; var packet = BuildUserJoinOrLeave(sim, "SomeNewUser", 34103083, isJoin: false); var ws = sim.ChatWebSocket; using (var sut = new MixerService(sim.Config, LoggerFactory, sim)) { sut.StartAsync(sim.Cancel.Token).Wait(Simulator.TIMEOUT); using (var monitor = sut.Monitor()) { ws.InjectPacket(packet); monitor.Should().Raise(nameof(sut.UserLeft)) .WithArgs <ChatUserInfoEventArgs>(a => a.UserId == 34103083 && a.UserName == "SomeNewUser" && a.ServiceName == "Mixer" && a.ChannelId == sim.ChannelInfo.Id) .WithSender(sut); } } }
public void HandlesNullAvatar() { var sim = SimAnon.Value; var packet = BuildChatMessage(sim, 56789, "connor", "Hello world!", roles: new string[] { "Owner", "Mod" }, avatar: null); var ws = sim.ChatWebSocket; using (var sut = new MixerService(sim.Config, LoggerFactory, sim)) { sut.StartAsync(sim.Cancel.Token).Wait(Simulator.TIMEOUT); using (var monitor = sut.Monitor()) { ws.InjectPacket(packet); monitor.Should().Raise(nameof(sut.ChatMessage)) .WithArgs <ChatMessageEventArgs>(a => a.Properties.ContainsKey("AvatarUrl") && a.UserName == "connor") .WithSender(sut); } } }
public void DetectsUserRoles() { var sim = SimAnon.Value; var packet = BuildChatMessage(sim, 56789, "connor", "Hello world!", roles: new string[] { "Owner", "Mod" }); var ws = sim.ChatWebSocket; using (var sut = new MixerService(sim.Config, LoggerFactory, sim)) { sut.StartAsync(sim.Cancel.Token).Wait(Simulator.TIMEOUT); using (var monitor = sut.Monitor()) { ws.InjectPacket(packet); monitor.Should().Raise(nameof(sut.ChatMessage)) .WithArgs <ChatMessageEventArgs>(a => a.Message == "Hello world!" && a.UserName == "connor" && a.UserId == 56789 && a.IsModerator && a.IsOwner && !a.IsWhisper) .WithSender(sut); } } }
public void CanCombineEvent() { var packet = BuildLiveEvent("channel:1234:update", followers: 22, viewers: 43, online: true); var sim = SimAnon.Value; var ws = sim.ConstellationWebSocket; using (var sut = new MixerService(sim.Config, LoggerFactory, sim)) { sut.StartAsync(sim.Cancel.Token).Wait(Simulator.TIMEOUT); using (var monitor = sut.Monitor()) { ws.InjectPacket(packet); monitor.Should().Raise(nameof(sut.Updated)) .WithArgs <ServiceUpdatedEventArgs>(a => a.NewFollowers == 22 && a.NewViewers == 43 && a.IsOnline == true && a.ServiceName == "Mixer" && a.ChannelId == sim.ChannelInfo.Id) .WithSender(sut); } } }