public async Task FetchReadmeContent_ContentNotFound()
        {
            // Arrange
            MockRestClient(null, HttpStatusCode.NotFound);
            DataSourceAdaptee = new GithubDataSourceAdaptee(ConfigurationMock, ClientFactoryMock.Object, Mapper);

            // Act
            Func <Task> act = () => DataSourceAdaptee.FetchReadmeContent(It.IsAny <Uri>());
            string      retrievedReadmeContent = await DataSourceAdaptee.FetchReadmeContent(It.IsAny <Uri>());

            // Assert
            act.Should().NotThrow();
            retrievedReadmeContent.Should().BeNullOrEmpty();
        }
        public async Task FetchReadmeContent_GoodFlow()
        {
            // Arrange
            string readmeContent = new string("This is the content from a test readme file");

            MockRestClient(readmeContent, HttpStatusCode.OK);
            DataSourceAdaptee = new GithubDataSourceAdaptee(ConfigurationMock, ClientFactoryMock.Object, Mapper);

            // Act
            Action act = () => DataSourceAdaptee.FetchReadmeContent(It.IsAny <Uri>());
            string retrievedResourceResult = await DataSourceAdaptee.FetchReadmeContent(It.IsAny <Uri>());

            // Assert
            act.Should().NotThrow();
            retrievedResourceResult.Substring(1, retrievedResourceResult.Length - 2).Should().BeEquivalentTo(readmeContent);
        }
        public void FetchReadmeContent_ResponseIsNotSuccessful()
        {
            // Arrange
            string errorMessage = "Invalid test request";

            MockRestClient(null, HttpStatusCode.BadRequest, errorMessage);
            DataSourceAdaptee = new GithubDataSourceAdaptee(ConfigurationMock, ClientFactoryMock.Object, Mapper);

            // Act
            Func <Task> act = () => DataSourceAdaptee.FetchReadmeContent(It.IsAny <Uri>());

            // Assert
            act.Should().ThrowExactly <ExternalException>().WithMessage(errorMessage);
        }