Sonarr/NzbDrone.Core.Test/Framework/MockLib.cs

117 lines
4.0 KiB
C#
Raw Normal View History

2011-05-22 16:53:21 +00:00
// ReSharper disable RedundantUsingDirective
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
2011-04-22 19:16:52 +00:00
using FizzWare.NBuilder;
using Moq;
2011-06-05 06:02:31 +00:00
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Instrumentation;
2011-04-04 03:50:12 +00:00
using NzbDrone.Core.Providers.Core;
2011-04-22 19:16:52 +00:00
using NzbDrone.Core.Repository;
using NzbDrone.Core.Repository.Quality;
2010-09-29 17:19:18 +00:00
using SubSonic.DataProviders;
using SubSonic.Repository;
namespace NzbDrone.Core.Test.Framework
{
/// <summary>
2011-04-10 02:44:01 +00:00
/// Provides the standard Mocks needed for a typical test
/// </summary>
2011-04-10 02:44:01 +00:00
internal static class MockLib
{
public static string[] StandardSeries
{
2011-04-22 19:16:52 +00:00
get { return new[] { "c:\\tv\\the simpsons", "c:\\tv\\family guy", "c:\\tv\\southpark", "c:\\tv\\24" }; }
2011-04-10 02:44:01 +00:00
}
public static ConfigProvider StandardConfig
{
get
{
var mock = new Mock<ConfigProvider>();
mock.SetupGet(c => c.SeriesRoot).Returns("C:\\");
return mock.Object;
}
}
2011-04-10 02:44:01 +00:00
2011-06-05 06:02:31 +00:00
public static IRepository GetEmptyRepository(bool enableLogging = false, string fileName = "")
{
Console.WriteLine("Creating an empty SQLite database");
2011-06-04 17:59:09 +00:00
2011-06-05 06:02:31 +00:00
if (String.IsNullOrWhiteSpace(fileName))
{
fileName = Guid.NewGuid() + ".db";
}
var provider = Connection.GetDataProvider(Connection.GetConnectionString(fileName));
var repo = Connection.CreateSimpleRepository(provider);
2011-06-04 17:59:09 +00:00
ForceMigration(repo);
2011-06-05 06:02:31 +00:00
Migrations.Run(Connection.GetConnectionString(fileName), false);
if (enableLogging)
{
provider.Log = new NlogWriter();
}
2011-06-05 06:02:31 +00:00
Console.WriteLine("**********************************************************************************");
Console.WriteLine("*****************************REPO IS READY****************************************");
Console.WriteLine("**********************************************************************************");
return repo;
2010-09-29 17:19:18 +00:00
}
public static DiskProvider GetStandardDisk(int seasons, int episodes)
{
var mock = new Mock<DiskProvider>();
2010-10-05 06:21:18 +00:00
mock.Setup(c => c.GetDirectories(It.IsAny<String>())).Returns(StandardSeries);
mock.Setup(c => c.FolderExists(It.Is<String>(d => StandardSeries.Contains(d)))).Returns(true);
foreach (var series in StandardSeries)
{
var file = new List<String>();
for (int s = 0; s < seasons; s++)
{
for (int e = 0; e < episodes; e++)
{
file.Add(String.Format("{0}\\Seasons {1}\\myepname.S{1:00}E{2:00}.avi", series, s, e));
}
}
string series1 = series;
mock.Setup(c => c.GetFiles(series1, "*.avi", SearchOption.AllDirectories)).Returns(file.ToArray());
}
2010-10-05 06:21:18 +00:00
return mock.Object;
}
2011-04-22 19:16:52 +00:00
public static Series GetFakeSeries(int id, string title)
{
return Builder<Series>.CreateNew()
.With(c => c.SeriesId = id)
.With(c => c.Title = title)
.With(c => c.CleanTitle = Parser.NormalizeTitle(title))
.Build();
}
2011-04-22 20:14:02 +00:00
public static IList<Episode> GetFakeEpisodes(int seriesId)
{
var epNumber = new SequentialGenerator<int>();
return Builder<Episode>.CreateListOfSize(10)
.WhereAll().Have(c => c.SeriesId = seriesId)
.WhereAll().Have(c => c.EpisodeNumber = epNumber.Generate())
.Build();
}
private static void ForceMigration(IRepository repository)
{
repository.All<Series>().Count();
repository.All<Episode>().Count();
repository.All<EpisodeFile>().Count();
repository.All<QualityProfile>().Count();
repository.All<History>().Count();
}
}
2011-04-10 02:44:01 +00:00
}