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));
                }
            }
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        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);
                }
            }
        }
示例#4
0
        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);
                }
            }
        }