public void EnsuresNonNullArguments()
            {
                var gitHubClient = Substitute.For<IGitHubClient>();
                var client = new ObservableRepositoryContentsClient(gitHubClient);

                Assert.Throws<ArgumentNullException>(() => client.GetReadmeHtml(null, "name"));
                Assert.Throws<ArgumentNullException>(() => client.GetReadmeHtml("owner", null));

                Assert.Throws<ArgumentException>(() => client.GetReadmeHtml("", "name"));
                Assert.Throws<ArgumentException>(() => client.GetReadmeHtml("owner", ""));
            }
            public async Task ReturnsReadmeHtmlWithRepositoryId()
            {
                var connection = Substitute.For<IConnection>();
                var gitHubClient = new GitHubClient(connection);
                var contentsClient = new ObservableRepositoryContentsClient(gitHubClient);
                IApiResponse<string> apiResponse = new ApiResponse<string>(new Response(), "<html>README</html>");

                connection.GetHtml(Args.Uri, null).Returns(Task.FromResult(apiResponse));

                var readme = await contentsClient.GetReadmeHtml(1);

                connection.Received().GetHtml(Arg.Is<Uri>(u => u.ToString() == "repositories/1/readme"), null);
                Assert.Equal("<html>README</html>", readme);
            }