mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-20 05:23:31 -07:00
Migrator.net fails
This commit is contained in:
parent
fad0c6265c
commit
180da4c82a
19 changed files with 592 additions and 40 deletions
172
NzbDrone.Core.Test/RepositoryProviderTest.cs
Normal file
172
NzbDrone.Core.Test/RepositoryProviderTest.cs
Normal file
|
@ -0,0 +1,172 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using Gallio.Framework;
|
||||
using MbUnit.Framework;
|
||||
using MbUnit.Framework.ContractVerifiers;
|
||||
using Migrator.Framework;
|
||||
using NzbDrone.Core.Datastore;
|
||||
using NzbDrone.Core.Instrumentation;
|
||||
using NzbDrone.Core.Repository;
|
||||
using NzbDrone.Core.Repository.Quality;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using SubSonic.DataProviders;
|
||||
using SubSonic.Repository;
|
||||
using SubSonic.Schema;
|
||||
using SubSonic.SqlGeneration.Schema;
|
||||
|
||||
namespace NzbDrone.Core.Test
|
||||
{
|
||||
[TestFixture]
|
||||
// ReSharper disable InconsistentNaming
|
||||
public class RepositoryProviderTest
|
||||
{
|
||||
[Test]
|
||||
public void Get_Assembly_repos()
|
||||
{
|
||||
var provider = new RepositoryProvider();
|
||||
var types = provider.GetRepositoryTypes();
|
||||
|
||||
Assert.IsNotEmpty(types);
|
||||
Assert.Contains(types, typeof(Config));
|
||||
Assert.Contains(types, typeof(Episode));
|
||||
Assert.Contains(types, typeof(EpisodeFile));
|
||||
Assert.Contains(types, typeof(ExternalNotificationSetting));
|
||||
Assert.Contains(types, typeof(History));
|
||||
Assert.Contains(types, typeof(IndexerSetting));
|
||||
Assert.Contains(types, typeof(JobSetting));
|
||||
Assert.Contains(types, typeof(RootDir));
|
||||
Assert.Contains(types, typeof(Season));
|
||||
Assert.Contains(types, typeof(Series));
|
||||
|
||||
Assert.Contains(types, typeof(QualityProfile));
|
||||
|
||||
Assert.DoesNotContain(types, typeof(QualityTypes));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[Test]
|
||||
public void Get_table_columns()
|
||||
{
|
||||
var provider = new RepositoryProvider();
|
||||
var typeTable = provider.GetSchemaFromType(typeof(TestRepoType));
|
||||
|
||||
Assert.IsNotNull(typeTable.Columns);
|
||||
Assert.Count(3, typeTable.Columns);
|
||||
Assert.AreEqual("TestRepoTypes", typeTable.Name);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ConvertToMigratorColumn()
|
||||
{
|
||||
var provider = new RepositoryProvider();
|
||||
|
||||
var subsonicColumn = new DatabaseColumn
|
||||
{
|
||||
Name = "Name",
|
||||
DataType = DbType.Boolean,
|
||||
IsPrimaryKey = true,
|
||||
IsNullable = true
|
||||
};
|
||||
|
||||
var migColumn = provider.ConvertToMigratorColumn(subsonicColumn);
|
||||
|
||||
Assert.IsTrue(migColumn.IsPrimaryKey);
|
||||
Assert.AreEqual(ColumnProperty.Null | ColumnProperty.PrimaryKey, migColumn.ColumnProperty);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void GetDbColumns()
|
||||
{
|
||||
string connectionString = "Data Source=" + Guid.NewGuid() + ".db;Version=3;New=True";
|
||||
var dbProvider = ProviderFactory.GetProvider(connectionString, "System.Data.SQLite");
|
||||
var repo = new SimpleRepository(dbProvider, SimpleRepositoryOptions.RunMigrations);
|
||||
|
||||
repo.Add(new TestRepoType(){Value = "Dummy"});
|
||||
|
||||
var repositoryProvider = new RepositoryProvider();
|
||||
var columns = repositoryProvider.GetColumnsFromDatabase(connectionString, "TestRepoTypes");
|
||||
|
||||
Assert.Count(3, columns);
|
||||
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void DeleteColumns()
|
||||
{
|
||||
string connectionString = "Data Source=" + Guid.NewGuid() + ".db;Version=3;New=True";
|
||||
var dbProvider = ProviderFactory.GetProvider(connectionString, "System.Data.SQLite");
|
||||
var repo = new SimpleRepository(dbProvider, SimpleRepositoryOptions.RunMigrations);
|
||||
|
||||
repo.Add(new TestRepoType(){Value = "Dummy"});
|
||||
|
||||
var repositoryProvider = new RepositoryProvider();
|
||||
var typeSchema = repositoryProvider.GetSchemaFromType(typeof(TestRepoType2));
|
||||
var columns = repositoryProvider.GetColumnsFromDatabase(connectionString, "TestRepoTypes");
|
||||
|
||||
|
||||
var deletedColumns = repositoryProvider.GetDeletedColumns(typeSchema, columns);
|
||||
|
||||
|
||||
Assert.Count(1, deletedColumns);
|
||||
Assert.AreEqual("NewName", deletedColumns[0].Name.Trim('[', ']'));
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void NewColumns()
|
||||
{
|
||||
string connectionString = "Data Source=" + Guid.NewGuid() + ".db;Version=3;New=True";
|
||||
var dbProvider = ProviderFactory.GetProvider(connectionString, "System.Data.SQLite");
|
||||
var repo = new SimpleRepository(dbProvider, SimpleRepositoryOptions.RunMigrations);
|
||||
|
||||
repo.Add(new TestRepoType2() { Value = "dummy" });
|
||||
|
||||
var repositoryProvider = new RepositoryProvider();
|
||||
var typeSchema = repositoryProvider.GetSchemaFromType(typeof(TestRepoType));
|
||||
var columns = repositoryProvider.GetColumnsFromDatabase(connectionString, "TestRepoType2s");
|
||||
|
||||
|
||||
var deletedColumns = repositoryProvider.GetNewColumns(typeSchema, columns);
|
||||
|
||||
|
||||
Assert.Count(1, deletedColumns);
|
||||
Assert.AreEqual("NewName", deletedColumns[0].Name.Trim('[', ']'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class TestRepoType
|
||||
{
|
||||
[SubSonicPrimaryKey]
|
||||
public int TestId { get; set; }
|
||||
|
||||
[SubSonicColumnNameOverride("NewName")]
|
||||
public Boolean BaddBoolean { get; set; }
|
||||
|
||||
|
||||
public string Value { get; set; }
|
||||
|
||||
[SubSonicIgnore]
|
||||
public Boolean BaddBooleanIgnored { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class TestRepoType2
|
||||
{
|
||||
[SubSonicPrimaryKey]
|
||||
public int TestId { get; set; }
|
||||
|
||||
public string Value { get; set; }
|
||||
|
||||
[SubSonicIgnore]
|
||||
public Boolean BaddBooleanIgnored { get; set; }
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue