diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
index 26c8918d0..64087ede8 100644
--- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
+++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
@@ -93,6 +93,7 @@
Code
+
diff --git a/NzbDrone.Core.Test/RootDirProviderTest.cs b/NzbDrone.Core.Test/RootDirProviderTest.cs
new file mode 100644
index 000000000..20f656847
--- /dev/null
+++ b/NzbDrone.Core.Test/RootDirProviderTest.cs
@@ -0,0 +1,121 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using AutoMoq;
+using Gallio.Framework;
+using MbUnit.Framework;
+using MbUnit.Framework.ContractVerifiers;
+using Moq;
+using NzbDrone.Core.Providers;
+using NzbDrone.Core.Repository;
+using SubSonic.Repository;
+
+namespace NzbDrone.Core.Test
+{
+ [TestFixture]
+ public class RootDirProviderTest
+ {
+ [Test]
+ public void GetRootDirs()
+ {
+ //Setup
+ var sonicRepo = MockLib.GetEmptyRepository();
+ sonicRepo.Add(new RootDir { Path = @"C:\TV" });
+ sonicRepo.Add(new RootDir { Path = @"C:\TV2" });
+
+ var mocker = new AutoMoqer();
+
+ mocker.GetMock()
+ .Setup(f => f.All())
+ .Returns(sonicRepo.All);
+
+ //Act
+ var result = mocker.Resolve().GetAll();
+
+ //Assert
+ Assert.AreEqual(result.Count, 2);
+ }
+
+ [Test]
+ public void AddRootDir()
+ {
+ //Setup
+ var mocker = new AutoMoqer();
+ mocker.SetConstant(MockLib.GetEmptyRepository());
+
+ string path = @"C:\TV\";
+
+ //Act
+ var rootDirProvider = mocker.Resolve();
+ rootDirProvider.Add(new RootDir{ Path = path });
+
+
+ //Assert
+ var rootDirs = rootDirProvider.GetAll();
+ Assert.IsNotEmpty(rootDirs);
+ Assert.Count(1, rootDirs);
+ Assert.AreEqual(path, rootDirs.First().Path);
+ }
+
+ [Test]
+ public void UpdateRootDir()
+ {
+ //Setup
+ var mocker = new AutoMoqer();
+ mocker.SetConstant(MockLib.GetEmptyRepository());
+
+ string path = @"C:\TV2";
+
+ //Act
+ var rootDirProvider = mocker.Resolve();
+ rootDirProvider.Add(new RootDir { Path = @"C:\TV" });
+ rootDirProvider.Update(new RootDir { Id = 1, Path = path });
+
+ //Assert
+ var rootDirs = rootDirProvider.GetAll();
+ Assert.IsNotEmpty(rootDirs);
+ Assert.Count(1, rootDirs);
+ Assert.AreEqual(path, rootDirs.First().Path);
+ }
+
+ [Test]
+ public void RemoveRootDir()
+ {
+ //Setup
+ var mocker = new AutoMoqer();
+ mocker.SetConstant(MockLib.GetEmptyRepository());
+
+ string path = @"C:\TV2";
+
+ //Act
+ var rootDirProvider = mocker.Resolve();
+ rootDirProvider.Add(new RootDir { Path = @"C:\TV" });
+ rootDirProvider.Remove(1);
+
+ //Assert
+ var rootDirs = rootDirProvider.GetAll();
+ Assert.Count(0, rootDirs);
+ }
+
+ [Test]
+ public void GetRootDir()
+ {
+ //Setup
+ var mocker = new AutoMoqer();
+ mocker.SetConstant(MockLib.GetEmptyRepository());
+
+ int id = 1;
+ string path = @"C:\TV";
+
+ //Act
+ var rootDirProvider = mocker.Resolve();
+ rootDirProvider.Add(new RootDir { Id = id, Path = path });
+
+ //Assert
+ var rootDir = rootDirProvider.GetRootDir(id);
+ Assert.AreEqual(1, rootDir.Id);
+ Assert.AreEqual(path, rootDir.Path);
+ }
+ }
+}