diff --git a/Octokit.Tests/Octokit.Tests.csproj b/Octokit.Tests/Octokit.Tests.csproj
index 5c6484c3..9f226d4e 100644
--- a/Octokit.Tests/Octokit.Tests.csproj
+++ b/Octokit.Tests/Octokit.Tests.csproj
@@ -212,6 +212,7 @@
+
diff --git a/Octokit.Tests/Reactive/ObservableRepositoryCommitsClientTests.cs b/Octokit.Tests/Reactive/ObservableRepositoryCommitsClientTests.cs
new file mode 100644
index 00000000..a99938b4
--- /dev/null
+++ b/Octokit.Tests/Reactive/ObservableRepositoryCommitsClientTests.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Reactive.Threading.Tasks;
+using System.Threading.Tasks;
+using NSubstitute;
+using Octokit.Reactive;
+using Xunit;
+
+namespace Octokit.Tests.Reactive
+{
+ public class ObservableRepositoryCommitsClientTests
+ {
+ public class TheGetSha1Method
+ {
+ [Fact]
+ public void EnsuresNonNullArguments()
+ {
+ var client = new ObservableRepositoryCommitsClient(Substitute.For());
+
+ Assert.ThrowsAsync(() => client.GetSha1("", "name", "reference").ToTask());
+ Assert.ThrowsAsync(() => client.GetSha1("owner", "", "reference").ToTask());
+ Assert.ThrowsAsync(() => client.GetSha1("owner", "name", "").ToTask());
+ }
+
+ [Fact]
+ public async Task EnsuresNonEmptyArguments()
+ {
+ var client = new ObservableRepositoryCommitsClient(Substitute.For());
+
+ await Assert.ThrowsAsync(() => client.GetSha1(null, "name", "reference").ToTask());
+ await Assert.ThrowsAsync(() => client.GetSha1("owner", null, "reference").ToTask());
+ await Assert.ThrowsAsync(() => client.GetSha1("owner", "name", null).ToTask());
+ }
+
+ [Fact]
+ public void GetsCorrectUrl()
+ {
+ var gitHubClient = Substitute.For();
+ var client = new ObservableRepositoryCommitsClient(gitHubClient);
+
+ client.GetSha1("owner", "name", "reference");
+
+ gitHubClient
+ .Received()
+ .Repository
+ .Commit
+ .GetSha1("owner", "name", "reference");
+ }
+ }
+ }
+}