public void CallsIntoClient()
            {
                var gitHubClient = Substitute.For<IGitHubClient>();
                var releasesClient = new ObservableReleasesClient(gitHubClient);
                var data = new ReleaseUpdate("fake-tag");

                releasesClient.CreateRelease("fake", "repo", data);

                gitHubClient.Release.Received(1).CreateRelease("fake", "repo", data);
            }
            public void RequestsCorrectUrl()
            {
                var gitHubClient = Substitute.For<IGitHubClient>();
                var releasesClient = new ObservableReleasesClient(gitHubClient);
                var data = new ReleaseUpdate("fake-tag");

                releasesClient.CreateRelease("fake", "repo", data);

                gitHubClient.Connection.PostAsync<Release>(
                    new Uri("repos/fake/repo/releases", UriKind.Relative), data, null, null);
            }
            public void EnsuresArgumentsNotNull()
            {
                var releasesClient = new ObservableReleasesClient(Substitute.For<IGitHubClient>());
                var data = new ReleaseUpdate("fake-tag");

                Assert.Throws<ArgumentNullException>(() => new ReleaseUpdate(null));
                Assert.Throws<ArgumentNullException>(() => releasesClient.CreateRelease(null, "name", data));
                Assert.Throws<ArgumentNullException>(() => releasesClient.CreateRelease("owner", null, data));
                Assert.Throws<ArgumentNullException>(() => releasesClient.CreateRelease("owner", "name", null));
            }