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

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

                Assert.Throws<ArgumentException>(() => client.Delete("", "name", 42));
                Assert.Throws<ArgumentException>(() => client.Delete("owner", "", 42));
            }
            public void DeletesFromClientIssueMilestone()
            {
                var gitHubClient = Substitute.For<IGitHubClient>();
                var client = new ObservableMilestonesClient(gitHubClient);

                client.Delete("fake", "repo", 42);

                gitHubClient.Issue.Milestone.Received().Delete("fake", "repo", 42);
            }
            public void DeletesFromClientIssueMilestoneWithRepositoryId()
            {
                var gitHubClient = Substitute.For<IGitHubClient>();
                var client = new ObservableMilestonesClient(gitHubClient);

                client.Delete(1, 42);

                gitHubClient.Issue.Milestone.Received().Delete(1, 42);
            }
            public async Task EnsuresArgumentsNotNull()
            {
                var gitHubClient = Substitute.For<IGitHubClient>();
                var client = new ObservableMilestonesClient(gitHubClient);

                AssertEx.Throws<ArgumentNullException>(async () => await
                    client.Delete(null, "name", 42));
                AssertEx.Throws<ArgumentException>(async () => await
                    client.Delete("", "name", 42));
                AssertEx.Throws<ArgumentNullException>(async () => await
                    client.Delete("owner", null, 42));
                AssertEx.Throws<ArgumentException>(async () => await
                    client.Delete("owner", "", 42));
            }