public async Task EnsuresArgumentsNotNull()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new IssuesClient(connection);

                AssertEx.Throws<ArgumentNullException>(async () => await
                    client.GetForRepository(null, "name", new RepositoryIssueRequest()));
                AssertEx.Throws<ArgumentException>(async () => await
                    client.GetForRepository("", "name", new RepositoryIssueRequest()));
                AssertEx.Throws<ArgumentNullException>(async () => await
                    client.GetForRepository("owner", null, new RepositoryIssueRequest()));
                AssertEx.Throws<ArgumentException>(async () => await
                    client.GetForRepository("owner", "", new RepositoryIssueRequest()));
                AssertEx.Throws<ArgumentNullException>(async () => await
                    client.GetForRepository("owner", "name", null));
            }
            public void RequestsCorrectUrl()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new IssuesClient(connection);

                client.GetForRepository("fake", "repo");

                connection.Received().GetAll<Issue>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/issues"),
                    Arg.Any<Dictionary<string, string>>());
            }
            public void SendsAppropriateParameters()
            {
                var connection = Substitute.For<IApiConnection>();
                var client = new IssuesClient(connection);

                client.GetForRepository("fake", "repo", new RepositoryIssueRequest
                {
                    SortDirection = SortDirection.Ascending
                });

                connection.Received().GetAll<Issue>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/issues"),
                    Arg.Is<Dictionary<string, string>>(d => d.Count == 4
                        && d["state"] == "open"
                        && d["direction"] == "asc"
                        && d["sort"] == "created"
                        && d["filter"] == "assigned"));
            }