diff --git a/src/Umbraco.Core/ContentVariationExtensions.cs b/src/Umbraco.Abstractions/ContentVariationExtensions.cs
similarity index 98%
rename from src/Umbraco.Core/ContentVariationExtensions.cs
rename to src/Umbraco.Abstractions/ContentVariationExtensions.cs
index bdcf300f3f..f3e8943172 100644
--- a/src/Umbraco.Core/ContentVariationExtensions.cs
+++ b/src/Umbraco.Abstractions/ContentVariationExtensions.cs
@@ -44,7 +44,7 @@ namespace Umbraco.Core
///
/// Determines whether the property type is invariant.
///
- public static bool VariesByNothing(this PropertyType propertyType) => propertyType.Variations.VariesByNothing();
+ public static bool VariesByNothing(this IPropertyType propertyType) => propertyType.Variations.VariesByNothing();
///
/// Determines whether the property type varies by culture.
diff --git a/src/Umbraco.Core/Deploy/ArtifactDependency.cs b/src/Umbraco.Abstractions/Deploy/ArtifactDependency.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/ArtifactDependency.cs
rename to src/Umbraco.Abstractions/Deploy/ArtifactDependency.cs
diff --git a/src/Umbraco.Core/Deploy/ArtifactDependencyCollection.cs b/src/Umbraco.Abstractions/Deploy/ArtifactDependencyCollection.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/ArtifactDependencyCollection.cs
rename to src/Umbraco.Abstractions/Deploy/ArtifactDependencyCollection.cs
diff --git a/src/Umbraco.Core/Deploy/ArtifactDependencyMode.cs b/src/Umbraco.Abstractions/Deploy/ArtifactDependencyMode.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/ArtifactDependencyMode.cs
rename to src/Umbraco.Abstractions/Deploy/ArtifactDependencyMode.cs
diff --git a/src/Umbraco.Core/Deploy/ArtifactDeployState.cs b/src/Umbraco.Abstractions/Deploy/ArtifactDeployState.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/ArtifactDeployState.cs
rename to src/Umbraco.Abstractions/Deploy/ArtifactDeployState.cs
diff --git a/src/Umbraco.Core/Deploy/ArtifactDeployStateOfTArtifactTEntity.cs b/src/Umbraco.Abstractions/Deploy/ArtifactDeployStateOfTArtifactTEntity.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/ArtifactDeployStateOfTArtifactTEntity.cs
rename to src/Umbraco.Abstractions/Deploy/ArtifactDeployStateOfTArtifactTEntity.cs
diff --git a/src/Umbraco.Core/Deploy/ArtifactSignature.cs b/src/Umbraco.Abstractions/Deploy/ArtifactSignature.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/ArtifactSignature.cs
rename to src/Umbraco.Abstractions/Deploy/ArtifactSignature.cs
diff --git a/src/Umbraco.Core/Deploy/Difference.cs b/src/Umbraco.Abstractions/Deploy/Difference.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/Difference.cs
rename to src/Umbraco.Abstractions/Deploy/Difference.cs
diff --git a/src/Umbraco.Core/Deploy/Direction.cs b/src/Umbraco.Abstractions/Deploy/Direction.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/Direction.cs
rename to src/Umbraco.Abstractions/Deploy/Direction.cs
diff --git a/src/Umbraco.Core/Deploy/IArtifact.cs b/src/Umbraco.Abstractions/Deploy/IArtifact.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IArtifact.cs
rename to src/Umbraco.Abstractions/Deploy/IArtifact.cs
diff --git a/src/Umbraco.Core/Deploy/IArtifactSignature.cs b/src/Umbraco.Abstractions/Deploy/IArtifactSignature.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IArtifactSignature.cs
rename to src/Umbraco.Abstractions/Deploy/IArtifactSignature.cs
diff --git a/src/Umbraco.Core/Deploy/IDataTypeConfigurationConnector.cs b/src/Umbraco.Abstractions/Deploy/IDataTypeConfigurationConnector.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IDataTypeConfigurationConnector.cs
rename to src/Umbraco.Abstractions/Deploy/IDataTypeConfigurationConnector.cs
diff --git a/src/Umbraco.Core/Deploy/IDeployContext.cs b/src/Umbraco.Abstractions/Deploy/IDeployContext.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IDeployContext.cs
rename to src/Umbraco.Abstractions/Deploy/IDeployContext.cs
diff --git a/src/Umbraco.Core/Deploy/IFileSource.cs b/src/Umbraco.Abstractions/Deploy/IFileSource.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IFileSource.cs
rename to src/Umbraco.Abstractions/Deploy/IFileSource.cs
diff --git a/src/Umbraco.Core/Deploy/IFileType.cs b/src/Umbraco.Abstractions/Deploy/IFileType.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IFileType.cs
rename to src/Umbraco.Abstractions/Deploy/IFileType.cs
diff --git a/src/Umbraco.Core/Deploy/IFileTypeCollection.cs b/src/Umbraco.Abstractions/Deploy/IFileTypeCollection.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IFileTypeCollection.cs
rename to src/Umbraco.Abstractions/Deploy/IFileTypeCollection.cs
diff --git a/src/Umbraco.Core/Deploy/IImageSourceParser.cs b/src/Umbraco.Abstractions/Deploy/IImageSourceParser.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IImageSourceParser.cs
rename to src/Umbraco.Abstractions/Deploy/IImageSourceParser.cs
diff --git a/src/Umbraco.Core/Deploy/ILocalLinkParser.cs b/src/Umbraco.Abstractions/Deploy/ILocalLinkParser.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/ILocalLinkParser.cs
rename to src/Umbraco.Abstractions/Deploy/ILocalLinkParser.cs
diff --git a/src/Umbraco.Core/Deploy/IMacroParser.cs b/src/Umbraco.Abstractions/Deploy/IMacroParser.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IMacroParser.cs
rename to src/Umbraco.Abstractions/Deploy/IMacroParser.cs
diff --git a/src/Umbraco.Core/Deploy/IServiceConnector.cs b/src/Umbraco.Abstractions/Deploy/IServiceConnector.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IServiceConnector.cs
rename to src/Umbraco.Abstractions/Deploy/IServiceConnector.cs
diff --git a/src/Umbraco.Core/Deploy/IUniqueIdentifyingServiceConnector.cs b/src/Umbraco.Abstractions/Deploy/IUniqueIdentifyingServiceConnector.cs
similarity index 100%
rename from src/Umbraco.Core/Deploy/IUniqueIdentifyingServiceConnector.cs
rename to src/Umbraco.Abstractions/Deploy/IUniqueIdentifyingServiceConnector.cs
diff --git a/src/Umbraco.Core/Deploy/IValueConnector.cs b/src/Umbraco.Abstractions/Deploy/IValueConnector.cs
similarity index 88%
rename from src/Umbraco.Core/Deploy/IValueConnector.cs
rename to src/Umbraco.Abstractions/Deploy/IValueConnector.cs
index 7d9f43b5fe..5329725663 100644
--- a/src/Umbraco.Core/Deploy/IValueConnector.cs
+++ b/src/Umbraco.Abstractions/Deploy/IValueConnector.cs
@@ -23,7 +23,7 @@ namespace Umbraco.Core.Deploy
/// The value property type
/// The content dependencies.
/// The deploy property value.
- string ToArtifact(object value, PropertyType propertyType, ICollection dependencies);
+ string ToArtifact(object value, IPropertyType propertyType, ICollection dependencies);
///
/// Gets the content property value corresponding to a deploy property value.
@@ -32,6 +32,6 @@ namespace Umbraco.Core.Deploy
/// The value property type<
/// The current content property value.
/// The content property value.
- object FromArtifact(string value, PropertyType propertyType, object currentValue);
+ object FromArtifact(string value, IPropertyType propertyType, object currentValue);
}
}
diff --git a/src/Umbraco.Abstractions/GuidUtils.cs b/src/Umbraco.Abstractions/GuidUtils.cs
index d878cee16b..ba07d09236 100644
--- a/src/Umbraco.Abstractions/GuidUtils.cs
+++ b/src/Umbraco.Abstractions/GuidUtils.cs
@@ -7,7 +7,7 @@ namespace Umbraco.Core
///
/// Utility methods for the struct.
///
- internal static class GuidUtils
+ public static class GuidUtils
{
///
/// Combines two guid instances utilizing an exclusive disjunction.
diff --git a/src/Umbraco.Abstractions/IO/FileSystems.cs b/src/Umbraco.Abstractions/IO/FileSystems.cs
index 2416883c64..00fe0b551b 100644
--- a/src/Umbraco.Abstractions/IO/FileSystems.cs
+++ b/src/Umbraco.Abstractions/IO/FileSystems.cs
@@ -151,10 +151,10 @@ namespace Umbraco.Core.IO
#region Providers
private readonly Dictionary _paths = new Dictionary();
- private IGlobalSettings _globalSettings;
// internal for tests
internal IReadOnlyDictionary Paths => _paths;
+ private IGlobalSettings _globalSettings;
///
/// Gets a strongly-typed filesystem.
diff --git a/src/Umbraco.Core/Models/ContentBase.cs b/src/Umbraco.Abstractions/Models/ContentBase.cs
similarity index 98%
rename from src/Umbraco.Core/Models/ContentBase.cs
rename to src/Umbraco.Abstractions/Models/ContentBase.cs
index e5adddad72..59693efe53 100644
--- a/src/Umbraco.Core/Models/ContentBase.cs
+++ b/src/Umbraco.Abstractions/Models/ContentBase.cs
@@ -44,7 +44,7 @@ namespace Umbraco.Core.Models
///
/// Initializes a new instance of the class.
///
- protected ContentBase(string name, int parentId, IContentTypeComposition contentType, PropertyCollection properties, string culture = null)
+ protected ContentBase(string name, int parentId, IContentTypeComposition contentType, IPropertyCollection properties, string culture = null)
: this(name, contentType, properties, culture)
{
if (parentId == 0) throw new ArgumentOutOfRangeException(nameof(parentId));
@@ -54,14 +54,14 @@ namespace Umbraco.Core.Models
///
/// Initializes a new instance of the class.
///
- protected ContentBase(string name, IContentBase parent, IContentTypeComposition contentType, PropertyCollection properties, string culture = null)
+ protected ContentBase(string name, IContentBase parent, IContentTypeComposition contentType, IPropertyCollection properties, string culture = null)
: this(name, contentType, properties, culture)
{
if (parent == null) throw new ArgumentNullException(nameof(parent));
SetParent(parent);
}
- private ContentBase(string name, IContentTypeComposition contentType, PropertyCollection properties, string culture = null)
+ private ContentBase(string name, IContentTypeComposition contentType, IPropertyCollection properties, string culture = null)
{
ContentType = contentType?.ToSimple() ?? throw new ArgumentNullException(nameof(contentType));
@@ -84,7 +84,7 @@ namespace Umbraco.Core.Models
[IgnoreDataMember]
public ISimpleContentType ContentType { get; private set; }
- internal void ChangeContentType(ISimpleContentType contentType)
+ public void ChangeContentType(ISimpleContentType contentType)
{
ContentType = contentType;
ContentTypeId = contentType.Id;
diff --git a/src/Umbraco.Abstractions/Models/ContentExtensions.cs b/src/Umbraco.Abstractions/Models/ContentExtensions.cs
new file mode 100644
index 0000000000..5fd5e576b8
--- /dev/null
+++ b/src/Umbraco.Abstractions/Models/ContentExtensions.cs
@@ -0,0 +1,19 @@
+using System.Linq;
+
+namespace Umbraco.Core.Models
+{
+ public static class ContentExtensions
+ {
+ public static bool IsAnyUserPropertyDirty(this IContentBase entity)
+ {
+ return entity.Properties.Any(x => x.IsDirty());
+ }
+
+ public static bool WasAnyUserPropertyDirty(this IContentBase entity)
+ {
+ return entity.Properties.Any(x => x.WasDirty());
+ }
+
+
+ }
+}
diff --git a/src/Umbraco.Abstractions/Models/ContentRepositoryExtensions.cs b/src/Umbraco.Abstractions/Models/ContentRepositoryExtensions.cs
new file mode 100644
index 0000000000..8bc41e1190
--- /dev/null
+++ b/src/Umbraco.Abstractions/Models/ContentRepositoryExtensions.cs
@@ -0,0 +1,58 @@
+using System;
+using System.Linq;
+using Umbraco.Core.Exceptions;
+
+namespace Umbraco.Core.Models
+{
+ public static class ContentRepositoryExtensions
+ {
+ public static void SetCultureInfo(this IContentBase content, string culture, string name, DateTime date)
+ {
+ if (name.IsNullOrWhiteSpace())
+ throw new ArgumentNullOrEmptyException(nameof(name));
+
+ if (culture.IsNullOrWhiteSpace())
+ throw new ArgumentNullOrEmptyException(nameof(culture));
+
+ content.CultureInfos.AddOrUpdate(culture, name, date);
+ }
+
+ ///
+ /// Updates a culture date, if the culture exists.
+ ///
+ public static void TouchCulture(this IContentBase content, string culture)
+ {
+ if (culture.IsNullOrWhiteSpace()) return;
+ if (!content.CultureInfos.TryGetValue(culture, out var infos)) return;
+ content.CultureInfos.AddOrUpdate(culture, infos.Name, DateTime.Now);
+ }
+
+ ///
+ /// Used to synchronize all culture dates to the same date if they've been modified
+ ///
+ ///
+ ///
+ ///
+ /// This is so that in an operation where (for example) 2 languages are updates like french and english, it is possible that
+ /// these dates assigned to them differ by a couple of Ticks, but we need to ensure they are persisted at the exact same time.
+ ///
+ public static void AdjustDates(this IContent content, DateTime date)
+ {
+ foreach (var culture in content.PublishedCultures.ToList())
+ {
+ if (!content.PublishCultureInfos.TryGetValue(culture, out var publishInfos))
+ continue;
+
+ // if it's not dirty, it means it hasn't changed so there's nothing to adjust
+ if (!publishInfos.IsDirty())
+ continue;
+
+ content.PublishCultureInfos.AddOrUpdate(culture, publishInfos.Name, date);
+
+ if (content.CultureInfos.TryGetValue(culture, out var infos))
+ SetCultureInfo(content, culture, infos.Name, date);
+ }
+ }
+ }
+
+}
diff --git a/src/Umbraco.Core/Models/ContentTypeAvailableCompositionsResult.cs b/src/Umbraco.Abstractions/Models/ContentTypeAvailableCompositionsResult.cs
similarity index 100%
rename from src/Umbraco.Core/Models/ContentTypeAvailableCompositionsResult.cs
rename to src/Umbraco.Abstractions/Models/ContentTypeAvailableCompositionsResult.cs
diff --git a/src/Umbraco.Core/Models/ContentTypeAvailableCompositionsResults.cs b/src/Umbraco.Abstractions/Models/ContentTypeAvailableCompositionsResults.cs
similarity index 100%
rename from src/Umbraco.Core/Models/ContentTypeAvailableCompositionsResults.cs
rename to src/Umbraco.Abstractions/Models/ContentTypeAvailableCompositionsResults.cs
diff --git a/src/Umbraco.Core/Models/ContentTypeBaseExtensions.cs b/src/Umbraco.Abstractions/Models/ContentTypeBaseExtensions.cs
similarity index 96%
rename from src/Umbraco.Core/Models/ContentTypeBaseExtensions.cs
rename to src/Umbraco.Abstractions/Models/ContentTypeBaseExtensions.cs
index 121fb7a5d1..35c7b8e164 100644
--- a/src/Umbraco.Core/Models/ContentTypeBaseExtensions.cs
+++ b/src/Umbraco.Abstractions/Models/ContentTypeBaseExtensions.cs
@@ -27,7 +27,7 @@ namespace Umbraco.Core.Models
///
///
///
- internal static bool WasPropertyTypeVariationChanged(this IContentTypeBase contentType)
+ public static bool WasPropertyTypeVariationChanged(this IContentTypeBase contentType)
{
return contentType.WasPropertyTypeVariationChanged(out var _);
}
diff --git a/src/Umbraco.Core/Models/DataTypeExtensions.cs b/src/Umbraco.Abstractions/Models/DataTypeExtensions.cs
similarity index 100%
rename from src/Umbraco.Core/Models/DataTypeExtensions.cs
rename to src/Umbraco.Abstractions/Models/DataTypeExtensions.cs
diff --git a/src/Umbraco.Core/Models/SimpleContentType.cs b/src/Umbraco.Abstractions/Models/SimpleContentType.cs
similarity index 100%
rename from src/Umbraco.Core/Models/SimpleContentType.cs
rename to src/Umbraco.Abstractions/Models/SimpleContentType.cs
diff --git a/src/Umbraco.Core/PublishedModelFactoryExtensions.cs b/src/Umbraco.Abstractions/PublishedModelFactoryExtensions.cs
similarity index 100%
rename from src/Umbraco.Core/PublishedModelFactoryExtensions.cs
rename to src/Umbraco.Abstractions/PublishedModelFactoryExtensions.cs
diff --git a/src/Umbraco.Core/Services/ContentServiceExtensions.cs b/src/Umbraco.Abstractions/Services/ContentServiceExtensions.cs
similarity index 100%
rename from src/Umbraco.Core/Services/ContentServiceExtensions.cs
rename to src/Umbraco.Abstractions/Services/ContentServiceExtensions.cs
diff --git a/src/Umbraco.Core/Services/ContentTypeServiceExtensions.cs b/src/Umbraco.Abstractions/Services/ContentTypeServiceExtensions.cs
similarity index 100%
rename from src/Umbraco.Core/Services/ContentTypeServiceExtensions.cs
rename to src/Umbraco.Abstractions/Services/ContentTypeServiceExtensions.cs
diff --git a/src/Umbraco.Core/Services/DateTypeServiceExtensions.cs b/src/Umbraco.Abstractions/Services/DateTypeServiceExtensions.cs
similarity index 100%
rename from src/Umbraco.Core/Services/DateTypeServiceExtensions.cs
rename to src/Umbraco.Abstractions/Services/DateTypeServiceExtensions.cs
diff --git a/src/Umbraco.Core/Services/IContentTypeBaseServiceProvider.cs b/src/Umbraco.Abstractions/Services/IContentTypeBaseServiceProvider.cs
similarity index 100%
rename from src/Umbraco.Core/Services/IContentTypeBaseServiceProvider.cs
rename to src/Umbraco.Abstractions/Services/IContentTypeBaseServiceProvider.cs
diff --git a/src/Umbraco.Core/Services/IContentTypeService.cs b/src/Umbraco.Abstractions/Services/IContentTypeService.cs
similarity index 100%
rename from src/Umbraco.Core/Services/IContentTypeService.cs
rename to src/Umbraco.Abstractions/Services/IContentTypeService.cs
diff --git a/src/Umbraco.Core/Services/IContentTypeServiceBase.cs b/src/Umbraco.Abstractions/Services/IContentTypeServiceBase.cs
similarity index 100%
rename from src/Umbraco.Core/Services/IContentTypeServiceBase.cs
rename to src/Umbraco.Abstractions/Services/IContentTypeServiceBase.cs
diff --git a/src/Umbraco.Core/Services/IDataTypeService.cs b/src/Umbraco.Abstractions/Services/IDataTypeService.cs
similarity index 100%
rename from src/Umbraco.Core/Services/IDataTypeService.cs
rename to src/Umbraco.Abstractions/Services/IDataTypeService.cs
diff --git a/src/Umbraco.Core/Services/IEntityXmlSerializer.cs b/src/Umbraco.Abstractions/Services/IEntityXmlSerializer.cs
similarity index 100%
rename from src/Umbraco.Core/Services/IEntityXmlSerializer.cs
rename to src/Umbraco.Abstractions/Services/IEntityXmlSerializer.cs
diff --git a/src/Umbraco.Core/Services/IMediaService.cs b/src/Umbraco.Abstractions/Services/IMediaService.cs
similarity index 99%
rename from src/Umbraco.Core/Services/IMediaService.cs
rename to src/Umbraco.Abstractions/Services/IMediaService.cs
index 48345bc88c..6de2765644 100644
--- a/src/Umbraco.Core/Services/IMediaService.cs
+++ b/src/Umbraco.Abstractions/Services/IMediaService.cs
@@ -1,11 +1,8 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
-using System.Xml.Linq;
-using Umbraco.Core.Configuration;
using System.IO;
using Umbraco.Core.Models;
-using Umbraco.Core.Persistence.DatabaseModelDefinitions;
using Umbraco.Core.Persistence.Querying;
namespace Umbraco.Core.Services
diff --git a/src/Umbraco.Core/Services/IMediaTypeService.cs b/src/Umbraco.Abstractions/Services/IMediaTypeService.cs
similarity index 100%
rename from src/Umbraco.Core/Services/IMediaTypeService.cs
rename to src/Umbraco.Abstractions/Services/IMediaTypeService.cs
diff --git a/src/Umbraco.Core/Services/IMemberTypeService.cs b/src/Umbraco.Abstractions/Services/IMemberTypeService.cs
similarity index 100%
rename from src/Umbraco.Core/Services/IMemberTypeService.cs
rename to src/Umbraco.Abstractions/Services/IMemberTypeService.cs
diff --git a/src/Umbraco.Core/Services/MediaServiceExtensions.cs b/src/Umbraco.Abstractions/Services/MediaServiceExtensions.cs
similarity index 100%
rename from src/Umbraco.Core/Services/MediaServiceExtensions.cs
rename to src/Umbraco.Abstractions/Services/MediaServiceExtensions.cs
diff --git a/src/Umbraco.Abstractions/TypeExtensions.cs b/src/Umbraco.Abstractions/TypeExtensions.cs
new file mode 100644
index 0000000000..4f55b6458c
--- /dev/null
+++ b/src/Umbraco.Abstractions/TypeExtensions.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Umbraco.Core
+{
+ public static class TypeExtensions
+ {
+ public static T GetCustomAttribute(this Type type, bool inherit)
+ where T : Attribute
+ {
+ return type.GetCustomAttributes(inherit).SingleOrDefault();
+ }
+
+ public static IEnumerable GetCustomAttributes(this Type type, bool inherited)
+ where T : Attribute
+ {
+ if (type == null) return Enumerable.Empty();
+ return type.GetCustomAttributes(typeof (T), inherited).OfType();
+ }
+
+ }
+}
diff --git a/src/Umbraco.Core/UdiEntityTypeHelper.cs b/src/Umbraco.Abstractions/UdiEntityTypeHelper.cs
similarity index 100%
rename from src/Umbraco.Core/UdiEntityTypeHelper.cs
rename to src/Umbraco.Abstractions/UdiEntityTypeHelper.cs
diff --git a/src/Umbraco.Core/UdiGetterExtensions.cs b/src/Umbraco.Abstractions/UdiGetterExtensions.cs
similarity index 100%
rename from src/Umbraco.Core/UdiGetterExtensions.cs
rename to src/Umbraco.Abstractions/UdiGetterExtensions.cs
diff --git a/src/Umbraco.Core/UdiParserServiceConnectors.cs b/src/Umbraco.Abstractions/UdiParserServiceConnectors.cs
similarity index 100%
rename from src/Umbraco.Core/UdiParserServiceConnectors.cs
rename to src/Umbraco.Abstractions/UdiParserServiceConnectors.cs
diff --git a/src/Umbraco.Configuration/GlobalSettings.cs b/src/Umbraco.Configuration/GlobalSettings.cs
index 0d1bb2a494..440940cb85 100644
--- a/src/Umbraco.Configuration/GlobalSettings.cs
+++ b/src/Umbraco.Configuration/GlobalSettings.cs
@@ -15,7 +15,6 @@ namespace Umbraco.Core.Configuration
public class GlobalSettings : IGlobalSettings
{
private readonly IIOHelper _ioHelper;
- private string _localTempPath;
// TODO these should not be static
private static string _reservedPaths;
@@ -230,6 +229,10 @@ namespace Umbraco.Core.Configuration
}
}
+ ///
+ /// Gets a value indicating whether umbraco is running in [debug mode].
+ ///
+ /// true if [debug mode]; otherwise, false.
public bool DebugMode
{
get
diff --git a/src/Umbraco.Core/Compose/ManifestWatcherComponent.cs b/src/Umbraco.Core/Compose/ManifestWatcherComponent.cs
index 97e27e9e23..bb6df42c13 100644
--- a/src/Umbraco.Core/Compose/ManifestWatcherComponent.cs
+++ b/src/Umbraco.Core/Compose/ManifestWatcherComponent.cs
@@ -10,15 +10,17 @@ namespace Umbraco.Core.Compose
{
private readonly IRuntimeState _runtimeState;
private readonly ILogger _logger;
+ private readonly IIOHelper _ioHelper;
// if configured and in debug mode, a ManifestWatcher watches App_Plugins folders for
// package.manifest chances and restarts the application on any change
private ManifestWatcher _mw;
- public ManifestWatcherComponent(IRuntimeState runtimeState, ILogger logger)
+ public ManifestWatcherComponent(IRuntimeState runtimeState, ILogger logger, IIOHelper ioHelper)
{
_runtimeState = runtimeState;
_logger = logger;
+ _ioHelper = ioHelper;
}
public void Initialize()
@@ -28,7 +30,7 @@ namespace Umbraco.Core.Compose
//if (ApplicationContext.Current.IsConfigured == false || GlobalSettings.DebugMode == false)
// return;
- var appPlugins = Current.IOHelper.MapPath("~/App_Plugins/");
+ var appPlugins = _ioHelper.MapPath("~/App_Plugins/");
if (Directory.Exists(appPlugins) == false) return;
_mw = new ManifestWatcher(_logger);
diff --git a/src/Umbraco.Core/Composing/CompositionExtensions/FileSystems.cs b/src/Umbraco.Core/Composing/CompositionExtensions/FileSystems.cs
index 90a0f10fba..0fdcd0ae29 100644
--- a/src/Umbraco.Core/Composing/CompositionExtensions/FileSystems.cs
+++ b/src/Umbraco.Core/Composing/CompositionExtensions/FileSystems.cs
@@ -1,5 +1,4 @@
-using Umbraco.Core.Compose;
-using Umbraco.Core.IO;
+using Umbraco.Core.IO;
using Umbraco.Core.IO.MediaPathSchemes;
using Umbraco.Core.Logging;
diff --git a/src/Umbraco.Core/Composing/CompositionExtensions/Services.cs b/src/Umbraco.Core/Composing/CompositionExtensions/Services.cs
index 74cbab715f..c9fa8d1304 100644
--- a/src/Umbraco.Core/Composing/CompositionExtensions/Services.cs
+++ b/src/Umbraco.Core/Composing/CompositionExtensions/Services.cs
@@ -2,6 +2,7 @@
using System.IO;
using System.Linq;
using Umbraco.Core.Cache;
+using Umbraco.Core.Configuration;
using Umbraco.Core.Events;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
@@ -71,7 +72,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions
new PackageInstallation(
factory.GetInstance(), factory.GetInstance(),
factory.GetInstance(), factory.GetInstance(),
- new DirectoryInfo(Current.IOHelper.GetRootDirectorySafe())));
+ new DirectoryInfo( factory.GetInstance().GetRootDirectorySafe())));
return composition;
}
@@ -84,14 +85,16 @@ namespace Umbraco.Core.Composing.CompositionExtensions
///
private static PackagesRepository CreatePackageRepository(IFactory factory, string packageRepoFileName)
=> new PackagesRepository(
- factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(),
+ factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), factory.GetInstance(),
packageRepoFileName);
private static LocalizedTextServiceFileSources SourcesFactory(IFactory container)
{
- var mainLangFolder = new DirectoryInfo(Current.IOHelper.MapPath(Current.Configs.Global().UmbracoPath + "/config/lang/"));
- var appPlugins = new DirectoryInfo(Current.IOHelper.MapPath(Constants.SystemDirectories.AppPlugins));
- var configLangFolder = new DirectoryInfo(Current.IOHelper.MapPath(Constants.SystemDirectories.Config + "/lang/"));
+ var ioHelper = container.GetInstance();
+ var globalSettings = container.GetInstance();
+ var mainLangFolder = new DirectoryInfo(ioHelper.MapPath(globalSettings.UmbracoPath + "/config/lang/"));
+ var appPlugins = new DirectoryInfo(ioHelper.MapPath(Constants.SystemDirectories.AppPlugins));
+ var configLangFolder = new DirectoryInfo(ioHelper.MapPath(Constants.SystemDirectories.Config + "/lang/"));
var pluginLangFolders = appPlugins.Exists == false
? Enumerable.Empty()
diff --git a/src/Umbraco.Core/ContentExtensions.cs b/src/Umbraco.Core/ContentExtensions.cs
index 6732fd9394..f9d06b70a3 100644
--- a/src/Umbraco.Core/ContentExtensions.cs
+++ b/src/Umbraco.Core/ContentExtensions.cs
@@ -148,7 +148,9 @@ namespace Umbraco.Core
if (filename == null || filestream == null) return;
// get a safe & clean filename
- filename = Current.IOHelper.SafeFileName(filename);
+ var ioHelper = Current.Factory.GetInstance();
+
+ filename = ioHelper.SafeFileName(filename);
if (string.IsNullOrWhiteSpace(filename)) return;
filename = filename.ToLower();
@@ -326,15 +328,7 @@ namespace Umbraco.Core
return entity.Properties.Where(x => x.IsDirty()).Select(x => x.Alias);
}
- public static bool IsAnyUserPropertyDirty(this IContentBase entity)
- {
- return entity.Properties.Any(x => x.IsDirty());
- }
- public static bool WasAnyUserPropertyDirty(this IContentBase entity)
- {
- return entity.Properties.Any(x => x.WasDirty());
- }
#endregion
}
diff --git a/src/Umbraco.Core/Diagnostics/MiniDump.cs b/src/Umbraco.Core/Diagnostics/MiniDump.cs
index 92b6e8cbda..6534ad705c 100644
--- a/src/Umbraco.Core/Diagnostics/MiniDump.cs
+++ b/src/Umbraco.Core/Diagnostics/MiniDump.cs
@@ -110,11 +110,13 @@ namespace Umbraco.Core.Diagnostics
// filter everywhere in our code = not!
var stacktrace = withException ? Environment.StackTrace : string.Empty;
- var filepath = Current.IOHelper.MapPath("~/App_Data/MiniDump");
+ var ioHelper = Current.Factory.GetInstance();
+
+ var filepath = ioHelper.MapPath("~/App_Data/MiniDump");
if (Directory.Exists(filepath) == false)
Directory.CreateDirectory(filepath);
- var filename = Path.Combine(filepath, string.Format("{0:yyyyMMddTHHmmss}.{1}.dmp", DateTime.UtcNow, Guid.NewGuid().ToString("N").Substring(0, 4)));
+ var filename = Path.Combine(filepath, $"{DateTime.UtcNow:yyyyMMddTHHmmss}.{Guid.NewGuid().ToString("N").Substring(0, 4)}.dmp");
using (var stream = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite, FileShare.Write))
{
return Write(stream.SafeFileHandle, options, withException);
@@ -126,7 +128,8 @@ namespace Umbraco.Core.Diagnostics
{
lock (LockO)
{
- var filepath = Current.IOHelper.MapPath("~/App_Data/MiniDump");
+ var ioHelper = Current.Factory.GetInstance();
+ var filepath = ioHelper.MapPath("~/App_Data/MiniDump");
if (Directory.Exists(filepath) == false) return true;
var count = Directory.GetFiles(filepath, "*.dmp").Length;
return count < 8;
diff --git a/src/Umbraco.Core/Logging/Viewer/JsonLogViewer.cs b/src/Umbraco.Core/Logging/Viewer/JsonLogViewer.cs
index bbe2f3704d..aea1c8fae4 100644
--- a/src/Umbraco.Core/Logging/Viewer/JsonLogViewer.cs
+++ b/src/Umbraco.Core/Logging/Viewer/JsonLogViewer.cs
@@ -5,6 +5,7 @@ using System.Linq;
using Newtonsoft.Json;
using Serilog.Events;
using Serilog.Formatting.Compact.Reader;
+using Umbraco.Core.IO;
namespace Umbraco.Core.Logging.Viewer
{
@@ -13,7 +14,7 @@ namespace Umbraco.Core.Logging.Viewer
private readonly string _logsPath;
private readonly ILogger _logger;
- public JsonLogViewer(ILogger logger, string logsPath = "", string searchPath = "") : base(searchPath)
+ public JsonLogViewer(ILogger logger, IIOHelper ioHelper, string logsPath = "", string searchPath = "") : base(ioHelper, searchPath)
{
if (string.IsNullOrEmpty(logsPath))
logsPath = $@"{AppDomain.CurrentDomain.BaseDirectory}\App_Data\Logs\";
diff --git a/src/Umbraco.Core/Logging/Viewer/LogViewerComposer.cs b/src/Umbraco.Core/Logging/Viewer/LogViewerComposer.cs
index 8eb835b4d9..f92ca0140a 100644
--- a/src/Umbraco.Core/Logging/Viewer/LogViewerComposer.cs
+++ b/src/Umbraco.Core/Logging/Viewer/LogViewerComposer.cs
@@ -1,5 +1,6 @@
using Umbraco.Core.Compose;
using Umbraco.Core.Composing;
+using Umbraco.Core.IO;
namespace Umbraco.Core.Logging.Viewer
{
@@ -9,7 +10,7 @@ namespace Umbraco.Core.Logging.Viewer
{
public void Compose(Composition composition)
{
- composition.SetLogViewer(_ => new JsonLogViewer(composition.Logger));
+ composition.SetLogViewer(factory => new JsonLogViewer(composition.Logger, factory.GetInstance()));
}
}
}
diff --git a/src/Umbraco.Core/Logging/Viewer/LogViewerSourceBase.cs b/src/Umbraco.Core/Logging/Viewer/LogViewerSourceBase.cs
index c2d9dbb46c..4cc70eaf42 100644
--- a/src/Umbraco.Core/Logging/Viewer/LogViewerSourceBase.cs
+++ b/src/Umbraco.Core/Logging/Viewer/LogViewerSourceBase.cs
@@ -15,17 +15,19 @@ namespace Umbraco.Core.Logging.Viewer
{
public abstract class LogViewerSourceBase : ILogViewer
{
- protected LogViewerSourceBase(string pathToSearches = "")
+ private readonly string _searchesConfigPath;
+ private readonly IIOHelper _ioHelper;
+
+ protected LogViewerSourceBase(IIOHelper ioHelper, string pathToSearches = "")
{
if (string.IsNullOrEmpty(pathToSearches))
// ReSharper disable once StringLiteralTypo
- pathToSearches = Current.IOHelper.MapPath("~/Config/logviewer.searches.config.js");
+ pathToSearches = ioHelper.MapPath("~/Config/logviewer.searches.config.js");
_searchesConfigPath = pathToSearches;
+ _ioHelper = ioHelper;
}
- private readonly string _searchesConfigPath;
-
public abstract bool CanHandleLargeLogs { get; }
///
@@ -40,7 +42,7 @@ namespace Umbraco.Core.Logging.Viewer
//Our default implementation
//If file does not exist - lets create it with an empty array
- EnsureFileExists(_searchesConfigPath, "[]");
+ EnsureFileExists(_searchesConfigPath, "[]", _ioHelper);
var rawJson = System.IO.File.ReadAllText(_searchesConfigPath);
return JsonConvert.DeserializeObject(rawJson);
@@ -58,7 +60,7 @@ namespace Umbraco.Core.Logging.Viewer
var rawJson = JsonConvert.SerializeObject(searches, Formatting.Indented);
//If file does not exist - lets create it with an empty array
- EnsureFileExists(_searchesConfigPath, "[]");
+ EnsureFileExists(_searchesConfigPath, "[]", _ioHelper);
//Write it back down to file
System.IO.File.WriteAllText(_searchesConfigPath, rawJson);
@@ -180,9 +182,9 @@ namespace Umbraco.Core.Logging.Viewer
};
}
- private static void EnsureFileExists(string path, string contents)
+ private static void EnsureFileExists(string path, string contents, IIOHelper ioHelper)
{
- var absolutePath = Current.IOHelper.MapPath(path);
+ var absolutePath = ioHelper.MapPath(path);
if (System.IO.File.Exists(absolutePath)) return;
using (var writer = System.IO.File.CreateText(absolutePath))
diff --git a/src/Umbraco.Core/Manifest/ManifestParser.cs b/src/Umbraco.Core/Manifest/ManifestParser.cs
index 75fdde487c..e493acd507 100644
--- a/src/Umbraco.Core/Manifest/ManifestParser.cs
+++ b/src/Umbraco.Core/Manifest/ManifestParser.cs
@@ -53,6 +53,8 @@ namespace Umbraco.Core.Manifest
_localizationService = localizationService;
_validators = validators ?? throw new ArgumentNullException(nameof(validators));
_filters = filters ?? throw new ArgumentNullException(nameof(filters));
+ _logger = logger ?? throw new ArgumentNullException(nameof(logger));
+ _ioHelper = ioHelper;
if (string.IsNullOrWhiteSpace(path)) throw new ArgumentNullOrEmptyException(nameof(path));
Path = path;
diff --git a/src/Umbraco.Core/Migrations/Install/DatabaseBuilder.cs b/src/Umbraco.Core/Migrations/Install/DatabaseBuilder.cs
index 100aaf6478..533c6cbbe7 100644
--- a/src/Umbraco.Core/Migrations/Install/DatabaseBuilder.cs
+++ b/src/Umbraco.Core/Migrations/Install/DatabaseBuilder.cs
@@ -6,6 +6,7 @@ using System.Xml.Linq;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Exceptions;
+using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Upgrade;
using Umbraco.Core.Persistence;
@@ -27,13 +28,24 @@ namespace Umbraco.Core.Migrations.Install
private readonly IMigrationBuilder _migrationBuilder;
private readonly IKeyValueService _keyValueService;
private readonly ILogger _logger;
+ private readonly IIOHelper _ioHelper;
+ private readonly IUmbracoVersion _umbracoVersion;
private DatabaseSchemaResult _databaseSchemaValidationResult;
///
/// Initializes a new instance of the class.
///
- public DatabaseBuilder(IScopeProvider scopeProvider, IGlobalSettings globalSettings, IUmbracoDatabaseFactory databaseFactory, IRuntimeState runtime, ILogger logger, IMigrationBuilder migrationBuilder, IKeyValueService keyValueService)
+ public DatabaseBuilder(
+ IScopeProvider scopeProvider,
+ IGlobalSettings globalSettings,
+ IUmbracoDatabaseFactory databaseFactory,
+ IRuntimeState runtime,
+ ILogger logger,
+ IMigrationBuilder migrationBuilder,
+ IKeyValueService keyValueService,
+ IIOHelper ioHelper,
+ IUmbracoVersion umbracoVersion)
{
_scopeProvider = scopeProvider;
_globalSettings = globalSettings;
@@ -42,6 +54,8 @@ namespace Umbraco.Core.Migrations.Install
_logger = logger;
_migrationBuilder = migrationBuilder;
_keyValueService = keyValueService;
+ _ioHelper = ioHelper;
+ _umbracoVersion = umbracoVersion;
}
#region Status
@@ -123,14 +137,14 @@ namespace Umbraco.Core.Migrations.Install
///
public void ConfigureEmbeddedDatabaseConnection()
{
- ConfigureEmbeddedDatabaseConnection(_databaseFactory, _logger);
+ ConfigureEmbeddedDatabaseConnection(_databaseFactory, _ioHelper, _logger);
}
- private static void ConfigureEmbeddedDatabaseConnection(IUmbracoDatabaseFactory factory, ILogger logger)
+ private static void ConfigureEmbeddedDatabaseConnection(IUmbracoDatabaseFactory factory, IIOHelper ioHelper, ILogger logger)
{
- SaveConnectionString(EmbeddedDatabaseConnectionString, Constants.DbProviderNames.SqlCe, logger);
+ SaveConnectionString(EmbeddedDatabaseConnectionString, Constants.DbProviderNames.SqlCe, ioHelper, logger);
- var path = Path.Combine(Current.IOHelper.GetRootDirectorySafe(), "App_Data", "Umbraco.sdf");
+ var path = Path.Combine(ioHelper.GetRootDirectorySafe(), "App_Data", "Umbraco.sdf");
if (File.Exists(path) == false)
{
// this should probably be in a "using (new SqlCeEngine)" clause but not sure
@@ -152,7 +166,7 @@ namespace Umbraco.Core.Migrations.Install
{
const string providerName = Constants.DbProviderNames.SqlServer;
- SaveConnectionString(connectionString, providerName, _logger);
+ SaveConnectionString(connectionString, providerName, _ioHelper, _logger);
_databaseFactory.Configure(connectionString, providerName);
}
@@ -168,7 +182,7 @@ namespace Umbraco.Core.Migrations.Install
{
var connectionString = GetDatabaseConnectionString(server, databaseName, user, password, databaseProvider, out var providerName);
- SaveConnectionString(connectionString, providerName, _logger);
+ SaveConnectionString(connectionString, providerName, _ioHelper, _logger);
_databaseFactory.Configure(connectionString, providerName);
}
@@ -199,7 +213,7 @@ namespace Umbraco.Core.Migrations.Install
public void ConfigureIntegratedSecurityDatabaseConnection(string server, string databaseName)
{
var connectionString = GetIntegratedSecurityDatabaseConnectionString(server, databaseName);
- SaveConnectionString(connectionString, Constants.DbProviderNames.SqlServer, _logger);
+ SaveConnectionString(connectionString, Constants.DbProviderNames.SqlServer, _ioHelper, _logger);
_databaseFactory.Configure(connectionString, Constants.DbProviderNames.SqlServer);
}
@@ -275,13 +289,13 @@ namespace Umbraco.Core.Migrations.Install
/// The connection string.
/// The provider name.
/// A logger.
- private static void SaveConnectionString(string connectionString, string providerName, ILogger logger)
+ private static void SaveConnectionString(string connectionString, string providerName, IIOHelper ioHelper, ILogger logger)
{
if (string.IsNullOrWhiteSpace(connectionString)) throw new ArgumentNullOrEmptyException(nameof(connectionString));
if (string.IsNullOrWhiteSpace(providerName)) throw new ArgumentNullOrEmptyException(nameof(providerName));
var fileSource = "web.config";
- var fileName = Current.IOHelper.MapPath(Current.IOHelper.Root +"/" + fileSource);
+ var fileName = ioHelper.MapPath(ioHelper.Root +"/" + fileSource);
var xml = XDocument.Load(fileName, LoadOptions.PreserveWhitespace);
if (xml.Root == null) throw new Exception($"Invalid {fileSource} file (no root).");
@@ -294,7 +308,7 @@ namespace Umbraco.Core.Migrations.Install
if (configSourceAttribute != null)
{
fileSource = configSourceAttribute.Value;
- fileName = Current.IOHelper.MapPath(Current.IOHelper.Root + "/" + fileSource);
+ fileName = ioHelper.MapPath(ioHelper.Root + "/" + fileSource);
if (!File.Exists(fileName))
throw new Exception($"Invalid configSource \"{fileSource}\" (no such file).");
@@ -366,7 +380,7 @@ namespace Umbraco.Core.Migrations.Install
return _databaseSchemaValidationResult;
var database = scope.Database;
- var dbSchema = new DatabaseSchemaCreator(database, _logger);
+ var dbSchema = new DatabaseSchemaCreator(database, _logger, _umbracoVersion);
_databaseSchemaValidationResult = dbSchema.ValidateSchema();
scope.Complete();
return _databaseSchemaValidationResult;
@@ -416,7 +430,7 @@ namespace Umbraco.Core.Migrations.Install
if (_runtime.Level == RuntimeLevel.Run)
throw new Exception("Umbraco is already configured!");
- var creator = new DatabaseSchemaCreator(database, _logger);
+ var creator = new DatabaseSchemaCreator(database, _logger, _umbracoVersion);
creator.InitializeDatabaseSchema();
message = message + "Installation completed!
";
diff --git a/src/Umbraco.Core/Migrations/Install/DatabaseDataCreator.cs b/src/Umbraco.Core/Migrations/Install/DatabaseDataCreator.cs
index 94d8cfbc62..5dc937822b 100644
--- a/src/Umbraco.Core/Migrations/Install/DatabaseDataCreator.cs
+++ b/src/Umbraco.Core/Migrations/Install/DatabaseDataCreator.cs
@@ -15,11 +15,13 @@ namespace Umbraco.Core.Migrations.Install
{
private readonly IDatabase _database;
private readonly ILogger _logger;
+ private readonly IUmbracoVersion _umbracoVersion;
- public DatabaseDataCreator(IDatabase database, ILogger logger)
+ public DatabaseDataCreator(IDatabase database, ILogger logger, IUmbracoVersion umbracoVersion)
{
_database = database;
_logger = logger;
+ _umbracoVersion = umbracoVersion;
}
///
@@ -324,7 +326,7 @@ namespace Umbraco.Core.Migrations.Install
{
// on install, initialize the umbraco migration plan with the final state
- var upgrader = new Upgrader(new UmbracoPlan());
+ var upgrader = new Upgrader(new UmbracoPlan(_umbracoVersion));
var stateValueKey = upgrader.StateValueKey;
var finalState = upgrader.Plan.FinalState;
diff --git a/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs b/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs
index eab7afe308..7181460eeb 100644
--- a/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs
+++ b/src/Umbraco.Core/Migrations/Install/DatabaseSchemaCreator.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using NPoco;
+using Umbraco.Core.Configuration;
using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence;
@@ -18,11 +19,13 @@ namespace Umbraco.Core.Migrations.Install
{
private readonly IUmbracoDatabase _database;
private readonly ILogger _logger;
+ private readonly IUmbracoVersion _umbracoVersion;
- public DatabaseSchemaCreator(IUmbracoDatabase database, ILogger logger)
+ public DatabaseSchemaCreator(IUmbracoDatabase database, ILogger logger, IUmbracoVersion umbracoVersion)
{
_database = database;
_logger = logger;
+ _umbracoVersion = umbracoVersion;
}
private ISqlSyntaxProvider SqlSyntax => _database.SqlContext.SqlSyntax;
@@ -125,7 +128,7 @@ namespace Umbraco.Core.Migrations.Install
if (e.Cancel == false)
{
- var dataCreation = new DatabaseDataCreator(_database, _logger);
+ var dataCreation = new DatabaseDataCreator(_database, _logger,_umbracoVersion);
foreach (var table in OrderedTables)
CreateTable(false, table, dataCreation);
}
@@ -395,7 +398,7 @@ namespace Umbraco.Core.Migrations.Install
where T : new()
{
var tableType = typeof(T);
- CreateTable(overwrite, tableType, new DatabaseDataCreator(_database, _logger));
+ CreateTable(overwrite, tableType, new DatabaseDataCreator(_database, _logger, _umbracoVersion));
}
///
diff --git a/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs b/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs
index 070f4bdf6a..c657d0d9e7 100644
--- a/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs
+++ b/src/Umbraco.Core/Migrations/Upgrade/UmbracoPlan.cs
@@ -14,16 +14,16 @@ namespace Umbraco.Core.Migrations.Upgrade
///
public class UmbracoPlan : MigrationPlan
{
+ private readonly IUmbracoVersion _umbracoVersion;
private const string InitPrefix = "{init-";
private const string InitSuffix = "}";
-
- private IUmbracoVersion UmbracoVersion => Current.UmbracoVersion;
///
/// Initializes a new instance of the class.
///
- public UmbracoPlan()
+ public UmbracoPlan(IUmbracoVersion umbracoVersion)
: base(Constants.System.UmbracoUpgradePlanName)
{
+ _umbracoVersion = umbracoVersion;
DefinePlan();
}
@@ -66,13 +66,13 @@ namespace Umbraco.Core.Migrations.Upgrade
throw new InvalidOperationException($"Could not get current version from web.config {Constants.AppSettings.ConfigurationStatus} appSetting.");
// cannot go back in time
- if (currentVersion > UmbracoVersion.SemanticVersion)
- throw new InvalidOperationException($"Version {currentVersion} cannot be downgraded to {UmbracoVersion.SemanticVersion}.");
+ if (currentVersion > _umbracoVersion.SemanticVersion)
+ throw new InvalidOperationException($"Version {currentVersion} cannot be downgraded to {_umbracoVersion.SemanticVersion}.");
// only from 7.14.0 and above
var minVersion = new SemVersion(7, 14);
if (currentVersion < minVersion)
- throw new InvalidOperationException($"Version {currentVersion} cannot be migrated to {UmbracoVersion.SemanticVersion}."
+ throw new InvalidOperationException($"Version {currentVersion} cannot be migrated to {_umbracoVersion.SemanticVersion}."
+ $" Please upgrade first to at least {minVersion}.");
// Force versions between 7.14.*-7.15.* into into 7.14 initial state. Because there is no db-changes,
@@ -89,7 +89,7 @@ namespace Umbraco.Core.Migrations.Upgrade
{
if (TryGetInitStateVersion(state, out var initVersion))
{
- throw new InvalidOperationException($"Version {UmbracoVersion.SemanticVersion} does not support migrating from {initVersion}."
+ throw new InvalidOperationException($"Version {_umbracoVersion.SemanticVersion} does not support migrating from {initVersion}."
+ $" Please verify which versions support migrating from {initVersion}.");
}
diff --git a/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs b/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs
index f9efc60142..db557e1905 100644
--- a/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs
+++ b/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs
@@ -88,7 +88,7 @@ namespace Umbraco.Core.Models
{
content.CultureInfos.Clear();
content.CultureInfos = null;
- }
+ }
if (culture == null || culture == "*")
content.Name = other.Name;
@@ -112,32 +112,7 @@ namespace Umbraco.Core.Models
content.PublishCultureInfos.AddOrUpdate(culture, name, date);
}
- ///
- /// Used to synchronize all culture dates to the same date if they've been modified
- ///
- ///
- ///
- ///
- /// This is so that in an operation where (for example) 2 languages are updates like french and english, it is possible that
- /// these dates assigned to them differ by a couple of Ticks, but we need to ensure they are persisted at the exact same time.
- ///
- public static void AdjustDates(this IContent content, DateTime date)
- {
- foreach (var culture in content.PublishedCultures.ToList())
- {
- if (!content.PublishCultureInfos.TryGetValue(culture, out var publishInfos))
- continue;
- // if it's not dirty, it means it hasn't changed so there's nothing to adjust
- if (!publishInfos.IsDirty())
- continue;
-
- content.PublishCultureInfos.AddOrUpdate(culture, publishInfos.Name, date);
-
- if (content.CultureInfos.TryGetValue(culture, out var infos))
- SetCultureInfo(content, culture, infos.Name, date);
- }
- }
// sets the edited cultures on the content
public static void SetCultureEdited(this IContent content, IEnumerable cultures)
@@ -151,17 +126,6 @@ namespace Umbraco.Core.Models
}
}
- public static void SetCultureInfo(this IContentBase content, string culture, string name, DateTime date)
- {
- if (name.IsNullOrWhiteSpace())
- throw new ArgumentNullOrEmptyException(nameof(name));
-
- if (culture.IsNullOrWhiteSpace())
- throw new ArgumentNullOrEmptyException(nameof(culture));
-
- content.CultureInfos.AddOrUpdate(culture, name, date);
- }
-
///
/// Sets the publishing values for names and properties.
///
@@ -249,7 +213,7 @@ namespace Umbraco.Core.Models
// one single culture
keepProcessing = content.ClearPublishInfo(culture);
}
-
+
if (keepProcessing)
{
@@ -288,14 +252,6 @@ namespace Umbraco.Core.Models
return removed;
}
- ///
- /// Updates a culture date, if the culture exists.
- ///
- public static void TouchCulture(this IContentBase content, string culture)
- {
- if (culture.IsNullOrWhiteSpace()) return;
- if (!content.CultureInfos.TryGetValue(culture, out var infos)) return;
- content.CultureInfos.AddOrUpdate(culture, infos.Name, DateTime.Now);
- }
+
}
}
diff --git a/src/Umbraco.Core/Models/Media.cs b/src/Umbraco.Core/Models/Media.cs
index 002611c09c..452bb615d1 100644
--- a/src/Umbraco.Core/Models/Media.cs
+++ b/src/Umbraco.Core/Models/Media.cs
@@ -27,7 +27,7 @@ namespace Umbraco.Core.Models
/// Parent object
/// MediaType for the current Media object
/// Collection of properties
- public Media(string name, IMedia parent, IMediaType contentType, PropertyCollection properties)
+ public Media(string name, IMedia parent, IMediaType contentType, IPropertyCollection properties)
: base(name, parent, contentType, properties)
{ }
@@ -48,7 +48,7 @@ namespace Umbraco.Core.Models
/// Id of the Parent IMedia
/// MediaType for the current Media object
/// Collection of properties
- public Media(string name, int parentId, IMediaType contentType, PropertyCollection properties)
+ public Media(string name, int parentId, IMediaType contentType, IPropertyCollection properties)
: base(name, parentId, contentType, properties)
{ }
diff --git a/src/Umbraco.Core/Packaging/PackageFileInstallation.cs b/src/Umbraco.Core/Packaging/PackageFileInstallation.cs
index 45e40b8e5f..01bb316612 100644
--- a/src/Umbraco.Core/Packaging/PackageFileInstallation.cs
+++ b/src/Umbraco.Core/Packaging/PackageFileInstallation.cs
@@ -20,12 +20,14 @@ namespace Umbraco.Core.Packaging
internal class PackageFileInstallation
{
private readonly CompiledPackageXmlParser _parser;
+ private readonly IIOHelper _ioHelper;
private readonly IProfilingLogger _logger;
private readonly PackageExtraction _packageExtraction;
- public PackageFileInstallation(CompiledPackageXmlParser parser, IProfilingLogger logger)
+ public PackageFileInstallation(CompiledPackageXmlParser parser, IIOHelper ioHelper, IProfilingLogger logger)
{
_parser = parser;
+ _ioHelper = ioHelper;
_logger = logger;
_packageExtraction = new PackageExtraction();
}
@@ -60,15 +62,15 @@ namespace Umbraco.Core.Packaging
foreach (var item in package.Files.ToArray())
{
- removedFiles.Add(Current.IOHelper.GetRelativePath(item));
+ removedFiles.Add(_ioHelper.GetRelativePath(item));
//here we need to try to find the file in question as most packages does not support the tilde char
- var file = Current.IOHelper.FindFile(item);
+ var file = _ioHelper.FindFile(item);
if (file != null)
{
// TODO: Surely this should be ~/ ?
file = file.EnsureStartsWith("/");
- var filePath = Current.IOHelper.MapPath(file);
+ var filePath = _ioHelper.MapPath(file);
if (File.Exists(filePath))
File.Delete(filePath);
diff --git a/src/Umbraco.Core/Packaging/PackagesRepository.cs b/src/Umbraco.Core/Packaging/PackagesRepository.cs
index 1dfd6488ba..50a8ba6769 100644
--- a/src/Umbraco.Core/Packaging/PackagesRepository.cs
+++ b/src/Umbraco.Core/Packaging/PackagesRepository.cs
@@ -29,11 +29,13 @@ namespace Umbraco.Core.Packaging
private readonly ILocalizationService _languageService;
private readonly IEntityXmlSerializer _serializer;
private readonly ILogger _logger;
+ private readonly IIOHelper _ioHelper;
private readonly string _packageRepositoryFileName;
private readonly string _mediaFolderPath;
private readonly string _packagesFolderPath;
private readonly string _tempFolderPath;
private readonly PackageDefinitionXmlParser _parser;
+ private readonly IUmbracoVersion _umbracoVersion;
///
/// Constructor
@@ -44,6 +46,7 @@ namespace Umbraco.Core.Packaging
///
///
///
+ ///
///
///
///
@@ -55,7 +58,9 @@ namespace Umbraco.Core.Packaging
public PackagesRepository(IContentService contentService, IContentTypeService contentTypeService,
IDataTypeService dataTypeService, IFileService fileService, IMacroService macroService,
ILocalizationService languageService,
+ IIOHelper ioHelper,
IEntityXmlSerializer serializer, ILogger logger,
+ IUmbracoVersion umbracoVersion,
string packageRepositoryFileName,
string tempFolderPath = null, string packagesFolderPath = null, string mediaFolderPath = null)
{
@@ -68,6 +73,7 @@ namespace Umbraco.Core.Packaging
_languageService = languageService;
_serializer = serializer;
_logger = logger;
+ _ioHelper = ioHelper;
_packageRepositoryFileName = packageRepositoryFileName;
_tempFolderPath = tempFolderPath ?? Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "PackageFiles";
@@ -75,6 +81,7 @@ namespace Umbraco.Core.Packaging
_mediaFolderPath = mediaFolderPath ?? Current.Configs.Global().UmbracoMediaPath + "/created-packages";
_parser = new PackageDefinitionXmlParser(logger);
+ _umbracoVersion = umbracoVersion;
}
private string CreatedPackagesFile => _packagesFolderPath.EnsureEndsWith('/') + _packageRepositoryFileName;
@@ -155,7 +162,7 @@ namespace Umbraco.Core.Packaging
ValidatePackage(definition);
//Create a folder for building this package
- var temporaryPath = Current.IOHelper.MapPath(_tempFolderPath.EnsureEndsWith('/') + Guid.NewGuid());
+ var temporaryPath = _ioHelper.MapPath(_tempFolderPath.EnsureEndsWith('/') + Guid.NewGuid());
if (Directory.Exists(temporaryPath) == false)
Directory.CreateDirectory(temporaryPath);
@@ -165,7 +172,7 @@ namespace Umbraco.Core.Packaging
var compiledPackageXml = CreateCompiledPackageXml(out var root, out var filesXml);
//Info section
- root.Add(GetPackageInfoXml(definition));
+ root.Add(GetPackageInfoXml(definition, _umbracoVersion));
PackageDocumentsAndTags(definition, root);
PackageDocumentTypes(definition, root);
@@ -178,13 +185,13 @@ namespace Umbraco.Core.Packaging
//Files
foreach (var fileName in definition.Files)
- AppendFileToPackage(fileName, temporaryPath, filesXml);
+ AppendFileToPackage(fileName, temporaryPath, filesXml, _ioHelper);
//Load view on install...
if (!string.IsNullOrEmpty(definition.PackageView))
{
var control = new XElement("view", definition.PackageView);
- AppendFileToPackage(definition.PackageView, temporaryPath, filesXml);
+ AppendFileToPackage(definition.PackageView, temporaryPath, filesXml, _ioHelper);
root.Add(control);
}
@@ -214,11 +221,11 @@ namespace Umbraco.Core.Packaging
// check if there's a packages directory below media
- if (Directory.Exists(Current.IOHelper.MapPath(_mediaFolderPath)) == false)
- Directory.CreateDirectory(Current.IOHelper.MapPath(_mediaFolderPath));
+ if (Directory.Exists(_ioHelper.MapPath(_mediaFolderPath)) == false)
+ Directory.CreateDirectory(_ioHelper.MapPath(_mediaFolderPath));
var packPath = _mediaFolderPath.EnsureEndsWith('/') + (definition.Name + "_" + definition.Version).Replace(' ', '_') + ".zip";
- ZipPackage(temporaryPath, Current.IOHelper.MapPath(packPath));
+ ZipPackage(temporaryPath, _ioHelper.MapPath(packPath));
//we need to update the package path and save it
definition.PackagePath = packPath;
@@ -294,7 +301,7 @@ namespace Umbraco.Core.Packaging
macros.Add(macroXml);
//if the macro has a file copy it to the xml
if (!string.IsNullOrEmpty(macro.MacroSource))
- AppendFileToPackage(macro.MacroSource, temporaryPath, filesXml);
+ AppendFileToPackage(macro.MacroSource, temporaryPath, filesXml,_ioHelper);
}
root.Add(macros);
}
@@ -444,12 +451,12 @@ namespace Umbraco.Core.Packaging
/// The path.
/// The package directory.
/// The files xml node
- private static void AppendFileToPackage(string path, string packageDirectory, XContainer filesXml)
+ private static void AppendFileToPackage(string path, string packageDirectory, XContainer filesXml, IIOHelper ioHelper)
{
if (!path.StartsWith("~/") && !path.StartsWith("/"))
path = "~/" + path;
- var serverPath = Current.IOHelper.MapPath(path);
+ var serverPath = ioHelper.MapPath(path);
if (File.Exists(serverPath))
AppendFileXml(new FileInfo(serverPath), path, packageDirectory, filesXml);
@@ -546,7 +553,7 @@ namespace Umbraco.Core.Packaging
dtl.Add(dt);
}
- private static XElement GetPackageInfoXml(PackageDefinition definition)
+ private static XElement GetPackageInfoXml(PackageDefinition definition, IUmbracoVersion umbracoVersion)
{
var info = new XElement("info");
@@ -565,9 +572,9 @@ namespace Umbraco.Core.Packaging
var requirements = new XElement("requirements");
- requirements.Add(new XElement("major", definition.UmbracoVersion == null ? Current.UmbracoVersion.SemanticVersion.Major.ToInvariantString() : definition.UmbracoVersion.Major.ToInvariantString()));
- requirements.Add(new XElement("minor", definition.UmbracoVersion == null ? Current.UmbracoVersion.SemanticVersion.Minor.ToInvariantString() : definition.UmbracoVersion.Minor.ToInvariantString()));
- requirements.Add(new XElement("patch", definition.UmbracoVersion == null ? Current.UmbracoVersion.SemanticVersion.Patch.ToInvariantString() : definition.UmbracoVersion.Build.ToInvariantString()));
+ requirements.Add(new XElement("major", definition.UmbracoVersion == null ? umbracoVersion.SemanticVersion.Major.ToInvariantString() : definition.UmbracoVersion.Major.ToInvariantString()));
+ requirements.Add(new XElement("minor", definition.UmbracoVersion == null ? umbracoVersion.SemanticVersion.Minor.ToInvariantString() : definition.UmbracoVersion.Minor.ToInvariantString()));
+ requirements.Add(new XElement("patch", definition.UmbracoVersion == null ? umbracoVersion.SemanticVersion.Patch.ToInvariantString() : definition.UmbracoVersion.Build.ToInvariantString()));
if (definition.UmbracoVersion != null)
requirements.Add(new XAttribute("type", RequirementsType.Strict.ToString()));
@@ -609,11 +616,11 @@ namespace Umbraco.Core.Packaging
private XDocument EnsureStorage(out string packagesFile)
{
- var packagesFolder = Current.IOHelper.MapPath(_packagesFolderPath);
+ var packagesFolder = _ioHelper.MapPath(_packagesFolderPath);
//ensure it exists
Directory.CreateDirectory(packagesFolder);
- packagesFile = Current.IOHelper.MapPath(CreatedPackagesFile);
+ packagesFile = _ioHelper.MapPath(CreatedPackagesFile);
if (!File.Exists(packagesFile))
{
var xml = new XDocument(new XElement("packages"));
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewMacroRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewMacroRepository.cs
index d707bcee10..03de23004e 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewMacroRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewMacroRepository.cs
@@ -5,8 +5,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class PartialViewMacroRepository : PartialViewRepository, IPartialViewMacroRepository
{
- public PartialViewMacroRepository(IFileSystems fileSystems)
- : base(fileSystems.MacroPartialsFileSystem)
+ public PartialViewMacroRepository(IFileSystems fileSystems, IIOHelper ioHelper)
+ : base(fileSystems.MacroPartialsFileSystem, ioHelper)
{ }
protected override PartialViewType ViewType => PartialViewType.PartialViewMacro;
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewRepository.cs
index fc6f60eb1d..d327cdd78c 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/PartialViewRepository.cs
@@ -10,13 +10,19 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class PartialViewRepository : FileRepository, IPartialViewRepository
{
- public PartialViewRepository(IFileSystems fileSystems)
- : base(fileSystems.PartialViewsFileSystem)
- { }
+ private readonly IIOHelper _ioHelper;
- protected PartialViewRepository(IFileSystem fileSystem)
+ public PartialViewRepository(IFileSystems fileSystems, IIOHelper ioHelper)
+ : base(fileSystems.PartialViewsFileSystem)
+ {
+ _ioHelper = ioHelper;
+ }
+
+ protected PartialViewRepository(IFileSystem fileSystem, IIOHelper ioHelper)
: base(fileSystem)
- { }
+ {
+ _ioHelper = ioHelper;
+ }
protected virtual PartialViewType ViewType => PartialViewType.PartialView;
@@ -104,8 +110,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
// validate path & extension
var validDir = Constants.SystemDirectories.MvcViews;
- var isValidPath = Current.IOHelper.VerifyEditPath(fullPath, validDir);
- var isValidExtension = Current.IOHelper.VerifyFileExtension(fullPath, ValidExtensions);
+ var isValidPath = _ioHelper.VerifyEditPath(fullPath, validDir);
+ var isValidExtension = _ioHelper.VerifyFileExtension(fullPath, ValidExtensions);
return isValidPath && isValidExtension;
}
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs
index ac91134d2b..aa3d02bd30 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/TemplateRepository.cs
@@ -23,12 +23,14 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
///
internal class TemplateRepository : NPocoRepositoryBase, ITemplateRepository
{
+ private readonly IIOHelper _ioHelper;
private readonly IFileSystem _viewsFileSystem;
private readonly ViewHelper _viewHelper;
- public TemplateRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IFileSystems fileSystems)
+ public TemplateRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IFileSystems fileSystems, IIOHelper ioHelper)
: base(scopeAccessor, cache, logger)
{
+ _ioHelper = ioHelper;
_viewsFileSystem = fileSystems.MvcViewsFileSystem;
_viewHelper = new ViewHelper(_viewsFileSystem);
}
@@ -593,8 +595,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
validExts.Add("vbhtml");
// validate path and extension
- var validFile = Current.IOHelper.VerifyEditPath(path, validDirs);
- var validExtension = Current.IOHelper.VerifyFileExtension(path, validExts);
+ var validFile = _ioHelper.VerifyEditPath(path, validDirs);
+ var validExtension = _ioHelper.VerifyFileExtension(path, validExts);
return validFile && validExtension;
}
diff --git a/src/Umbraco.Core/Runtime/CoreInitialComponent.cs b/src/Umbraco.Core/Runtime/CoreInitialComponent.cs
index ac390a4e1e..40dd4575dc 100644
--- a/src/Umbraco.Core/Runtime/CoreInitialComponent.cs
+++ b/src/Umbraco.Core/Runtime/CoreInitialComponent.cs
@@ -5,15 +5,22 @@ namespace Umbraco.Core.Runtime
{
public class CoreInitialComponent : IComponent
{
+ private readonly IIOHelper _ioHelper;
+
+ public CoreInitialComponent(IIOHelper ioHelper)
+ {
+ _ioHelper = ioHelper;
+ }
+
public void Initialize()
{
// ensure we have some essential directories
// every other component can then initialize safely
- Current.IOHelper.EnsurePathExists(Constants.SystemDirectories.Data);
- Current.IOHelper.EnsurePathExists(Current.Configs.Global().UmbracoMediaPath);
- Current.IOHelper.EnsurePathExists(Constants.SystemDirectories.MvcViews);
- Current.IOHelper.EnsurePathExists(Constants.SystemDirectories.PartialViews);
- Current.IOHelper.EnsurePathExists(Constants.SystemDirectories.MacroPartials);
+ _ioHelper.EnsurePathExists(Constants.SystemDirectories.Data);
+ _ioHelper.EnsurePathExists(Current.Configs.Global().UmbracoMediaPath);
+ _ioHelper.EnsurePathExists(Constants.SystemDirectories.MvcViews);
+ _ioHelper.EnsurePathExists(Constants.SystemDirectories.PartialViews);
+ _ioHelper.EnsurePathExists(Constants.SystemDirectories.MacroPartials);
}
public void Terminate()
diff --git a/src/Umbraco.Core/Runtime/CoreInitialComposer.cs b/src/Umbraco.Core/Runtime/CoreInitialComposer.cs
index 61a9f472fe..2ab0de14ce 100644
--- a/src/Umbraco.Core/Runtime/CoreInitialComposer.cs
+++ b/src/Umbraco.Core/Runtime/CoreInitialComposer.cs
@@ -4,6 +4,7 @@ using Umbraco.Core.Composing;
using Umbraco.Core.Composing.CompositionExtensions;
using Umbraco.Core.Configuration;
using Umbraco.Core.Configuration.UmbracoSettings;
+using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Manifest;
using Umbraco.Core.Migrations;
@@ -102,7 +103,8 @@ namespace Umbraco.Core.Runtime
factory.GetInstance(),
factory.GetInstance(),
factory.GetInstance(),
- true, new DatabaseServerMessengerOptions()));
+ true, new DatabaseServerMessengerOptions(),
+ factory.GetInstance()));
composition.WithCollectionBuilder()
.Add(() => composition.TypeLoader.GetCacheRefreshers());
diff --git a/src/Umbraco.Core/Runtime/CoreRuntime.cs b/src/Umbraco.Core/Runtime/CoreRuntime.cs
index 6e99cffc60..98d245c04e 100644
--- a/src/Umbraco.Core/Runtime/CoreRuntime.cs
+++ b/src/Umbraco.Core/Runtime/CoreRuntime.cs
@@ -246,7 +246,7 @@ namespace Umbraco.Core.Runtime
{
var path = GetApplicationRootPath();
if (string.IsNullOrWhiteSpace(path) == false)
- Current.IOHelper.SetRootDirectory(path);
+ IOHelper.SetRootDirectory(path);
}
private bool AcquireMainDom(MainDom mainDom)
diff --git a/src/Umbraco.Core/RuntimeState.cs b/src/Umbraco.Core/RuntimeState.cs
index e0ce17f769..42a48579df 100644
--- a/src/Umbraco.Core/RuntimeState.cs
+++ b/src/Umbraco.Core/RuntimeState.cs
@@ -249,7 +249,7 @@ namespace Umbraco.Core
protected virtual bool EnsureUmbracoUpgradeState(IUmbracoDatabaseFactory databaseFactory, ILogger logger)
{
- var upgrader = new Upgrader(new UmbracoPlan());
+ var upgrader = new Upgrader(new UmbracoPlan(_umbracoVersion));
var stateValueKey = upgrader.StateValueKey;
// no scope, no service - just directly accessing the database
diff --git a/src/Umbraco.Core/Services/Implement/FileService.cs b/src/Umbraco.Core/Services/Implement/FileService.cs
index 1d2694b18a..bf6fd6bb74 100644
--- a/src/Umbraco.Core/Services/Implement/FileService.cs
+++ b/src/Umbraco.Core/Services/Implement/FileService.cs
@@ -19,6 +19,7 @@ namespace Umbraco.Core.Services.Implement
///
public class FileService : ScopeRepositoryService, IFileService
{
+ private readonly IIOHelper _ioHelper;
private readonly IStylesheetRepository _stylesheetRepository;
private readonly IScriptRepository _scriptRepository;
private readonly ITemplateRepository _templateRepository;
@@ -29,12 +30,13 @@ namespace Umbraco.Core.Services.Implement
private const string PartialViewHeader = "@inherits Umbraco.Web.Mvc.UmbracoViewPage";
private const string PartialViewMacroHeader = "@inherits Umbraco.Web.Macros.PartialViewMacroPage";
- public FileService(IScopeProvider uowProvider, ILogger logger, IEventMessagesFactory eventMessagesFactory,
+ public FileService(IScopeProvider uowProvider, IIOHelper ioHelper, ILogger logger, IEventMessagesFactory eventMessagesFactory,
IStylesheetRepository stylesheetRepository, IScriptRepository scriptRepository, ITemplateRepository templateRepository,
IPartialViewRepository partialViewRepository, IPartialViewMacroRepository partialViewMacroRepository,
IAuditRepository auditRepository)
: base(uowProvider, logger, eventMessagesFactory)
{
+ _ioHelper = ioHelper;
_stylesheetRepository = stylesheetRepository;
_scriptRepository = scriptRepository;
_templateRepository = templateRepository;
@@ -664,7 +666,7 @@ namespace Umbraco.Core.Services.Implement
public IEnumerable GetPartialViewSnippetNames(params string[] filterNames)
{
- var snippetPath = Current.IOHelper.MapPath($"{Current.Configs.Global().UmbracoPath}/PartialViewMacros/Templates/");
+ var snippetPath = _ioHelper.MapPath($"{Current.Configs.Global().UmbracoPath}/PartialViewMacros/Templates/");
var files = Directory.GetFiles(snippetPath, "*.cshtml")
.Select(Path.GetFileNameWithoutExtension)
.Except(filterNames, StringComparer.InvariantCultureIgnoreCase)
@@ -898,7 +900,7 @@ namespace Umbraco.Core.Services.Implement
fileName += ".cshtml";
}
- var snippetPath = Current.IOHelper.MapPath($"{Current.Configs.Global().UmbracoPath}/PartialViewMacros/Templates/{fileName}");
+ var snippetPath = _ioHelper.MapPath($"{Current.Configs.Global().UmbracoPath}/PartialViewMacros/Templates/{fileName}");
return System.IO.File.Exists(snippetPath)
? Attempt.Succeed(snippetPath)
: Attempt.Fail();
diff --git a/src/Umbraco.Core/Services/Implement/NotificationService.cs b/src/Umbraco.Core/Services/Implement/NotificationService.cs
index a57b3a6d29..c89cb27623 100644
--- a/src/Umbraco.Core/Services/Implement/NotificationService.cs
+++ b/src/Umbraco.Core/Services/Implement/NotificationService.cs
@@ -30,9 +30,10 @@ namespace Umbraco.Core.Services.Implement
private readonly IGlobalSettings _globalSettings;
private readonly IContentSection _contentSection;
private readonly ILogger _logger;
+ private readonly IIOHelper _ioHelper;
public NotificationService(IScopeProvider provider, IUserService userService, IContentService contentService, ILocalizationService localizationService,
- ILogger logger, INotificationsRepository notificationsRepository, IGlobalSettings globalSettings, IContentSection contentSection)
+ ILogger logger, IIOHelper ioHelper, INotificationsRepository notificationsRepository, IGlobalSettings globalSettings, IContentSection contentSection)
{
_notificationsRepository = notificationsRepository;
_globalSettings = globalSettings;
@@ -42,6 +43,7 @@ namespace Umbraco.Core.Services.Implement
_contentService = contentService ?? throw new ArgumentNullException(nameof(contentService));
_localizationService = localizationService;
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
+ _ioHelper = ioHelper;
}
///
@@ -384,7 +386,7 @@ namespace Umbraco.Core.Services.Implement
var protocol = _globalSettings.UseHttps ? "https" : "http";
var subjectVars = new NotificationEmailSubjectParams(
- string.Concat(siteUri.Authority, Current.IOHelper.ResolveUrl(Current.Configs.Global().UmbracoPath)),
+ string.Concat(siteUri.Authority, _ioHelper.ResolveUrl(Current.Configs.Global().UmbracoPath)),
actionName,
content.Name);
@@ -400,7 +402,7 @@ namespace Umbraco.Core.Services.Implement
string.Concat(content.Id, ".aspx"),
protocol),
performingUser.Name,
- string.Concat(siteUri.Authority, Current.IOHelper.ResolveUrl(Current.Configs.Global().UmbracoPath)),
+ string.Concat(siteUri.Authority, _ioHelper.ResolveUrl(Current.Configs.Global().UmbracoPath)),
summary.ToString());
// create the mail message
diff --git a/src/Umbraco.Core/Services/Implement/PackagingService.cs b/src/Umbraco.Core/Services/Implement/PackagingService.cs
index 6744b3234a..7fd9be6dee 100644
--- a/src/Umbraco.Core/Services/Implement/PackagingService.cs
+++ b/src/Umbraco.Core/Services/Implement/PackagingService.cs
@@ -23,6 +23,7 @@ namespace Umbraco.Core.Services.Implement
{
private readonly IPackageInstallation _packageInstallation;
+ private readonly IIOHelper _ioHelper;
private readonly IAuditService _auditService;
private readonly ICreatedPackagesRepository _createdPackages;
private readonly IInstalledPackagesRepository _installedPackages;
@@ -32,12 +33,14 @@ namespace Umbraco.Core.Services.Implement
IAuditService auditService,
ICreatedPackagesRepository createdPackages,
IInstalledPackagesRepository installedPackages,
- IPackageInstallation packageInstallation)
+ IPackageInstallation packageInstallation,
+ IIOHelper ioHelper)
{
_auditService = auditService;
_createdPackages = createdPackages;
_installedPackages = installedPackages;
_packageInstallation = packageInstallation;
+ _ioHelper = ioHelper;
}
#region Package Files
@@ -64,7 +67,7 @@ namespace Umbraco.Core.Services.Implement
//successful
if (bytes.Length > 0)
{
- var packagePath = Current.IOHelper.MapPath(Constants.SystemDirectories.Packages);
+ var packagePath = _ioHelper.MapPath(Constants.SystemDirectories.Packages);
// Check for package directory
if (Directory.Exists(packagePath) == false)
diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs
index 027b5fc928..854a96a51f 100644
--- a/src/Umbraco.Core/StringExtensions.cs
+++ b/src/Umbraco.Core/StringExtensions.cs
@@ -112,7 +112,9 @@ namespace Umbraco.Core
if (isValid)
{
- var resolvedUrlResult = Current.IOHelper.TryResolveUrl(input);
+ var ioHelper = Current.Factory.GetInstance();
+
+ var resolvedUrlResult = ioHelper.TryResolveUrl(input);
//if the resolution was success, return it, otherwise just return the path, we've detected
// it's a path but maybe it's relative and resolution has failed, etc... in which case we're just
// returning what was given to us.
diff --git a/src/Umbraco.Core/Sync/DatabaseServerMessenger.cs b/src/Umbraco.Core/Sync/DatabaseServerMessenger.cs
index 118080feb6..f616007f73 100644
--- a/src/Umbraco.Core/Sync/DatabaseServerMessenger.cs
+++ b/src/Umbraco.Core/Sync/DatabaseServerMessenger.cs
@@ -34,6 +34,7 @@ namespace Umbraco.Core.Sync
private readonly ManualResetEvent _syncIdle;
private readonly object _locko = new object();
private readonly IProfilingLogger _profilingLogger;
+ private readonly IIOHelper _ioHelper;
private readonly ISqlContext _sqlContext;
private readonly Lazy _distCacheFilePath;
private int _lastId = -1;
@@ -47,13 +48,14 @@ namespace Umbraco.Core.Sync
public DatabaseServerMessenger(
IRuntimeState runtime, IScopeProvider scopeProvider, ISqlContext sqlContext, IProfilingLogger proflog, IGlobalSettings globalSettings,
- bool distributedEnabled, DatabaseServerMessengerOptions options)
+ bool distributedEnabled, DatabaseServerMessengerOptions options, IIOHelper ioHelper)
: base(distributedEnabled)
{
ScopeProvider = scopeProvider ?? throw new ArgumentNullException(nameof(scopeProvider));
_sqlContext = sqlContext;
_runtime = runtime;
_profilingLogger = proflog ?? throw new ArgumentNullException(nameof(proflog));
+ _ioHelper = ioHelper;
Logger = proflog;
Options = options ?? throw new ArgumentNullException(nameof(options));
_lastPruned = _lastSync = DateTime.UtcNow;
@@ -534,7 +536,7 @@ namespace Umbraco.Core.Sync
{
var fileName = HttpRuntime.AppDomainAppId.ReplaceNonAlphanumericChars(string.Empty) + "-lastsynced.txt";
- var distCacheFilePath = Path.Combine(globalSettings.LocalTempPath(Current.IOHelper), "DistCache", fileName);
+ var distCacheFilePath = Path.Combine(globalSettings.LocalTempPath(_ioHelper), "DistCache", fileName);
//ensure the folder exists
var folder = Path.GetDirectoryName(distCacheFilePath);
diff --git a/src/Umbraco.Core/TypeExtensions.cs b/src/Umbraco.Core/TypeExtensions.cs
index f867b1cd14..9d4d196bb5 100644
--- a/src/Umbraco.Core/TypeExtensions.cs
+++ b/src/Umbraco.Core/TypeExtensions.cs
@@ -97,19 +97,7 @@ namespace Umbraco.Core
&& (type.Attributes & TypeAttributes.NotPublic) == TypeAttributes.NotPublic;
}
- public static T GetCustomAttribute(this Type type, bool inherit)
- where T : Attribute
- {
- return type.GetCustomAttributes(inherit).SingleOrDefault();
- }
-
- public static IEnumerable GetCustomAttributes(this Type type, bool inherited)
- where T : Attribute
- {
- if (type == null) return Enumerable.Empty();
- return type.GetCustomAttributes(typeof (T), inherited).OfType();
- }
-
+
///
/// Determines whether the specified type is enumerable.
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 3481c71d98..ed18c23ef6 100755
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -151,6 +151,7 @@
+
@@ -199,6 +200,7 @@
+
@@ -218,7 +220,6 @@
-
@@ -230,15 +231,14 @@
-
+
-
+
-
@@ -247,8 +247,6 @@
-
-
@@ -307,11 +305,8 @@
-
-
-
@@ -369,27 +364,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -410,18 +384,14 @@
-
-
-
-
@@ -850,17 +820,13 @@
-
-
-
-
@@ -868,13 +834,7 @@
-
-
-
-
-
-
@@ -907,9 +867,6 @@
-
-
-
Component
diff --git a/src/Umbraco.Examine/LuceneIndexCreator.cs b/src/Umbraco.Examine/LuceneIndexCreator.cs
index d6bf8c262c..ccc0248868 100644
--- a/src/Umbraco.Examine/LuceneIndexCreator.cs
+++ b/src/Umbraco.Examine/LuceneIndexCreator.cs
@@ -18,10 +18,12 @@ namespace Umbraco.Examine
public abstract class LuceneIndexCreator : IIndexCreator
{
private readonly ITypeFinder _typeFinder;
+ private readonly IIOHelper _ioHelper;
- protected LuceneIndexCreator(ITypeFinder typeFinder)
+ protected LuceneIndexCreator(ITypeFinder typeFinder, IIOHelper ioHelper)
{
_typeFinder = typeFinder;
+ _ioHelper = ioHelper;
}
public abstract IEnumerable Create();
@@ -36,7 +38,7 @@ namespace Umbraco.Examine
public virtual Lucene.Net.Store.Directory CreateFileSystemLuceneDirectory(string folderName)
{
- var dirInfo = new DirectoryInfo(Path.Combine(Current.IOHelper.MapPath(Constants.SystemDirectories.TempData), "ExamineIndexes", folderName));
+ var dirInfo = new DirectoryInfo(Path.Combine(_ioHelper.MapPath(Constants.SystemDirectories.TempData), "ExamineIndexes", folderName));
if (!dirInfo.Exists)
System.IO.Directory.CreateDirectory(dirInfo.FullName);
diff --git a/src/Umbraco.Examine/LuceneIndexDiagnostics.cs b/src/Umbraco.Examine/LuceneIndexDiagnostics.cs
index 3b23b57709..81ec7e3dcb 100644
--- a/src/Umbraco.Examine/LuceneIndexDiagnostics.cs
+++ b/src/Umbraco.Examine/LuceneIndexDiagnostics.cs
@@ -13,11 +13,11 @@ namespace Umbraco.Examine
{
private IIOHelper _ioHelper;
- public LuceneIndexDiagnostics(LuceneIndex index, ILogger logger)
+ public LuceneIndexDiagnostics(LuceneIndex index, ILogger logger, IIOHelper ioHelper)
{
Index = index;
Logger = logger;
- _ioHelper = Current.IOHelper;
+ _ioHelper = ioHelper;
}
public LuceneIndex Index { get; }
diff --git a/src/Umbraco.Examine/Umbraco.Examine.csproj b/src/Umbraco.Examine/Umbraco.Examine.csproj
index 3b77b20d42..ca2a9cec22 100644
--- a/src/Umbraco.Examine/Umbraco.Examine.csproj
+++ b/src/Umbraco.Examine/Umbraco.Examine.csproj
@@ -116,4 +116,4 @@
-
+
\ No newline at end of file
diff --git a/src/Umbraco.Examine/UmbracoContentIndex.cs b/src/Umbraco.Examine/UmbracoContentIndex.cs
index e266ca789d..33fd2d0ee7 100644
--- a/src/Umbraco.Examine/UmbracoContentIndex.cs
+++ b/src/Umbraco.Examine/UmbracoContentIndex.cs
@@ -11,6 +11,7 @@ using Lucene.Net.Store;
using Umbraco.Core.Composing;
using Umbraco.Core.Logging;
using Examine.LuceneEngine;
+using Umbraco.Core.IO;
namespace Umbraco.Examine
{
@@ -32,6 +33,8 @@ namespace Umbraco.Examine
///
///
///
+ ///
+ ///
///
///
///
@@ -41,10 +44,12 @@ namespace Umbraco.Examine
FieldDefinitionCollection fieldDefinitions,
Analyzer defaultAnalyzer,
IProfilingLogger profilingLogger,
+ IIOHelper ioHelper,
+ IRuntimeState runtimeState,
ILocalizationService languageService,
IContentValueSetValidator validator,
IReadOnlyDictionary indexValueTypes = null)
- : base(name, luceneDirectory, fieldDefinitions, defaultAnalyzer, profilingLogger, validator, indexValueTypes)
+ : base(name, luceneDirectory, fieldDefinitions, defaultAnalyzer, profilingLogger, ioHelper, runtimeState, validator, indexValueTypes)
{
if (validator == null) throw new ArgumentNullException(nameof(validator));
LanguageService = languageService ?? throw new ArgumentNullException(nameof(languageService));
diff --git a/src/Umbraco.Examine/UmbracoExamineIndex.cs b/src/Umbraco.Examine/UmbracoExamineIndex.cs
index e1dd77b994..f7dfcf6375 100644
--- a/src/Umbraco.Examine/UmbracoExamineIndex.cs
+++ b/src/Umbraco.Examine/UmbracoExamineIndex.cs
@@ -9,7 +9,7 @@ using Umbraco.Core;
using Examine;
using Examine.LuceneEngine;
using Lucene.Net.Store;
-using Umbraco.Core.Composing;
+using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Directory = Lucene.Net.Store.Directory;
@@ -21,6 +21,7 @@ namespace Umbraco.Examine
///
public abstract class UmbracoExamineIndex : LuceneIndex, IUmbracoIndex, IIndexDiagnostics
{
+ private readonly IRuntimeState _runtimeState;
// note
// wrapping all operations that end up calling base.SafelyProcessQueueItems in a safe call
// context because they will fork a thread/task/whatever which should *not* capture our
@@ -49,6 +50,8 @@ namespace Umbraco.Examine
///
///
///
+ ///
+ ///
///
///
protected UmbracoExamineIndex(
@@ -57,17 +60,20 @@ namespace Umbraco.Examine
FieldDefinitionCollection fieldDefinitions,
Analyzer defaultAnalyzer,
IProfilingLogger profilingLogger,
+ IIOHelper ioHelper,
+ IRuntimeState runtimeState,
IValueSetValidator validator = null,
IReadOnlyDictionary indexValueTypes = null)
: base(name, luceneDirectory, fieldDefinitions, defaultAnalyzer, validator, indexValueTypes)
{
+ _runtimeState = runtimeState;
ProfilingLogger = profilingLogger ?? throw new ArgumentNullException(nameof(profilingLogger));
//try to set the value of `LuceneIndexFolder` for diagnostic reasons
if (luceneDirectory is FSDirectory fsDir)
LuceneIndexFolder = fsDir.Directory;
- _diagnostics = new UmbracoExamineIndexDiagnostics(this, ProfilingLogger);
+ _diagnostics = new UmbracoExamineIndexDiagnostics(this, ProfilingLogger, ioHelper);
}
private readonly bool _configBased = false;
@@ -114,7 +120,7 @@ namespace Umbraco.Examine
{
// only affects indexers that are config file based, if an index was created via code then
// this has no effect, it is assumed the index would not be created if it could not be initialized
- return _configBased == false || Current.RuntimeState.Level == RuntimeLevel.Run;
+ return _configBased == false || _runtimeState.Level == RuntimeLevel.Run;
}
///
@@ -185,7 +191,7 @@ namespace Umbraco.Examine
e.ValueSet.Values[IconFieldName] = icon;
}
}
-
+
#region IIndexDiagnostics
private readonly UmbracoExamineIndexDiagnostics _diagnostics;
diff --git a/src/Umbraco.Examine/UmbracoExamineIndexDiagnostics.cs b/src/Umbraco.Examine/UmbracoExamineIndexDiagnostics.cs
index 4a926deebe..2ac8fde960 100644
--- a/src/Umbraco.Examine/UmbracoExamineIndexDiagnostics.cs
+++ b/src/Umbraco.Examine/UmbracoExamineIndexDiagnostics.cs
@@ -11,8 +11,8 @@ namespace Umbraco.Examine
{
private readonly UmbracoExamineIndex _index;
- public UmbracoExamineIndexDiagnostics(UmbracoExamineIndex index, ILogger logger)
- : base(index, logger)
+ public UmbracoExamineIndexDiagnostics(UmbracoExamineIndex index, ILogger logger, IIOHelper ioHelper)
+ : base(index, logger, ioHelper)
{
_index = index;
}
diff --git a/src/Umbraco.Examine/UmbracoIndexConfig.cs b/src/Umbraco.Examine/UmbracoIndexConfig.cs
index 7ad9c638d3..a840c730ea 100644
--- a/src/Umbraco.Examine/UmbracoIndexConfig.cs
+++ b/src/Umbraco.Examine/UmbracoIndexConfig.cs
@@ -1,6 +1,5 @@
using Examine;
using Umbraco.Core.Services;
-using Umbraco.Core.Services.Implement;
namespace Umbraco.Examine
{
diff --git a/src/Umbraco.Examine/UmbracoMemberIndex.cs b/src/Umbraco.Examine/UmbracoMemberIndex.cs
index 445707ab0c..494c661062 100644
--- a/src/Umbraco.Examine/UmbracoMemberIndex.cs
+++ b/src/Umbraco.Examine/UmbracoMemberIndex.cs
@@ -2,6 +2,8 @@
using Examine;
using Examine.LuceneEngine;
using Lucene.Net.Analysis;
+using Umbraco.Core;
+using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Directory = Lucene.Net.Store.Directory;
@@ -20,6 +22,7 @@ namespace Umbraco.Examine
///
///
///
+ ///
///
///
public UmbracoMemberIndex(
@@ -28,8 +31,10 @@ namespace Umbraco.Examine
Directory luceneDirectory,
Analyzer analyzer,
IProfilingLogger profilingLogger,
+ IIOHelper ioHelper,
+ IRuntimeState runtimeState,
IValueSetValidator validator = null) :
- base(name, luceneDirectory, fieldDefinitions, analyzer, profilingLogger, validator)
+ base(name, luceneDirectory, fieldDefinitions, analyzer, profilingLogger, ioHelper, runtimeState, validator)
{
}
diff --git a/src/Umbraco.Tests.Benchmarks/BulkInsertBenchmarks.cs b/src/Umbraco.Tests.Benchmarks/BulkInsertBenchmarks.cs
index dc260c4a3b..aab1528987 100644
--- a/src/Umbraco.Tests.Benchmarks/BulkInsertBenchmarks.cs
+++ b/src/Umbraco.Tests.Benchmarks/BulkInsertBenchmarks.cs
@@ -5,6 +5,7 @@ using System.IO;
using System.Linq;
using BenchmarkDotNet.Attributes;
using Umbraco.Core;
+using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Install;
using Umbraco.Core.Persistence;
@@ -51,8 +52,8 @@ namespace Umbraco.Tests.Benchmarks
{
var logger = new DebugDiagnosticsLogger(new MessageTemplates());
var path = TestHelper.CurrentAssemblyDirectory;
-
- SetupSqlCe(path, logger);
+ var umbracoVersion = TestHelper.GetUmbracoVersion();
+ SetupSqlCe(path, logger, umbracoVersion);
SetupSqlServer(logger);
@@ -83,7 +84,7 @@ namespace Umbraco.Tests.Benchmarks
)");
}
- private void SetupSqlCe(string path, ILogger logger)
+ private void SetupSqlCe(string path, ILogger logger, IUmbracoVersion umbracoVersion)
{
var dbName = string.Concat("Umb", Guid.NewGuid(), ".sdf");
AppDomain.CurrentDomain.SetData("DataDirectory", path);
@@ -102,7 +103,7 @@ namespace Umbraco.Tests.Benchmarks
//use the db to create the initial schema so we can reuse in each bench
using (_dbSqlCe = GetSqlCeDatabase(sqlCeConnectionString, logger))
{
- var creation = new DatabaseSchemaCreator(_dbSqlCe, logger);
+ var creation = new DatabaseSchemaCreator(_dbSqlCe, logger, umbracoVersion);
creation.InitializeDatabaseSchema();
}
_initDbBytes = File.ReadAllBytes(_dbFile);
diff --git a/src/Umbraco.Tests/Configurations/GlobalSettingsTests.cs b/src/Umbraco.Tests/Configurations/GlobalSettingsTests.cs
index 65027edc73..fba922b2c4 100644
--- a/src/Umbraco.Tests/Configurations/GlobalSettingsTests.cs
+++ b/src/Umbraco.Tests/Configurations/GlobalSettingsTests.cs
@@ -1,9 +1,7 @@
using Moq;
using NUnit.Framework;
-using Umbraco.Core;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
-using Umbraco.Core.IO;
using Umbraco.Tests.TestHelpers;
namespace Umbraco.Tests.Configurations
@@ -26,13 +24,6 @@ namespace Umbraco.Tests.Configurations
Current.IOHelper.Root = _root;
}
- [Ignore("fixme - ignored test")]
- [Test]
- public void Is_Version_From_Assembly_Correct()
- {
- Assert.That(Current.UmbracoVersion.SemanticVersion, Is.EqualTo("6.0.0"));
- }
-
[TestCase("~/umbraco", "/", "umbraco")]
[TestCase("~/umbraco", "/MyVirtualDir", "umbraco")]
[TestCase("~/customPath", "/MyVirtualDir/", "custompath")]
diff --git a/src/Umbraco.Tests/IO/FileSystemsTests.cs b/src/Umbraco.Tests/IO/FileSystemsTests.cs
index 48ed9adbb1..8030927233 100644
--- a/src/Umbraco.Tests/IO/FileSystemsTests.cs
+++ b/src/Umbraco.Tests/IO/FileSystemsTests.cs
@@ -33,6 +33,7 @@ namespace Umbraco.Tests.IO
composition.Register(_ => Mock.Of());
composition.Register(_ => Mock.Of());
composition.Register(_ => Mock.Of());
+ composition.Register(_ => IOHelper.Default);
composition.RegisterUnique();
composition.RegisterUnique(IOHelper.Default);
@@ -106,7 +107,8 @@ namespace Umbraco.Tests.IO
fs.AddFile(virtPath, ms);
// ~/media/1234/file.txt exists
- var physPath = Current.IOHelper.MapPath(Path.Combine("media", virtPath));
+ var ioHelper = _factory.GetInstance();
+ var physPath = ioHelper.MapPath(Path.Combine("media", virtPath));
Assert.IsTrue(File.Exists(physPath));
// ~/media/1234/file.txt is gone
diff --git a/src/Umbraco.Tests/IO/IoHelperTests.cs b/src/Umbraco.Tests/IO/IoHelperTests.cs
index 6c45f416b9..55bd34c14a 100644
--- a/src/Umbraco.Tests/IO/IoHelperTests.cs
+++ b/src/Umbraco.Tests/IO/IoHelperTests.cs
@@ -18,13 +18,15 @@ namespace Umbraco.Tests.IO
[TestCase("../Scripts", "/Scripts", typeof(ArgumentException))]
public void IOHelper_ResolveUrl(string input, string expected, Type expectedExceptionType)
{
+ var ioHelper = new IOHelper();
+
if (expectedExceptionType != null)
{
- Assert.Throws(expectedExceptionType, () => Current.IOHelper.ResolveUrl(input));
+ Assert.Throws(expectedExceptionType, () =>ioHelper.ResolveUrl(input));
}
else
{
- var result = Current.IOHelper.ResolveUrl(input);
+ var result = ioHelper.ResolveUrl(input);
Assert.AreEqual(expected, result);
}
}
diff --git a/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs b/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs
index 5e826af5cc..d5429b2da0 100644
--- a/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs
+++ b/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs
@@ -3,8 +3,8 @@ using System.IO;
using System.Text;
using System.Threading;
using NUnit.Framework;
-using Umbraco.Core.Composing;
using Umbraco.Core.IO;
+using Umbraco.Web.Composing;
namespace Umbraco.Tests.IO
@@ -14,7 +14,7 @@ namespace Umbraco.Tests.IO
public class PhysicalFileSystemTests : AbstractFileSystemTests
{
public PhysicalFileSystemTests()
- : base(new PhysicalFileSystem(Current.IOHelper, Current.Logger, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "FileSysTests"),
+ : base(new PhysicalFileSystem(IOHelper.Default, Current.Logger, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "FileSysTests"),
"/Media/"))
{ }
diff --git a/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs b/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs
index 8e204d1bfe..623628ed6f 100644
--- a/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs
+++ b/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs
@@ -26,7 +26,7 @@ namespace Umbraco.Tests.IO
public void SetUp()
{
SafeCallContext.Clear();
- ClearFiles();
+ ClearFiles(IOHelper.Default);
FileSystems.ResetShadowId();
}
@@ -34,14 +34,14 @@ namespace Umbraco.Tests.IO
public void TearDown()
{
SafeCallContext.Clear();
- ClearFiles();
+ ClearFiles(IOHelper.Default);
FileSystems.ResetShadowId();
}
- private static void ClearFiles()
+ private static void ClearFiles(IIOHelper ioHelper)
{
- TestHelper.DeleteDirectory(Current.IOHelper.MapPath("FileSysTests"));
- TestHelper.DeleteDirectory(Current.IOHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs"));
+ TestHelper.DeleteDirectory(ioHelper.MapPath("FileSysTests"));
+ TestHelper.DeleteDirectory(ioHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs"));
}
private static string NormPath(string path)
@@ -52,13 +52,15 @@ namespace Umbraco.Tests.IO
[Test]
public void ShadowDeleteDirectory()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
Directory.CreateDirectory(path + "/ShadowTests/d1");
@@ -86,13 +88,15 @@ namespace Umbraco.Tests.IO
[Test]
public void ShadowDeleteDirectoryInDir()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
Directory.CreateDirectory(path + "/ShadowTests/sub");
@@ -135,13 +139,15 @@ namespace Umbraco.Tests.IO
[Test]
public void ShadowDeleteFile()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
File.WriteAllText(path + "/ShadowTests/f1.txt", "foo");
@@ -174,13 +180,16 @@ namespace Umbraco.Tests.IO
[Test]
public void ShadowDeleteFileInDir()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
+
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
Directory.CreateDirectory(path + "/ShadowTests/sub");
@@ -229,13 +238,15 @@ namespace Umbraco.Tests.IO
[Test]
public void ShadowCantCreateFile()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
Assert.Throws(() =>
@@ -248,13 +259,15 @@ namespace Umbraco.Tests.IO
[Test]
public void ShadowCreateFile()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
File.WriteAllText(path + "/ShadowTests/f2.txt", "foo");
@@ -287,13 +300,15 @@ namespace Umbraco.Tests.IO
[Test]
public void ShadowCreateFileInDir()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("foo")))
@@ -327,13 +342,15 @@ namespace Umbraco.Tests.IO
[Test]
public void ShadowAbort()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("foo")))
@@ -349,13 +366,15 @@ namespace Umbraco.Tests.IO
[Test]
public void ShadowComplete()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
Directory.CreateDirectory(path + "/ShadowTests/sub/sub");
@@ -386,18 +405,19 @@ namespace Umbraco.Tests.IO
public void ShadowScopeComplete()
{
var logger = Mock.Of();
+ var ioHelper = IOHelper.Default;
- var path = Current.IOHelper.MapPath("FileSysTests");
- var shadowfs = Current.IOHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs");
+ var path = ioHelper.MapPath("FileSysTests");
+ var shadowfs = ioHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs");
Directory.CreateDirectory(path);
Directory.CreateDirectory(shadowfs);
var scopedFileSystems = false;
- var phy = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path, "ignore");
+ var phy = new PhysicalFileSystem(ioHelper, Current.Logger, path, "ignore");
var container = Mock.Of();
- var fileSystems = new FileSystems(container, logger, IOHelper.Default, SettingsForTests.GenerateMockGlobalSettings()) { IsScoped = () => scopedFileSystems };
+ var fileSystems = new FileSystems(container, logger, ioHelper, SettingsForTests.GenerateMockGlobalSettings()) { IsScoped = () => scopedFileSystems };
var fs = fileSystems.GetFileSystem(phy);
var sw = (ShadowWrapper) fs.InnerFileSystem;
@@ -408,7 +428,7 @@ namespace Umbraco.Tests.IO
string id;
// explicit shadow without scope does not work
- sw.Shadow(id = ShadowWrapper.CreateShadowId(Current.IOHelper));
+ sw.Shadow(id = ShadowWrapper.CreateShadowId(ioHelper));
Assert.IsTrue(Directory.Exists(shadowfs + "/" + id));
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("foo")))
sw.AddFile("sub/f2.txt", ms);
@@ -419,7 +439,7 @@ namespace Umbraco.Tests.IO
// shadow with scope but no complete does not complete
scopedFileSystems = true; // pretend we have a scope
- var scope = new ShadowFileSystems(fileSystems, id = ShadowWrapper.CreateShadowId(Current.IOHelper));
+ var scope = new ShadowFileSystems(fileSystems, id = ShadowWrapper.CreateShadowId(ioHelper));
Assert.IsTrue(Directory.Exists(shadowfs + "/" + id));
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("foo")))
sw.AddFile("sub/f3.txt", ms);
@@ -441,7 +461,7 @@ namespace Umbraco.Tests.IO
// shadow with scope and complete does complete
scopedFileSystems = true; // pretend we have a scope
- scope = new ShadowFileSystems(fileSystems, id = ShadowWrapper.CreateShadowId(Current.IOHelper));
+ scope = new ShadowFileSystems(fileSystems, id = ShadowWrapper.CreateShadowId(ioHelper));
Assert.IsTrue(Directory.Exists(shadowfs + "/" + id));
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("foo")))
sw.AddFile("sub/f4.txt", ms);
@@ -457,7 +477,7 @@ namespace Umbraco.Tests.IO
// test scope for "another thread"
scopedFileSystems = true; // pretend we have a scope
- scope = new ShadowFileSystems(fileSystems, id = ShadowWrapper.CreateShadowId(Current.IOHelper));
+ scope = new ShadowFileSystems(fileSystems, id = ShadowWrapper.CreateShadowId(ioHelper));
Assert.IsTrue(Directory.Exists(shadowfs + "/" + id));
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("foo")))
sw.AddFile("sub/f5.txt", ms);
@@ -481,17 +501,18 @@ namespace Umbraco.Tests.IO
public void ShadowScopeCompleteWithFileConflict()
{
var logger = Mock.Of();
+ var ioHelper = IOHelper.Default;
- var path = Current.IOHelper.MapPath("FileSysTests");
- var shadowfs = Current.IOHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs");
+ var path = ioHelper.MapPath("FileSysTests");
+ var shadowfs = ioHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs");
Directory.CreateDirectory(path);
var scopedFileSystems = false;
- var phy = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path, "ignore");
+ var phy = new PhysicalFileSystem(ioHelper, Current.Logger, path, "ignore");
var container = Mock.Of();
- var fileSystems = new FileSystems(container, logger, IOHelper.Default, SettingsForTests.GenerateMockGlobalSettings()) { IsScoped = () => scopedFileSystems };
+ var fileSystems = new FileSystems(container, logger, ioHelper, SettingsForTests.GenerateMockGlobalSettings()) { IsScoped = () => scopedFileSystems };
var fs = fileSystems.GetFileSystem( phy);
var sw = (ShadowWrapper) fs.InnerFileSystem;
@@ -502,7 +523,7 @@ namespace Umbraco.Tests.IO
string id;
scopedFileSystems = true; // pretend we have a scope
- var scope = new ShadowFileSystems(fileSystems, id = ShadowWrapper.CreateShadowId(Current.IOHelper));
+ var scope = new ShadowFileSystems(fileSystems, id = ShadowWrapper.CreateShadowId(ioHelper));
Assert.IsTrue(Directory.Exists(shadowfs + "/" + id));
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("foo")))
sw.AddFile("sub/f2.txt", ms);
@@ -534,17 +555,18 @@ namespace Umbraco.Tests.IO
public void ShadowScopeCompleteWithDirectoryConflict()
{
var logger = Mock.Of();
+ var ioHelper = IOHelper.Default;
- var path = Current.IOHelper.MapPath("FileSysTests");
- var shadowfs = Current.IOHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs");
+ var path = ioHelper.MapPath("FileSysTests");
+ var shadowfs = ioHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs");
Directory.CreateDirectory(path);
var scopedFileSystems = false;
- var phy = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path, "ignore");
+ var phy = new PhysicalFileSystem(ioHelper, Current.Logger, path, "ignore");
var container = Mock.Of();
- var fileSystems = new FileSystems(container, logger, IOHelper.Default, SettingsForTests.GenerateMockGlobalSettings()) { IsScoped = () => scopedFileSystems };
+ var fileSystems = new FileSystems(container, logger, ioHelper, SettingsForTests.GenerateMockGlobalSettings()) { IsScoped = () => scopedFileSystems };
var fs = fileSystems.GetFileSystem( phy);
var sw = (ShadowWrapper)fs.InnerFileSystem;
@@ -555,7 +577,7 @@ namespace Umbraco.Tests.IO
string id;
scopedFileSystems = true; // pretend we have a scope
- var scope = new ShadowFileSystems(fileSystems, id = ShadowWrapper.CreateShadowId(Current.IOHelper));
+ var scope = new ShadowFileSystems(fileSystems, id = ShadowWrapper.CreateShadowId(ioHelper));
Assert.IsTrue(Directory.Exists(shadowfs + "/" + id));
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("foo")))
sw.AddFile("sub/f2.txt", ms);
@@ -603,7 +625,9 @@ namespace Umbraco.Tests.IO
[Test]
public void GetFilesReturnsChildrenOnly()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
File.WriteAllText(path + "/f1.txt", "foo");
Directory.CreateDirectory(path + "/test");
@@ -625,7 +649,9 @@ namespace Umbraco.Tests.IO
[Test]
public void DeleteDirectoryAndFiles()
{
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
File.WriteAllText(path + "/f1.txt", "foo");
Directory.CreateDirectory(path + "/test");
@@ -646,13 +672,15 @@ namespace Umbraco.Tests.IO
public void ShadowGetFiles()
{
// Arrange
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
// Act
@@ -678,13 +706,15 @@ namespace Umbraco.Tests.IO
public void ShadowGetFilesUsingEmptyFilter()
{
// Arrange
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
// Act
@@ -713,13 +743,15 @@ namespace Umbraco.Tests.IO
public void ShadowGetFilesUsingNullFilter()
{
// Arrange
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
// Act
@@ -745,13 +777,15 @@ namespace Umbraco.Tests.IO
public void ShadowGetFilesUsingWildcardFilter()
{
// Arrange
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
// Act
@@ -780,13 +814,15 @@ namespace Umbraco.Tests.IO
public void ShadowGetFilesUsingSingleCharacterFilter()
{
// Arrange
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
// Act
@@ -827,13 +863,15 @@ namespace Umbraco.Tests.IO
public void ShadowGetFullPath()
{
// Arrange
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
// Act
@@ -861,13 +899,15 @@ namespace Umbraco.Tests.IO
public void ShadowGetRelativePath()
{
// Arrange
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "ignore");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "ignore");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "ignore");
var ss = new ShadowFileSystem(fs, sfs);
// Act
@@ -900,13 +940,15 @@ namespace Umbraco.Tests.IO
public void ShadowGetUrl()
{
// Arrange
- var path = Current.IOHelper.MapPath("FileSysTests");
+ var ioHelper = IOHelper.Default;
+
+ var path = ioHelper.MapPath("FileSysTests");
Directory.CreateDirectory(path);
Directory.CreateDirectory(path + "/ShadowTests");
Directory.CreateDirectory(path + "/ShadowSystem");
- var fs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowTests/", "rootUrl");
- var sfs = new PhysicalFileSystem(Current.IOHelper, Current.Logger, path + "/ShadowSystem/", "rootUrl");
+ var fs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowTests/", "rootUrl");
+ var sfs = new PhysicalFileSystem(ioHelper, Current.Logger, path + "/ShadowSystem/", "rootUrl");
var ss = new ShadowFileSystem(fs, sfs);
// Act
diff --git a/src/Umbraco.Tests/Logging/LogviewerTests.cs b/src/Umbraco.Tests/Logging/LogviewerTests.cs
index 96a68beccb..d6e1c7ffae 100644
--- a/src/Umbraco.Tests/Logging/LogviewerTests.cs
+++ b/src/Umbraco.Tests/Logging/LogviewerTests.cs
@@ -33,6 +33,7 @@ namespace Umbraco.Tests.Logging
{
//Create an example JSON log file to check results
//As a one time setup for all tets in this class/fixture
+ var ioHelper = new IOHelper();
var exampleLogfilePath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"Logging\", _logfileName);
_newLogfileDirPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"App_Data\Logs\");
@@ -43,15 +44,15 @@ namespace Umbraco.Tests.Logging
_newSearchfilePath = Path.Combine(_newSearchfileDirPath, _searchfileName);
//Create/ensure Directory exists
- Current.IOHelper.EnsurePathExists(_newLogfileDirPath);
- Current.IOHelper.EnsurePathExists(_newSearchfileDirPath);
+ ioHelper.EnsurePathExists(_newLogfileDirPath);
+ ioHelper.EnsurePathExists(_newSearchfileDirPath);
//Copy the sample files
File.Copy(exampleLogfilePath, _newLogfilePath, true);
File.Copy(exampleSearchfilePath, _newSearchfilePath, true);
var logger = Mock.Of();
- _logViewer = new JsonLogViewer(logger, logsPath: _newLogfileDirPath, searchPath: _newSearchfilePath);
+ _logViewer = new JsonLogViewer(logger, ioHelper, logsPath: _newLogfileDirPath, searchPath: _newSearchfilePath);
}
[OneTimeTearDown]
diff --git a/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs b/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs
index 01c93a40ec..82ccd21b80 100644
--- a/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs
+++ b/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs
@@ -42,7 +42,7 @@ namespace Umbraco.Tests.Migrations
upgrader.Execute(ScopeProvider, builder, Mock.Of(), logger);
- var helper = new DatabaseSchemaCreator(scope.Database, logger);
+ var helper = new DatabaseSchemaCreator(scope.Database, logger, UmbracoVersion);
var exists = helper.TableExists("umbracoUser");
Assert.IsTrue(exists);
diff --git a/src/Umbraco.Tests/Migrations/MigrationPlanTests.cs b/src/Umbraco.Tests/Migrations/MigrationPlanTests.cs
index ab065eb0a9..3241f78b62 100644
--- a/src/Umbraco.Tests/Migrations/MigrationPlanTests.cs
+++ b/src/Umbraco.Tests/Migrations/MigrationPlanTests.cs
@@ -12,6 +12,7 @@ using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.SqlSyntax;
using Umbraco.Core.Scoping;
using Umbraco.Core.Services;
+using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.Testing;
namespace Umbraco.Tests.Migrations
@@ -137,7 +138,7 @@ namespace Umbraco.Tests.Migrations
[Test]
public void ValidateUmbracoPlan()
{
- var plan = new UmbracoPlan();
+ var plan = new UmbracoPlan(TestHelper.GetUmbracoVersion());
plan.Validate();
Console.WriteLine(plan.FinalState);
Assert.IsFalse(plan.FinalState.IsNullOrWhiteSpace());
diff --git a/src/Umbraco.Tests/Packaging/CreatedPackagesRepositoryTests.cs b/src/Umbraco.Tests/Packaging/CreatedPackagesRepositoryTests.cs
index ffa90e57da..b101f9f7fe 100644
--- a/src/Umbraco.Tests/Packaging/CreatedPackagesRepositoryTests.cs
+++ b/src/Umbraco.Tests/Packaging/CreatedPackagesRepositoryTests.cs
@@ -34,13 +34,15 @@ namespace Umbraco.Tests.Packaging
base.TearDown();
//clear out files/folders
- Directory.Delete(Current.IOHelper.MapPath("~/" + _testBaseFolder), true);
+ Directory.Delete(IOHelper.MapPath("~/" + _testBaseFolder), true);
}
public ICreatedPackagesRepository PackageBuilder => new PackagesRepository(
ServiceContext.ContentService, ServiceContext.ContentTypeService, ServiceContext.DataTypeService,
ServiceContext.FileService, ServiceContext.MacroService, ServiceContext.LocalizationService,
+ IOHelper,
Factory.GetInstance(), Logger,
+ UmbracoVersion,
"createdPackages.config",
//temp paths
tempFolderPath: "~/" + _testBaseFolder + "/temp",
diff --git a/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs b/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs
index 14a7049195..8b33859e5b 100644
--- a/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs
+++ b/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs
@@ -35,7 +35,7 @@ namespace Umbraco.Tests.Packaging
base.TearDown();
//clear out files/folders
- var path = Current.IOHelper.MapPath("~/" + _testBaseFolder);
+ var path = IOHelper.MapPath("~/" + _testBaseFolder);
if (Directory.Exists(path))
Directory.Delete(path, true);
}
@@ -51,9 +51,9 @@ namespace Umbraco.Tests.Packaging
private IPackageInstallation PackageInstallation => new PackageInstallation(
PackageDataInstallation,
- new PackageFileInstallation(Parser, ProfilingLogger),
+ new PackageFileInstallation(Parser, IOHelper, ProfilingLogger),
Parser, Mock.Of(),
- applicationRootFolder: new DirectoryInfo(Current.IOHelper.MapPath("~/" + _testBaseFolder))); //we don't want to extract package files to the real root, so extract to a test folder
+ applicationRootFolder: new DirectoryInfo(IOHelper.MapPath("~/" + _testBaseFolder))); //we don't want to extract package files to the real root, so extract to a test folder
private const string DocumentTypePickerPackage = "Document_Type_Picker_1.1.umb";
private const string HelloPackage = "Hello_1.0.0.zip";
@@ -63,7 +63,7 @@ namespace Umbraco.Tests.Packaging
{
var package = PackageInstallation.ReadPackage(
//this is where our test zip file is
- new FileInfo(Path.Combine(Current.IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage)));
+ new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage)));
Assert.IsNotNull(package);
Assert.AreEqual(1, package.Files.Count);
Assert.AreEqual("095e064b-ba4d-442d-9006-3050983c13d8.dll", package.Files[0].UniqueFileName);
@@ -86,7 +86,7 @@ namespace Umbraco.Tests.Packaging
{
var package = PackageInstallation.ReadPackage(
//this is where our test zip file is
- new FileInfo(Path.Combine(Current.IOHelper.MapPath("~/Packaging/packages"), HelloPackage)));
+ new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), HelloPackage)));
Assert.IsNotNull(package);
Assert.AreEqual(0, package.Files.Count);
Assert.AreEqual("Hello", package.Name);
@@ -111,7 +111,7 @@ namespace Umbraco.Tests.Packaging
public void Can_Read_Compiled_Package_Warnings()
{
//copy a file to the same path that the package will install so we can detect file conflicts
- var path = Current.IOHelper.MapPath("~/" + _testBaseFolder);
+ var path = IOHelper.MapPath("~/" + _testBaseFolder);
Console.WriteLine(path);
var filePath = Path.Combine(path, "bin", "Auros.DocumentTypePicker.dll");
@@ -119,7 +119,7 @@ namespace Umbraco.Tests.Packaging
File.WriteAllText(filePath, "test");
//this is where our test zip file is
- var packageFile = Path.Combine(Current.IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage);
+ var packageFile = Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage);
Console.WriteLine(packageFile);
var package = PackageInstallation.ReadPackage(new FileInfo(packageFile));
@@ -137,7 +137,7 @@ namespace Umbraco.Tests.Packaging
{
var package = PackageInstallation.ReadPackage(
//this is where our test zip file is
- new FileInfo(Path.Combine(Current.IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage)));
+ new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage)));
var def = PackageDefinition.FromCompiledPackage(package);
def.Id = 1;
@@ -148,7 +148,7 @@ namespace Umbraco.Tests.Packaging
Assert.AreEqual(1, result.Count);
Assert.AreEqual("bin\\Auros.DocumentTypePicker.dll", result[0]);
- Assert.IsTrue(File.Exists(Path.Combine(Current.IOHelper.MapPath("~/" + _testBaseFolder), result[0])));
+ Assert.IsTrue(File.Exists(Path.Combine(IOHelper.MapPath("~/" + _testBaseFolder), result[0])));
//make sure the def is updated too
Assert.AreEqual(result.Count, def.Files.Count);
@@ -159,7 +159,7 @@ namespace Umbraco.Tests.Packaging
{
var package = PackageInstallation.ReadPackage(
//this is where our test zip file is
- new FileInfo(Path.Combine(Current.IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage)));
+ new FileInfo(Path.Combine(IOHelper.MapPath("~/Packaging/packages"), DocumentTypePickerPackage)));
var def = PackageDefinition.FromCompiledPackage(package);
def.Id = 1;
def.PackageId = Guid.NewGuid();
diff --git a/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs b/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs
index 7ab9d2e28a..120ec6bc72 100644
--- a/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs
+++ b/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs
@@ -7,6 +7,7 @@ using Moq;
using NPoco;
using NUnit.Framework;
using Umbraco.Core;
+using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Install;
using Umbraco.Core.Persistence;
@@ -26,6 +27,7 @@ namespace Umbraco.Tests.Persistence
private ILogger _logger;
private SqlCeSyntaxProvider _sqlCeSyntaxProvider;
private ISqlSyntaxProvider[] _sqlSyntaxProviders;
+ private IUmbracoVersion _umbracoVersion;
[SetUp]
public void Setup()
@@ -34,6 +36,7 @@ namespace Umbraco.Tests.Persistence
_sqlCeSyntaxProvider = new SqlCeSyntaxProvider();
_sqlSyntaxProviders = new[] { (ISqlSyntaxProvider) _sqlCeSyntaxProvider };
_logger = Mock.Of();
+ _umbracoVersion = TestHelper.GetUmbracoVersion();
_databaseFactory = new UmbracoDatabaseFactory(_logger, new Lazy(() => Mock.Of()), TestHelper.GetConfigs());
}
@@ -88,7 +91,7 @@ namespace Umbraco.Tests.Persistence
using (var database = _databaseFactory.CreateDatabase())
using (var transaction = database.GetTransaction())
{
- schemaHelper = new DatabaseSchemaCreator(database, _logger);
+ schemaHelper = new DatabaseSchemaCreator(database, _logger, _umbracoVersion);
schemaHelper.InitializeDatabaseSchema();
transaction.Complete();
}
diff --git a/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs
index f953b9cce6..4a9c8d4b71 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs
@@ -30,7 +30,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private DocumentRepository CreateRepository(IScopeAccessor scopeAccessor, out ContentTypeRepository contentTypeRepository)
{
var langRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, Logger);
- var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepository = new TagRepository(scopeAccessor, AppCaches.Disabled, Logger);
var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, AppCaches.Disabled);
contentTypeRepository = new ContentTypeRepository(scopeAccessor, AppCaches.Disabled, Logger, commonRepository, langRepository);
@@ -42,7 +42,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private ContentTypeRepository CreateRepository(IScopeAccessor scopeAccessor)
{
var langRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, Logger);
- var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, AppCaches.Disabled);
var contentTypeRepository = new ContentTypeRepository(scopeAccessor, AppCaches.Disabled, Logger, commonRepository, langRepository);
return contentTypeRepository;
@@ -50,7 +50,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private MediaTypeRepository CreateMediaTypeRepository(IScopeAccessor scopeAccessor)
{
- var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, AppCaches.Disabled);
var langRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, Logger);
var contentTypeRepository = new MediaTypeRepository(scopeAccessor, AppCaches.Disabled, Logger, commonRepository, langRepository);
@@ -71,7 +71,7 @@ namespace Umbraco.Tests.Persistence.Repositories
var provider = TestObjects.GetScopeProvider(Logger);
using (var scope = provider.CreateScope())
{
- var templateRepo = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepo = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var repository = CreateRepository((IScopeAccessor) provider);
var templates = new[]
{
diff --git a/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs
index af27d47f97..85588cbbdb 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs
@@ -64,7 +64,7 @@ namespace Umbraco.Tests.Persistence.Repositories
{
appCaches = appCaches ?? AppCaches;
- templateRepository = new TemplateRepository(scopeAccessor, appCaches, Logger, TestObjects.GetFileSystemsMock());
+ templateRepository = new TemplateRepository(scopeAccessor, appCaches, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepository = new TagRepository(scopeAccessor, appCaches, Logger);
var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, appCaches);
var languageRepository = new LanguageRepository(scopeAccessor, appCaches, Logger);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs
index 628f8d75a7..a8be4f5c2a 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs
@@ -20,7 +20,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private DomainRepository CreateRepository(IScopeProvider provider, out ContentTypeRepository contentTypeRepository, out DocumentRepository documentRepository, out LanguageRepository languageRepository)
{
var accessor = (IScopeAccessor) provider;
- var templateRepository = new TemplateRepository(accessor, Core.Cache.AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository(accessor, Core.Cache.AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepository = new TagRepository(accessor, Core.Cache.AppCaches.Disabled, Logger);
var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches);
languageRepository = new LanguageRepository(accessor, Core.Cache.AppCaches.Disabled, Logger);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
index fa916b554d..56db88419a 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
@@ -34,7 +34,7 @@ namespace Umbraco.Tests.Persistence.Repositories
appCaches = appCaches ?? AppCaches;
var scopeAccessor = (IScopeAccessor) provider;
- var templateRepository = new TemplateRepository(scopeAccessor, appCaches, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository(scopeAccessor, appCaches, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, appCaches);
var languageRepository = new LanguageRepository(scopeAccessor, appCaches, Logger);
mediaTypeRepository = new MediaTypeRepository(scopeAccessor, appCaches, Logger, commonRepository, languageRepository);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs
index bc23762fa9..4bda37c15c 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs
@@ -21,7 +21,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private MediaTypeRepository CreateRepository(IScopeProvider provider)
{
var cacheHelper = AppCaches.Disabled;
- var templateRepository = new TemplateRepository((IScopeAccessor)provider, cacheHelper, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository((IScopeAccessor)provider, cacheHelper, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var commonRepository = new ContentTypeCommonRepository((IScopeAccessor)provider, templateRepository, AppCaches);
var languageRepository = new LanguageRepository((IScopeAccessor)provider, AppCaches, Logger);
return new MediaTypeRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, commonRepository, languageRepository);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs b/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs
index f21db872ed..2d799eeddd 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs
@@ -43,7 +43,7 @@ namespace Umbraco.Tests.Persistence.Repositories
var provider = TestObjects.GetScopeProvider(Logger);
using (var scope = provider.CreateScope())
{
- var repository = new PartialViewRepository(fileSystems);
+ var repository = new PartialViewRepository(fileSystems, IOHelper);
var partialView = new PartialView(PartialViewType.PartialView, "test-path-1.cshtml") { Content = "// partialView" };
repository.Save(partialView);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs
index 56041c24aa..66d6bb9619 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs
@@ -305,7 +305,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private DocumentRepository CreateRepository(IScopeProvider provider, out ContentTypeRepository contentTypeRepository)
{
var accessor = (IScopeAccessor) provider;
- var templateRepository = new TemplateRepository(accessor, AppCaches, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository(accessor, AppCaches, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepository = new TagRepository(accessor, AppCaches, Logger);
var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches);
var languageRepository = new LanguageRepository(accessor, AppCaches, Logger);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs
index d29899dc33..dc654a2c52 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs
@@ -29,7 +29,7 @@ namespace Umbraco.Tests.Persistence.Repositories
base.SetUp();
_fileSystems = Mock.Of();
- _fileSystem = new PhysicalFileSystem(Current.IOHelper, Current.Logger, SettingsForTests.GenerateMockGlobalSettings().UmbracoScriptsPath);
+ _fileSystem = new PhysicalFileSystem(IOHelper, Logger, SettingsForTests.GenerateMockGlobalSettings().UmbracoScriptsPath);
Mock.Get(_fileSystems).Setup(x => x.ScriptsFileSystem).Returns(_fileSystem);
using (var stream = CreateStream("Umbraco.Sys.registerNamespace(\"Umbraco.Utils\");"))
{
diff --git a/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs
index 064562f548..3106c1692c 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs
@@ -28,7 +28,7 @@ namespace Umbraco.Tests.Persistence.Repositories
base.SetUp();
_fileSystems = Mock.Of();
- _fileSystem = new PhysicalFileSystem(Current.IOHelper, Current.Logger, SettingsForTests.GenerateMockGlobalSettings().UmbracoCssPath);
+ _fileSystem = new PhysicalFileSystem(IOHelper, Logger, SettingsForTests.GenerateMockGlobalSettings().UmbracoCssPath);
Mock.Get(_fileSystems).Setup(x => x.StylesheetsFileSystem).Returns(_fileSystem);
var stream = CreateStream("body {background:#EE7600; color:#FFF;}");
_fileSystem.AddFile("styles.css", stream);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs
index e3de2c2892..b186e344ae 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs
@@ -953,7 +953,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private DocumentRepository CreateContentRepository(IScopeProvider provider, out ContentTypeRepository contentTypeRepository)
{
var accessor = (IScopeAccessor) provider;
- var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepository = new TagRepository(accessor, AppCaches.Disabled, Logger);
var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches.Disabled);
var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger);
@@ -965,7 +965,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private MediaRepository CreateMediaRepository(IScopeProvider provider, out MediaTypeRepository mediaTypeRepository)
{
var accessor = (IScopeAccessor) provider;
- var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepository = new TagRepository(accessor, AppCaches.Disabled, Logger);
var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches.Disabled);
var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs
index 00c80ee75f..0bb761a2ac 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs
@@ -28,7 +28,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private ITemplateRepository CreateRepository(IScopeProvider provider)
{
- return new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, _fileSystems);
+ return new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, _fileSystems, IOHelper);
}
public override void SetUp()
@@ -36,7 +36,7 @@ namespace Umbraco.Tests.Persistence.Repositories
base.SetUp();
_fileSystems = Mock.Of();
- var viewsFileSystem = new PhysicalFileSystem(Current.IOHelper, Current.Logger, Constants.SystemDirectories.MvcViews);
+ var viewsFileSystem = new PhysicalFileSystem(IOHelper, Logger, Constants.SystemDirectories.MvcViews);
Mock.Get(_fileSystems).Setup(x => x.MvcViewsFileSystem).Returns(viewsFileSystem);
}
@@ -527,7 +527,7 @@ namespace Umbraco.Tests.Persistence.Repositories
_fileSystems = null;
//Delete all files
- var fsViews = new PhysicalFileSystem(Current.IOHelper, Current.Logger, Constants.SystemDirectories.MvcViews);
+ var fsViews = new PhysicalFileSystem(IOHelper, Logger, Constants.SystemDirectories.MvcViews);
var views = fsViews.GetFiles("", "*.cshtml");
foreach (var file in views)
fsViews.DeleteFile(file);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
index 3e5919d7f3..e856cedbd6 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
@@ -24,7 +24,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private MediaRepository CreateMediaRepository(IScopeProvider provider, out IMediaTypeRepository mediaTypeRepository)
{
var accessor = (IScopeAccessor) provider;
- var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches);
var languageRepository = new LanguageRepository(accessor, AppCaches, Logger);
mediaTypeRepository = new MediaTypeRepository(accessor, AppCaches, Mock.Of(), commonRepository, languageRepository);
@@ -42,7 +42,7 @@ namespace Umbraco.Tests.Persistence.Repositories
private DocumentRepository CreateContentRepository(IScopeProvider provider, out IContentTypeRepository contentTypeRepository, out ITemplateRepository templateRepository)
{
var accessor = (IScopeAccessor) provider;
- templateRepository = new TemplateRepository(accessor, AppCaches, Logger, TestObjects.GetFileSystemsMock());
+ templateRepository = new TemplateRepository(accessor, AppCaches, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepository = new TagRepository(accessor, AppCaches, Logger);
var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches);
var languageRepository = new LanguageRepository(accessor, AppCaches, Logger);
diff --git a/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs b/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs
index c7118dac79..99254edd77 100644
--- a/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs
+++ b/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs
@@ -22,7 +22,7 @@ namespace Umbraco.Tests.Persistence
using (var scope = ScopeProvider.CreateScope())
{
- var schema = new DatabaseSchemaCreator(scope.Database, Logger);
+ var schema = new DatabaseSchemaCreator(scope.Database, Logger, UmbracoVersion);
result = schema.ValidateSchema(
//TODO: When we remove the xml cache from tests we can remove this too
DatabaseSchemaCreator.OrderedTables.Concat(new []{typeof(ContentXmlDto), typeof(PreviewXmlDto)}));
diff --git a/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs b/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs
index 2afbdaca8f..660783c784 100644
--- a/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs
+++ b/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs
@@ -1,6 +1,7 @@
using Moq;
using NPoco;
using NUnit.Framework;
+using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Install;
using Umbraco.Core.Persistence;
@@ -20,7 +21,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
@@ -33,7 +34,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -47,7 +48,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -62,7 +63,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -76,7 +77,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -91,7 +92,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -105,7 +106,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -121,7 +122,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -137,7 +138,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -151,7 +152,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
@@ -164,7 +165,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -179,7 +180,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -193,7 +194,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -210,7 +211,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -226,7 +227,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -240,7 +241,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
@@ -253,7 +254,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
@@ -266,7 +267,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
@@ -279,7 +280,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -295,7 +296,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -312,7 +313,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -327,7 +328,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -344,7 +345,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -362,7 +363,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -379,7 +380,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -394,7 +395,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -409,20 +410,20 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
scope.Complete();
}
}
-
+
[Test]
public void Can_Create_cmsTags_Table()
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
@@ -435,7 +436,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -456,7 +457,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
@@ -469,7 +470,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -483,7 +484,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -497,7 +498,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
@@ -512,7 +513,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
- var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of());
+ var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion);
helper.CreateTable();
helper.CreateTable();
diff --git a/src/Umbraco.Tests/PropertyEditors/ImageCropperTest.cs b/src/Umbraco.Tests/PropertyEditors/ImageCropperTest.cs
index 68fd319cb4..ad9756fa6b 100644
--- a/src/Umbraco.Tests/PropertyEditors/ImageCropperTest.cs
+++ b/src/Umbraco.Tests/PropertyEditors/ImageCropperTest.cs
@@ -77,9 +77,9 @@ namespace Umbraco.Tests.PropertyEditors
Current.Factory = composition.CreateFactory();
var logger = Mock.Of();
- var ioHelper = Mock.Of();
var scheme = Mock.Of();
var config = Mock.Of();
+ var ioHelper = Mock.Of();
var mediaFileSystem = new MediaFileSystem(Mock.Of(), config, scheme, logger, ioHelper);
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs
index f801d02c5b..8122113516 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs
@@ -120,7 +120,7 @@ namespace Umbraco.Tests.PublishedContent
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService());
using (var luceneDir = new RandomIdRamDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
validator: new ContentValueSetValidator(true)))
using (indexer.ProcessNonAsync())
{
@@ -149,7 +149,7 @@ namespace Umbraco.Tests.PublishedContent
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService());
using (var luceneDir = new RandomIdRamDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
//include unpublished content since this uses the 'internal' indexer, it's up to the media cache to filter
validator: new ContentValueSetValidator(false)))
using (indexer.ProcessNonAsync())
@@ -197,7 +197,7 @@ namespace Umbraco.Tests.PublishedContent
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService());
using (var luceneDir = new RandomIdRamDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
validator: new ContentValueSetValidator(true)))
using (indexer.ProcessNonAsync())
{
@@ -225,7 +225,7 @@ namespace Umbraco.Tests.PublishedContent
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService());
using (var luceneDir = new RandomIdRamDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
validator: new ContentValueSetValidator(true)))
using (indexer.ProcessNonAsync())
{
@@ -253,7 +253,7 @@ namespace Umbraco.Tests.PublishedContent
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService());
using (var luceneDir = new RandomIdRamDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
validator: new ContentValueSetValidator(true)))
using (indexer.ProcessNonAsync())
{
@@ -282,7 +282,7 @@ namespace Umbraco.Tests.PublishedContent
using (var luceneDir = new RandomIdRamDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
validator: new ContentValueSetValidator(true)))
using (indexer.ProcessNonAsync())
{
@@ -307,7 +307,7 @@ namespace Umbraco.Tests.PublishedContent
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), IndexInitializer.GetMockMediaService());
using (var luceneDir = new RandomIdRamDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
validator: new ContentValueSetValidator(true)))
using (indexer.ProcessNonAsync())
{
diff --git a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs
index 119211225a..d11438d4f4 100644
--- a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs
+++ b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs
@@ -153,7 +153,7 @@ namespace Umbraco.Tests.Runtimes
var scopeProvider = factory.GetInstance();
using (var scope = scopeProvider.CreateScope())
{
- var creator = new DatabaseSchemaCreator(scope.Database, logger);
+ var creator = new DatabaseSchemaCreator(scope.Database, logger, umbracoVersion);
creator.InitializeDatabaseSchema();
scope.Complete();
}
diff --git a/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs b/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs
index dcac00e1b9..f407ac40df 100644
--- a/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs
+++ b/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs
@@ -21,7 +21,7 @@ namespace Umbraco.Tests.Scoping
base.SetUp();
SafeCallContext.Clear();
- ClearFiles();
+ ClearFiles(IOHelper);
}
protected override void ComposeApplication(bool withApplication)
@@ -39,21 +39,21 @@ namespace Umbraco.Tests.Scoping
base.TearDown();
SafeCallContext.Clear();
FileSystems.ResetShadowId();
- ClearFiles();
+ ClearFiles(IOHelper);
}
- private static void ClearFiles()
+ private static void ClearFiles(IIOHelper ioHelper)
{
- TestHelper.DeleteDirectory(Current.IOHelper.MapPath("media"));
- TestHelper.DeleteDirectory(Current.IOHelper.MapPath("FileSysTests"));
- TestHelper.DeleteDirectory(Current.IOHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs"));
+ TestHelper.DeleteDirectory(ioHelper.MapPath("media"));
+ TestHelper.DeleteDirectory(ioHelper.MapPath("FileSysTests"));
+ TestHelper.DeleteDirectory(ioHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs"));
}
[TestCase(true)]
[TestCase(false)]
public void CreateMediaTest(bool complete)
{
- var physMediaFileSystem = new PhysicalFileSystem(Current.IOHelper, Current.Logger, Current.IOHelper.MapPath("media"), "ignore");
+ var physMediaFileSystem = new PhysicalFileSystem(IOHelper, Current.Logger, IOHelper.MapPath("media"), "ignore");
var mediaFileSystem = Current.MediaFileSystem;
Assert.IsFalse(physMediaFileSystem.FileExists("f1.txt"));
@@ -86,7 +86,7 @@ namespace Umbraco.Tests.Scoping
[Test]
public void MultiThread()
{
- var physMediaFileSystem = new PhysicalFileSystem(Current.IOHelper, Current.Logger, Current.IOHelper.MapPath("media"), "ignore");
+ var physMediaFileSystem = new PhysicalFileSystem(IOHelper, Logger, IOHelper.MapPath("media"), "ignore");
var mediaFileSystem = Current.MediaFileSystem;
var scopeProvider = ScopeProvider;
diff --git a/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs b/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs
index ace45fe356..9f55fe2e45 100644
--- a/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs
+++ b/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs
@@ -163,7 +163,7 @@ namespace Umbraco.Tests.Services
var provider = TestObjects.GetScopeProvider(Logger);
using (var scope = provider.CreateScope())
{
- var tRepository = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var tRepository = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepo = new TagRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger);
var commonRepository = new ContentTypeCommonRepository((IScopeAccessor)provider, tRepository, AppCaches);
var languageRepository = new LanguageRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger);
@@ -197,7 +197,7 @@ namespace Umbraco.Tests.Services
var provider = TestObjects.GetScopeProvider(Logger);
using (var scope = provider.CreateScope())
{
- var tRepository = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var tRepository = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepo = new TagRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger);
var commonRepository = new ContentTypeCommonRepository((IScopeAccessor)provider, tRepository, AppCaches);
var languageRepository = new LanguageRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger);
@@ -229,7 +229,7 @@ namespace Umbraco.Tests.Services
var provider = TestObjects.GetScopeProvider(Logger);
using (var scope = provider.CreateScope())
{
- var tRepository = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var tRepository = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepo = new TagRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger);
var commonRepository = new ContentTypeCommonRepository((IScopeAccessor) provider, tRepository, AppCaches);
var languageRepository = new LanguageRepository((IScopeAccessor)provider, AppCaches.Disabled, Logger);
@@ -264,7 +264,7 @@ namespace Umbraco.Tests.Services
var provider = TestObjects.GetScopeProvider(Logger);
using (var scope = provider.CreateScope())
{
- var tRepository = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var tRepository = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepo = new TagRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger);
var commonRepository = new ContentTypeCommonRepository((IScopeAccessor)provider, tRepository, AppCaches);
var languageRepository = new LanguageRepository((IScopeAccessor)provider, AppCaches.Disabled, Logger);
diff --git a/src/Umbraco.Tests/Services/ContentServiceTests.cs b/src/Umbraco.Tests/Services/ContentServiceTests.cs
index b5f63bbc15..fbcfd751cf 100644
--- a/src/Umbraco.Tests/Services/ContentServiceTests.cs
+++ b/src/Umbraco.Tests/Services/ContentServiceTests.cs
@@ -3161,7 +3161,7 @@ namespace Umbraco.Tests.Services
private DocumentRepository CreateRepository(IScopeProvider provider, out ContentTypeRepository contentTypeRepository)
{
var accessor = (IScopeAccessor) provider;
- var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper);
var tagRepository = new TagRepository(accessor, AppCaches.Disabled, Logger);
var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches);
var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger);
diff --git a/src/Umbraco.Tests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests/TestHelpers/TestHelper.cs
index 85c4ad345a..64794fcea9 100644
--- a/src/Umbraco.Tests/TestHelpers/TestHelper.cs
+++ b/src/Umbraco.Tests/TestHelpers/TestHelper.cs
@@ -2,7 +2,6 @@
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
-using System.Configuration;
using System.IO;
using System.Linq;
using System.Reflection;
@@ -13,12 +12,14 @@ using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
+using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Services;
+using Umbraco.Core.Sync;
using File = System.IO.File;
namespace Umbraco.Tests.TestHelpers
@@ -38,6 +39,16 @@ namespace Umbraco.Tests.TestHelpers
{
return GetConfigsFactory().Create();
}
+ public static IRuntimeState GetRuntimeState()
+ {
+ return new RuntimeState(
+ Mock.Of(),
+ Mock.Of(),
+ Mock.Of(),
+ new Lazy(),
+ new Lazy(),
+ TestHelper.GetUmbracoVersion());
+ }
public static IConfigsFactory GetConfigsFactory()
{
diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects.cs b/src/Umbraco.Tests/TestHelpers/TestObjects.cs
index bf9fa80043..1ad0ef63dc 100644
--- a/src/Umbraco.Tests/TestHelpers/TestObjects.cs
+++ b/src/Umbraco.Tests/TestHelpers/TestObjects.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using System.IO;
using System.Linq;
using Moq;
@@ -23,7 +22,6 @@ using Umbraco.Core.Services;
using Umbraco.Core.Services.Implement;
using Umbraco.Core.Strings;
using Umbraco.Tests.TestHelpers.Stubs;
-using Umbraco.Web.Services;
namespace Umbraco.Tests.TestHelpers
{
@@ -78,6 +76,7 @@ namespace Umbraco.Tests.TestHelpers
///
/// A cache.
/// A logger.
+ /// An io helper.
///
///
/// An event messages factory.
@@ -92,11 +91,13 @@ namespace Umbraco.Tests.TestHelpers
IScopeProvider scopeProvider, IScopeAccessor scopeAccessor,
AppCaches cache,
ILogger logger,
+ IIOHelper ioHelper,
IGlobalSettings globalSettings,
IUmbracoSettingsSection umbracoSettings,
IEventMessagesFactory eventMessagesFactory,
UrlSegmentProviderCollection urlSegmentProviders,
TypeLoader typeLoader,
+ IUmbracoVersion umbracoVersion,
IFactory factory = null)
{
if (scopeProvider == null) throw new ArgumentNullException(nameof(scopeProvider));
@@ -107,7 +108,6 @@ namespace Umbraco.Tests.TestHelpers
var scheme = Mock.Of();
var config = Mock.Of();
- var ioHelper = Mock.Of();
var mediaFileSystem = new MediaFileSystem(Mock.Of(), config, scheme, logger, ioHelper);
@@ -119,9 +119,9 @@ namespace Umbraco.Tests.TestHelpers
var localizedTextService = GetLazyService(factory, c => new LocalizedTextService(
new Lazy(() =>
{
- var mainLangFolder = new DirectoryInfo(Current.IOHelper.MapPath(Current.Configs.Global().UmbracoPath + "/config/lang/"));
- var appPlugins = new DirectoryInfo(Current.IOHelper.MapPath(Constants.SystemDirectories.AppPlugins));
- var configLangFolder = new DirectoryInfo(Current.IOHelper.MapPath(Constants.SystemDirectories.Config + "/lang/"));
+ var mainLangFolder = new DirectoryInfo(ioHelper.MapPath(Current.Configs.Global().UmbracoPath + "/config/lang/"));
+ var appPlugins = new DirectoryInfo(ioHelper.MapPath(Constants.SystemDirectories.AppPlugins));
+ var configLangFolder = new DirectoryInfo(ioHelper.MapPath(Constants.SystemDirectories.Config + "/lang/"));
var pluginLangFolders = appPlugins.Exists == false
? Enumerable.Empty()
@@ -155,14 +155,14 @@ namespace Umbraco.Tests.TestHelpers
var userService = GetLazyService(factory, c => new UserService(scopeProvider, logger, eventMessagesFactory, runtimeState, GetRepo(c), GetRepo(c),globalSettings));
var dataTypeService = GetLazyService(factory, c => new DataTypeService(scopeProvider, logger, eventMessagesFactory, GetRepo(c), GetRepo(c), GetRepo(c), GetRepo(c), GetRepo(c)));
var contentService = GetLazyService(factory, c => new ContentService(scopeProvider, logger, eventMessagesFactory, GetRepo(c), GetRepo(c), GetRepo(c), GetRepo(c), GetRepo(c), GetRepo(c)));
- var notificationService = GetLazyService(factory, c => new NotificationService(scopeProvider, userService.Value, contentService.Value, localizationService.Value, logger, GetRepo