public void DeleteCorrectUrlWithRepositoryId()
            {
                var connection   = Substitute.For <IConnection>();
                var gitHubClient = new GitHubClient(connection);
                var client       = new ObservableIssuesLabelsClient(gitHubClient);

                client.RemoveFromIssue(1, 42, "label");

                connection.Received().Delete <IReadOnlyList <Label> >(Arg.Is <Uri>(u => u.ToString() == "repositories/1/issues/42/labels/label"), Arg.Any <object>(), "application/vnd.github.symmetra-preview+json");
            }
            public void DeleteCorrectUrlWithRepositoryId()
            {
                var connection   = Substitute.For <IConnection>();
                var gitHubClient = new GitHubClient(connection);
                var client       = new ObservableIssuesLabelsClient(gitHubClient);

                client.RemoveFromIssue(1, 42, "label");

                connection.Received().Delete(Arg.Is <Uri>(u => u.ToString() == "repositories/1/issues/42/labels/label"));
            }
            public void DeleteCorrectUrl()
            {
                var connection   = Substitute.For <IConnection>();
                var gitHubClient = new GitHubClient(connection);
                var client       = new ObservableIssuesLabelsClient(gitHubClient);

                client.RemoveFromIssue("fake", "repo", 42, "label");

                connection.Received().Delete <IReadOnlyList <Label> >(Arg.Is <Uri>(u => u.ToString() == "repos/fake/repo/issues/42/labels/label"), Arg.Any <object>());
            }
            public async Task EnsuresNonNullArguments()
            {
                var client = new ObservableIssuesLabelsClient(Substitute.For <IGitHubClient>());

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

                Assert.Throws <ArgumentNullException>(() => client.RemoveFromIssue(1, 42, null));

                Assert.Throws <ArgumentException>(() => client.RemoveFromIssue("", "name", 42, "label"));
                Assert.Throws <ArgumentException>(() => client.RemoveFromIssue("owner", "", 42, "label"));
                Assert.Throws <ArgumentException>(() => client.RemoveFromIssue("owner", "name", 42, ""));

                Assert.Throws <ArgumentException>(() => client.RemoveFromIssue(1, 42, ""));
            }