using System; using System.IO; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Moq; using NPoco; using NUnit.Framework; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence; using Umbraco.Persistance.SqlCe; using Umbraco.Web; using Current = Umbraco.Web.Composing.Current; using Umbraco.Core.DependencyInjection; namespace Umbraco.Tests.TestHelpers { [TestFixture] public abstract class BaseUsingSqlCeSyntax { protected IMapperCollection Mappers { get; private set; } protected ISqlContext SqlContext { get; private set; } internal TestObjects TestObjects = new TestObjects(null); protected Sql Sql() { return NPoco.Sql.BuilderFor(SqlContext); } [SetUp] public virtual void Initialize() { var services = TestHelper.GetRegister(); var ioHelper = TestHelper.IOHelper; var logger = new ProfilingLogger(Mock.Of>(), Mock.Of()); var typeFinder = TestHelper.GetTypeFinder(); var typeLoader = new TypeLoader(typeFinder, NoAppCache.Instance, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), Mock.Of>(), logger, false); var composition = new UmbracoBuilder(services, Mock.Of(), TestHelper.GetMockedTypeLoader()); services.AddUnique(_ => Mock.Of()); services.AddUnique(_ => NullLoggerFactory.Instance); services.AddUnique(_ => Mock.Of()); services.AddUnique(typeLoader); composition.WithCollectionBuilder() .AddCoreMappers(); services.AddUnique(_ => SqlContext); var factory = Current.Factory = composition.CreateServiceProvider(); var pocoMappers = new NPoco.MapperCollection { new PocoMapper() }; var pocoDataFactory = new FluentPocoDataFactory((type, iPocoDataFactory) => new PocoDataBuilder(type, pocoMappers).Init()); var sqlSyntax = new SqlCeSyntaxProvider(); SqlContext = new SqlContext(sqlSyntax, DatabaseType.SQLCe, pocoDataFactory, new Lazy(() => factory.GetRequiredService())); Mappers = factory.GetRequiredService(); SetUp(); } public virtual void SetUp() {} } }