diff --git a/src/Umbraco.Tests/Persistence/Repositories/KeyValueRepositoryTests.cs b/src/Umbraco.Tests/Persistence/Repositories/KeyValueRepositoryTests.cs
new file mode 100644
index 0000000000..92ebb03a32
--- /dev/null
+++ b/src/Umbraco.Tests/Persistence/Repositories/KeyValueRepositoryTests.cs
@@ -0,0 +1,61 @@
+using NUnit.Framework;
+using Umbraco.Core.Persistence.Repositories.Implement;
+using Umbraco.Core.Scoping;
+using Umbraco.Infrastructure.Persistence.Repositories;
+using Umbraco.Tests.TestHelpers;
+using Umbraco.Tests.Testing;
+
+namespace Umbraco.Tests.Persistence.Repositories
+{
+ [TestFixture]
+ [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)]
+ public class KeyValueRepositoryTests : TestWithDatabaseBase
+ {
+ [Test]
+ public void CanSetAndGet()
+ {
+ var provider = TestObjects.GetScopeProvider(Logger);
+
+ // Insert new key/value
+ using (var scope = provider.CreateScope())
+ {
+ var repo = CreateRepository(provider);
+ repo.SetValue("foo", "bar");
+ scope.Complete();
+ }
+
+ // Retrieve key/value
+ using (var scope = provider.CreateScope())
+ {
+ var repo = CreateRepository(provider);
+ var value = repo.GetValue("foo");
+ scope.Complete();
+
+ Assert.AreEqual("bar", value);
+ }
+
+ // Update new key/value
+ using (var scope = provider.CreateScope())
+ {
+ var repo = CreateRepository(provider);
+ repo.SetValue("foo", "buzz");
+ scope.Complete();
+ }
+
+ // Retrieve key/value again
+ using (var scope = provider.CreateScope())
+ {
+ var repo = CreateRepository(provider);
+ var value = repo.GetValue("foo");
+ scope.Complete();
+
+ Assert.AreEqual("buzz", value);
+ }
+ }
+
+ private IKeyValueRepository CreateRepository(IScopeProvider provider)
+ {
+ return new KeyValueRepository((IScopeAccessor) provider, Logger);
+ }
+ }
+}
diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj
index 16e4ca2c11..1527a8d4cc 100644
--- a/src/Umbraco.Tests/Umbraco.Tests.csproj
+++ b/src/Umbraco.Tests/Umbraco.Tests.csproj
@@ -148,6 +148,7 @@
+