using System; using System.IO; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Events; using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.ObjectResolution; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Profiling; using Umbraco.Core.Publishing; using Umbraco.Core.Services; using Umbraco.Tests.TestHelpers; using GlobalSettings = Umbraco.Core.Configuration.GlobalSettings; namespace Umbraco.Tests.Persistence { [TestFixture] public abstract class BaseTableByTableTest { private ILogger _logger; private DatabaseSchemaHelper _schemaHelper; public abstract Database Database { get; } protected abstract ISqlSyntaxProvider SqlSyntaxProvider { get; } protected DatabaseSchemaHelper DatabaseSchemaHelper { get { return _schemaHelper ?? (_schemaHelper = new DatabaseSchemaHelper(Database, _logger, SqlSyntaxProvider)); } } [SetUp] public virtual void Initialize() { _logger = new Logger(new FileInfo(TestHelper.MapPathForTest("~/unit-test-log4net.config"))); TestHelper.InitializeContentDirectories(); string path = TestHelper.CurrentAssemblyDirectory; AppDomain.CurrentDomain.SetData("DataDirectory", path); //disable cache var cacheHelper = CacheHelper.CreateDisabledCacheHelper(); var dbContext = new DatabaseContext( new DefaultDatabaseFactory(GlobalSettings.UmbracoConnectionName, _logger), _logger, SqlSyntaxProvider, "System.Data.SqlServerCe.4.0"); var repositoryFactory = new RepositoryFactory(cacheHelper, _logger, SqlSyntaxProvider, SettingsForTests.GenerateMockSettings()); var evtMsgs = new TransientMessagesFactory(); ApplicationContext.Current = new ApplicationContext( //assign the db context dbContext, //assign the service context new ServiceContext(repositoryFactory, new PetaPocoUnitOfWorkProvider(_logger), new FileUnitOfWorkProvider(), new PublishingStrategy(evtMsgs, _logger), cacheHelper, _logger, evtMsgs), cacheHelper, new ProfilingLogger(_logger, Mock.Of())) { IsReady = true }; Resolution.Freeze(); } [TearDown] public virtual void TearDown() { AppDomain.CurrentDomain.SetData("DataDirectory", null); //reset the app context ApplicationContext.Current = null; Resolution.Reset(); //RepositoryResolver.Reset(); } [Test] public void Can_Create_umbracoNode_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoAccess_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoAccessRule_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoApp_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoAppTree_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsContentType2ContentType_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsContentTypeAllowedContentType_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsContentType_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsContentVersion_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsContentXml_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsDataType_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsDataTypePreValues_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsDictionary_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsLanguageText_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsTemplate_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsDocument_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsDocumentType_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoDomains_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoLanguage_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoLog_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsMacro_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsMember_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsMember2MemberGroup_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsMemberType_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsPreviewXml_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsPropertyData_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsPropertyType_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsPropertyTypeGroup_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoRelation_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoRelationType_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsStylesheet_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsStylesheetProperty_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsTags_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsTagRelationship_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsTask_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_cmsTaskType_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoDeployDependency_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoDeployChecksum_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoUser_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoUserType_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoUser2app_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoUser2NodeNotify_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } [Test] public void Can_Create_umbracoUser2NodePermission_Table() { using (Transaction transaction = Database.GetTransaction()) { DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); DatabaseSchemaHelper.CreateTable(); //transaction.Complete(); } } } }