public async Task InvalidRepo_ReportsError()
        {
            // Arrange
            var command = new GitHubIssueCommandBaseTester(_gitHubClient.Object, _discoveryService.Object);

            // Act

            // Assert
            await Assert.ThrowsAsync <CommandValidationException>(() => command.GetIssueTesterAsync($"{ValidOwner}/{InvalidRepo}#{ValidIssueNumber}"));
        }
        public async Task NotInARepoFolder_ThrowsValidationException()
        {
            // Arrange
            _discoveryService.Setup(service => service.DiscoverInCurrentDirectory())
            .Returns(() => null);

            var command = new GitHubIssueCommandBaseTester(_gitHubClient.Object, _discoveryService.Object);

            // Assert
            await Assert.ThrowsAsync <CommandValidationException>(() => command.GetIssueTesterAsync($"{ValidIssueNumber}"));
        }
        public async Task InARepoFolder_RetrievesIssue_WhenIssueNumberSpecified()
        {
            // Arrange
            var command = new GitHubIssueCommandBaseTester(_gitHubClient.Object, _discoveryService.Object);

            // Act
            await command.GetIssueTesterAsync($"{ValidIssueNumber}");

            // Assert
            _issuesClient.Verify(client => client.Get(ValidOwner, ValidRepo, ValidIssueNumber), Times.Once());
        }
        public async Task NotInARepoFolder_RetrievesIssue_WhenFullIssueSpecified()
        {
            // Arrange
            _discoveryService.Setup(service => service.DiscoverInCurrentDirectory())
            .Returns(() => null);

            var command = new GitHubIssueCommandBaseTester(_gitHubClient.Object, _discoveryService.Object);

            // Act
            await command.GetIssueTesterAsync($"{ValidOwner}/{ValidRepo}#{ValidIssueNumber}");

            // Assert
            _issuesClient.Verify(client => client.Get(ValidOwner, ValidRepo, ValidIssueNumber), Times.Once());
        }