2011-05-22 18:53:21 +02:00
|
|
|
|
// ReSharper disable RedundantUsingDirective
|
|
|
|
|
using System;
|
2010-09-28 05:04:39 +02:00
|
|
|
|
using System.Collections.Generic;
|
2010-10-21 03:49:23 +02:00
|
|
|
|
using System.IO;
|
2010-09-28 05:04:39 +02:00
|
|
|
|
using System.Linq;
|
2011-04-22 21:16:52 +02:00
|
|
|
|
using FizzWare.NBuilder;
|
2010-09-28 05:04:39 +02:00
|
|
|
|
using Moq;
|
2011-06-05 08:02:31 +02:00
|
|
|
|
using NzbDrone.Core.Datastore;
|
2010-10-24 09:46:58 +02:00
|
|
|
|
using NzbDrone.Core.Instrumentation;
|
2011-04-04 05:50:12 +02:00
|
|
|
|
using NzbDrone.Core.Providers.Core;
|
2011-04-22 21:16:52 +02:00
|
|
|
|
using NzbDrone.Core.Repository;
|
2011-04-25 19:48:16 +02:00
|
|
|
|
using NzbDrone.Core.Repository.Quality;
|
2011-06-15 04:31:41 +02:00
|
|
|
|
using PetaPoco;
|
2010-09-29 19:19:18 +02:00
|
|
|
|
using SubSonic.DataProviders;
|
|
|
|
|
using SubSonic.Repository;
|
2010-09-28 05:04:39 +02:00
|
|
|
|
|
2011-05-19 05:55:35 +02:00
|
|
|
|
namespace NzbDrone.Core.Test.Framework
|
2010-09-28 05:04:39 +02:00
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2011-04-10 04:44:01 +02:00
|
|
|
|
/// Provides the standard Mocks needed for a typical test
|
2010-09-28 05:04:39 +02:00
|
|
|
|
/// </summary>
|
2011-04-10 04:44:01 +02:00
|
|
|
|
internal static class MockLib
|
2010-09-28 05:04:39 +02:00
|
|
|
|
{
|
|
|
|
|
public static string[] StandardSeries
|
|
|
|
|
{
|
2011-04-22 21:16:52 +02:00
|
|
|
|
get { return new[] { "c:\\tv\\the simpsons", "c:\\tv\\family guy", "c:\\tv\\southpark", "c:\\tv\\24" }; }
|
2011-04-10 04:44:01 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static ConfigProvider StandardConfig
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
var mock = new Mock<ConfigProvider>();
|
|
|
|
|
mock.SetupGet(c => c.SeriesRoot).Returns("C:\\");
|
|
|
|
|
return mock.Object;
|
|
|
|
|
}
|
2010-09-28 05:04:39 +02:00
|
|
|
|
}
|
|
|
|
|
|
2011-04-10 04:44:01 +02:00
|
|
|
|
|
2011-06-05 08:02:31 +02:00
|
|
|
|
public static IRepository GetEmptyRepository(bool enableLogging = false, string fileName = "")
|
2010-10-17 19:22:48 +02:00
|
|
|
|
{
|
2011-06-15 04:31:41 +02:00
|
|
|
|
Console.WriteLine("Creating an empty Subsonic repository");
|
2011-06-04 19:59:09 +02:00
|
|
|
|
|
2011-06-05 08:02:31 +02:00
|
|
|
|
if (String.IsNullOrWhiteSpace(fileName))
|
|
|
|
|
{
|
|
|
|
|
fileName = Guid.NewGuid() + ".db";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var provider = Connection.GetDataProvider(Connection.GetConnectionString(fileName));
|
|
|
|
|
var repo = Connection.CreateSimpleRepository(provider);
|
2011-06-04 19:59:09 +02:00
|
|
|
|
ForceMigration(repo);
|
|
|
|
|
|
2011-06-15 04:31:41 +02:00
|
|
|
|
//Migrations.Run(Connection.GetConnectionString(fileName), false);
|
2011-06-05 08:02:31 +02:00
|
|
|
|
|
2010-10-17 19:22:48 +02:00
|
|
|
|
if (enableLogging)
|
|
|
|
|
{
|
2010-10-24 09:46:58 +02:00
|
|
|
|
provider.Log = new NlogWriter();
|
2010-10-17 19:22:48 +02:00
|
|
|
|
}
|
2011-06-05 08:02:31 +02:00
|
|
|
|
Console.WriteLine("**********************************************************************************");
|
|
|
|
|
Console.WriteLine("*****************************REPO IS READY****************************************");
|
|
|
|
|
Console.WriteLine("**********************************************************************************");
|
2011-04-25 19:48:16 +02:00
|
|
|
|
return repo;
|
2010-09-29 19:19:18 +02:00
|
|
|
|
}
|
2010-09-28 05:04:39 +02:00
|
|
|
|
|
2011-06-15 04:31:41 +02:00
|
|
|
|
public static IDatabase GetEmptyDatabase(bool enableLogging = false, string fileName = "")
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Creating an empty PetaPoco database");
|
|
|
|
|
|
|
|
|
|
if (String.IsNullOrWhiteSpace(fileName))
|
|
|
|
|
{
|
|
|
|
|
fileName = Guid.NewGuid() + ".db";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var connectionString = Connection.GetConnectionString(fileName);
|
|
|
|
|
|
|
|
|
|
MigrationsHelper.MigrateDatabase(connectionString);
|
|
|
|
|
|
|
|
|
|
var database = Connection.GetPetaPocoDb(connectionString);
|
|
|
|
|
|
|
|
|
|
return database;
|
|
|
|
|
}
|
|
|
|
|
|
2011-04-09 02:21:57 +02:00
|
|
|
|
public static DiskProvider GetStandardDisk(int seasons, int episodes)
|
2010-09-28 05:04:39 +02:00
|
|
|
|
{
|
2011-04-09 02:21:57 +02:00
|
|
|
|
var mock = new Mock<DiskProvider>();
|
2010-10-05 08:21:18 +02:00
|
|
|
|
mock.Setup(c => c.GetDirectories(It.IsAny<String>())).Returns(StandardSeries);
|
2010-10-24 09:46:58 +02:00
|
|
|
|
mock.Setup(c => c.FolderExists(It.Is<String>(d => StandardSeries.Contains(d)))).Returns(true);
|
2010-10-21 03:49:23 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 08:21:18 +02:00
|
|
|
|
return mock.Object;
|
2010-09-28 05:04:39 +02:00
|
|
|
|
}
|
2011-04-22 21:16:52 +02: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 22:14:02 +02: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();
|
|
|
|
|
}
|
2011-04-25 19:48:16 +02:00
|
|
|
|
|
|
|
|
|
private static void ForceMigration(IRepository repository)
|
|
|
|
|
{
|
|
|
|
|
repository.All<EpisodeFile>().Count();
|
|
|
|
|
repository.All<QualityProfile>().Count();
|
|
|
|
|
repository.All<History>().Count();
|
|
|
|
|
}
|
2010-09-28 05:04:39 +02:00
|
|
|
|
}
|
2011-04-10 04:44:01 +02:00
|
|
|
|
}
|