public async Task Handle_GetLostCommandPresent_DeletesPullDogEnvironment()
        {
            //Arrange
            var fakeMediator = Substitute.For <IMediator>();

            var handler = new BotCommandPayloadHandler(
                fakeMediator,
                Substitute.For <IHostEnvironment>());

            //Act
            await handler.HandleAsync(new WebhookPayloadContext(
                                          new WebhookPayload()
            {
                Comment = new CommentPayload()
                {
                    Body = "@pull-dog down"
                }
            },
                                          null !,
                                          new PullDogRepository(),
                                          new PullDogPullRequest()));

            //Assert
            await fakeMediator
            .Received(1)
            .Send(Arg.Any <DeleteInstanceByPullRequestCommand>());
        }
        public async Task Handle_GoFetchCommandPresentWithEnvironmentName_ProvisionsPullDogEnvironment()
        {
            //Arrange
            var fakeMediator = Substitute.For <IMediator>();

            var fakeHostEnvironment = Substitute.For <IHostEnvironment>();

            fakeHostEnvironment.EnvironmentName.Returns("environment");

            var handler = new BotCommandPayloadHandler(
                fakeMediator,
                fakeHostEnvironment);

            //Act
            await handler.HandleAsync(new WebhookPayloadContext(
                                          new WebhookPayload()
            {
                Comment = new CommentPayload()
                {
                    Body = "@pull-dog up environment"
                }
            },
                                          null !,
                                          new PullDogRepository(),
                                          new PullDogPullRequest()));

            //Assert
            await fakeMediator
            .Received(1)
            .Send(Arg.Any <ProvisionPullDogEnvironmentCommand>());
        }
        public async Task CanHandle_ValidConditions_ReturnsTrue()
        {
            //Arrange
            var fakeMediator = Substitute.For <IMediator>();

            var handler = new BotCommandPayloadHandler(
                fakeMediator,
                Substitute.For <IHostEnvironment>());

            //Act
            var result = handler.CanHandle(new WebhookPayload()
            {
                Action = "created",
                Issue  = new IssuePayload()
                {
                    PullRequest = new IssuePullRequestPayload()
                },
                Comment = new CommentPayload()
            });

            //Assert
            Assert.IsTrue(result);
        }