using System; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Moq; using NPoco; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Tests.UnitTests.TestHelpers; using Umbraco.Web.Common.Builder; namespace Umbraco.Tests.TestHelpers { [TestFixture] public abstract class BaseUsingSqlSyntax { protected IMapperCollection Mappers { get; private set; } protected ISqlContext SqlContext { get; private set; } protected Sql Sql() { return NPoco.Sql.BuilderFor(SqlContext); } [SetUp] public virtual void Setup() { var container = TestHelper.GetServiceCollection(); var typeLoader = TestHelper.GetMockedTypeLoader(); var composition = new UmbracoBuilder(container, Mock.Of()); composition.TypeLoader = TestHelper.GetMockedTypeLoader(); composition.WithCollectionBuilder() .AddCoreMappers(); composition.Services.AddUnique(_ => SqlContext); var factory = composition.CreateServiceProvider(); var pocoMappers = new NPoco.MapperCollection { new PocoMapper() }; var pocoDataFactory = new FluentPocoDataFactory((type, iPocoDataFactory) => new PocoDataBuilder(type, pocoMappers).Init()); var sqlSyntax = new SqlServerSyntaxProvider(); SqlContext = new SqlContext(sqlSyntax, DatabaseType.SqlServer2012, pocoDataFactory, new Lazy(() => factory.GetRequiredService())); Mappers = factory.GetRequiredService(); } } }