Пример #1
0
        public void ShouldOutputBlockNotSuppliedMessage(String height)
        {
            Sut.Execute(new String[] { height });

            MockedWriter.Verify(x => x.WriteLine($"Pyramid block not supplied."));
            MockedTwitchClientManager.Verify(x => x.SpoolMessage(PrimaryChannelName, It.IsAny <String>(), It.IsAny <Priority>()), Times.Never());
        }
Пример #2
0
        public void ShouldFailToJoinHeistDueToNonPositiveWager(Int32 points)
        {
            Player.Points = 1;
            Sut.UpdateWager(MockedContext.Object, Player, p => points);

            MockedTwitchClientManager.Verify(x => x.SpoolMessage(ChatMessage.Channel, It.Is <String>(x => x.Contains(Heist.FailToJoinHeistMessage)), Priority.Low), Times.Once());
        }
Пример #3
0
        public void ShouldOutputInvalidHeightMessage(String height)
        {
            Sut.Execute(new String[] { height });

            MockedWriter.Verify(x => x.WriteLine($"Pyramid height of \"{height}\" must be an integer"));
            MockedTwitchClientManager.Verify(x => x.SpoolMessage(PrimaryChannelName, It.IsAny <String>(), It.IsAny <Priority>()), Times.Never());
        }
Пример #4
0
        public void ShouldRefreshComponentsWithOptions(Boolean regularClientOptions)
        {
            IClientOptions clientOptions = regularClientOptions ? RegularClientOptions : ModeratorClientOptions;

            Sut.Refresh(clientOptions);

            MockedTwitchClientManager.Verify(x => x.TryInitializeTwitchClient(Sut, clientOptions, It.IsAny <LoginCredentials>()), Times.Once());
            MockedTwitchClientManager.Verify(x => x.TryJoinInitialChannels(It.IsAny <IReadOnlyList <JoinedChannel> >()), Times.Once());
        }
Пример #5
0
        public void ShouldSetColorFromColorSelector()
        {
            var args = new OnMessageSentArgs()
            {
                SentMessage = SentMessageBuilder
                              .Create()
                              .WithMessage(Message)
                              .Build()
            };

            Sut.TwitchClient_OnMessageSent(null, args);

            MockedTwitchClientManager
            .Verify(x => x.SpoolMessage(PrimaryChannelName, $".color {Color1}", Priority.Medium), Times.Once());
        }
Пример #6
0
        public void ShouldIgnoreCommands()
        {
            var args = new OnMessageSentArgs()
            {
                SentMessage = SentMessageBuilder
                              .Create()
                              .WithMessage('.' + Message)
                              .Build()
            };

            Sut.TwitchClient_OnMessageSent(null, args);

            MockedTwitchClientManager
            .Verify(x => x.SpoolMessage(PrimaryChannelName, It.IsAny <String>(), Priority.Medium), Times.Never());
        }
Пример #7
0
        public void ShouldJoinHeistForFirstTime(
            Int32 playerStorage,
            Int32 pointsWagered,
            Int32 playerPoints,
            Int32 expectedPointsToWager,
            Int32 expectedPlayerPointsAfterWager)
        {
            Player.MaximumPointStorage = playerStorage;
            Player.Points = playerPoints;
            Sut.UpdateWager(MockedContext.Object, Player, p => pointsWagered);

            Assert.Contains(Sut.Wagers, x => x.PlayerTwitchID.Equals(Player.TwitchUserID) && x.WageredPoints == expectedPointsToWager);
            MockedTwitchClientManager.Verify(x => x.SpoolMessage(ChatMessage.Channel, It.Is <String>(x => x.Contains(String.Format(Heist.SucceedToJoinHeistMessage, expectedPointsToWager))), Priority.Medium), Times.Once());
            Assert.Equal(expectedPlayerPointsAfterWager, Player.Points);
        }
Пример #8
0
        public void ShouldContainRelevantInformation(Boolean isModerator, String expectedModeratorText)
        {
            Sut.IsModerator = isModerator;

            var commandStatus = Guid.NewGuid().ToString();

            MockedCommandRepository.Setup(x => x.GetStatus()).Returns(commandStatus);

            MockedTwitchClientManager.Setup(x => x.PrimaryChannelName).Returns(Guid.NewGuid().ToString());

            String prompt = Sut.GetPrompt();

            Assert.Contains(commandStatus, prompt);
            Assert.Contains(expectedModeratorText, prompt);
            Assert.Contains(MockedTwitchClientManager.Object.PrimaryChannelName, prompt);
        }
Пример #9
0
        public void ShouldJoinChannelIfBothInitializeClientAndJoinChannels(
            Boolean successfullyInitializeClient,
            Boolean successfullyJoinChannels,
            Boolean expectedSucess)
        {
            MockedTwitchClientManager
            .Setup(x => x.TryInitializeTwitchClient(Sut, It.IsAny <IClientOptions>(), It.IsAny <LoginCredentials>()))
            .Returns(successfullyInitializeClient ? LoginCredentials : null);

            MockedTwitchClientManager
            .Setup(x => x.TryJoinInitialChannels(It.IsAny <IReadOnlyList <JoinedChannel> >()))
            .Returns(successfullyJoinChannels);

            var result = Sut.Start();

            Assert.Equal(expectedSucess ? LoginCredentials : null, result);
        }
Пример #10
0
        public void ShouldLeaveHeist(
            Int32 playerStorage,
            Int32 playerPoints,
            Int32 initialPointsWagered,
            Int32 newPointsWagered,
            Int32 expectedPlayerPointsAfterWager)
        {
            Player.MaximumPointStorage = playerStorage;
            Player.Points = playerPoints;
            Sut.Wagers.Add(new Wager(Player.TwitchUserID, initialPointsWagered));

            Sut.UpdateWager(MockedContext.Object, Player, p => newPointsWagered);

            Assert.DoesNotContain(Sut.Wagers, x => x.PlayerTwitchID.Equals(Player.TwitchUserID));
            MockedTwitchClientManager.Verify(x => x.SpoolMessage(ChatMessage.Channel, It.Is <String>(x => x.Contains(String.Format(Heist.SucceedToLeaveHeistMessage, initialPointsWagered))), Priority.Medium), Times.Once());
            Assert.Equal(expectedPlayerPointsAfterWager, Player.Points);
        }
Пример #11
0
        public void ShouldSpoolCorrectMessage()
        {
            var args = new OnUserTimedoutArgs()
            {
                UserTimeout = new UserTimeout(
                    channel: Guid.NewGuid().ToString(),
                    username: Guid.NewGuid().ToString(),
                    timeoutDuration: new Random().Next(),
                    timeoutReason: Guid.NewGuid().ToString())
            };

            Sut.TwitchClient_OnUserTimedout(null, args);

            MockedTwitchClientManager
            .Verify(x => x.SpoolMessage(PrimaryChannelName, $"WideHardo FREE MY MAN {args.UserTimeout.Username.ToUpper()}", Priority.Medium),
                    Times.Once());
        }
Пример #12
0
        public UsingCommandRepository()
        {
            MockedWriter = new();

            MockedTwitchClientManager = new();

            MockedUserCommandValidator = new();

            MockedCommandConfigurationStrategy = new();

            MockedTwitchClientManager.SetupAllProperties();

            MockedTwitchClient = MockedTwitchClientManager.SetupClient();

            MockedSetting1     = new();
            MockedSetting2     = new();
            MockedSetting3     = new();
            MockedCommand      = new();
            MockedUserCommand1 = new();
            MockedUserCommand2 = new();

            MockedSetting1.SetupAllProperties();
            MockedSetting2.SetupAllProperties();
            MockedSetting3.SetupAllProperties();
            MockedCommand.SetupAllProperties();
            MockedUserCommand1.SetupAllProperties();
            MockedUserCommand2.SetupAllProperties();

            MockedSetting1.Setup(x => x.Name).Returns(Name.From("s1"));
            MockedSetting2.Setup(x => x.Name).Returns(Name.From("s2"));
            MockedSetting3.Setup(x => x.Name).Returns(Name.From("s3"));
            MockedCommand.Setup(x => x.Name).Returns(Name.From("c"));
            MockedUserCommand1.Setup(x => x.Name).Returns(Name.From("uc1"));
            MockedUserCommand2.Setup(x => x.Name).Returns(Name.From("uc2"));

            MockedSetting1.Setup(x => x.Status).Returns("1");
            MockedSetting2.Setup(x => x.Status).Returns("2");
            MockedSetting3.Setup(x => x.Status).Returns("3");

            Sut = new CommandRepository(
                MockedWriter.Object,
                MockedTwitchClientManager.Object,
                MockedUserCommandValidator.Object,
                MockedCommandConfigurationStrategy.Object);
        }
Пример #13
0
        public void ShouldRespondWithUnchangedWagerMessage(
            Int32 playerStorage,
            Int32 playerPoints,
            Int32 initialPointsWagered,
            Int32 newPointsWagered,
            Int32 expectedNewPointsWagered,
            Int32 expectedPlayerPointsAfterWager)
        {
            Player.MaximumPointStorage = playerStorage;
            Player.Points = playerPoints;
            Sut.Wagers.Add(new Wager(Player.TwitchUserID, initialPointsWagered));

            Sut.UpdateWager(MockedContext.Object, Player, p => newPointsWagered);

            Assert.Contains(Sut.Wagers, x => x.PlayerTwitchID.Equals(Player.TwitchUserID) && x.WageredPoints == expectedNewPointsWagered);
            MockedTwitchClientManager.Verify(x => x.SpoolMessage(ChatMessage.Channel, It.Is <String>(x => x.Contains(String.Format(Heist.WagerIsUnchangedMessage, initialPointsWagered))), Priority.Low), Times.Once());
            Assert.Equal(expectedPlayerPointsAfterWager, Player.Points);
        }
Пример #14
0
        public void ShouldSetColorFromColorSelector()
        {
            var args = new OnMessageReceivedArgs()
            {
                ChatMessage = ChatMessageBuilder
                              .Create()
                              .WithTwitchLibMessage(TwitchLibMessageBuilder
                                                    .Create()
                                                    .WithUsername(BotUsername)
                                                    .WithBotUserName(BotUsername))
                              .WithMessage(Message)
                              .Build()
            };

            Sut.Client_OnMessageReceived(null, args);

            MockedTwitchClientManager
            .Verify(x => x.SpoolMessage(PrimaryChannelName, $".color {Color1}", Priority.Medium), Times.Once());
        }
Пример #15
0
        public void ShouldIgnoreNonBotUsername()
        {
            var args = new OnMessageReceivedArgs()
            {
                ChatMessage = ChatMessageBuilder
                              .Create()
                              .WithTwitchLibMessage(TwitchLibMessageBuilder
                                                    .Create()
                                                    .WithUsername(Username)
                                                    .WithBotUserName(BotUsername))
                              .WithMessage(Message)
                              .Build()
            };

            Sut.Client_OnMessageReceived(null, args);

            MockedTwitchClientManager
            .Verify(x => x.SpoolMessage(PrimaryChannelName, It.IsAny <String>(), It.IsAny <Priority>()), Times.Never());
        }