diff --git a/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs
index 723ee10f35..4e806a844e 100644
--- a/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs
+++ b/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs
@@ -10,7 +10,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Building
///
/// Implements a builder that works by writing text.
///
- internal class TextBuilder : Builder
+ public class TextBuilder : Builder
{
///
/// Initializes a new instance of the class with a list of models to generate
@@ -22,7 +22,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Building
{ }
// internal for unit tests only
- internal TextBuilder()
+ public TextBuilder()
{ }
///
@@ -174,6 +174,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Building
// write the constants & static methods
// as 'new' since parent has its own - or maybe not - disable warning
+ sb.Append("\t\tprivate readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor;\n\n");
sb.Append("\t\t// helpers\n");
sb.Append("#pragma warning disable 0109 // new is redundant\n");
WriteGeneratedCodeAttribute(sb, "\t\t");
@@ -185,7 +186,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Building
itemType);
WriteGeneratedCodeAttribute(sb, "\t\t");
sb.Append("\t\tpublic new static IPublishedContentType GetModelContentType()\n");
- sb.Append("\t\t\t=> PublishedModelUtility.GetModelContentType(ModelItemType, ModelTypeAlias);\n");
+ sb.Append("\t\t\t=> PublishedModelUtility.GetModelContentType(_publishedSnapshotAccessor, ModelItemType, ModelTypeAlias);\n");
WriteGeneratedCodeAttribute(sb, "\t\t");
sb.AppendFormat("\t\tpublic static IPublishedPropertyType GetModelPropertyType(Expression> selector)\n",
type.ClrName);
@@ -193,7 +194,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Building
sb.Append("#pragma warning restore 0109\n\n");
// write the ctor
- sb.AppendFormat("\t\t// ctor\n\t\tpublic {0}(IPublished{1} content)\n\t\t\t: base(content)\n\t\t{{ }}\n\n",
+ sb.AppendFormat("\t\t// ctor\n\t\tpublic {0}(IPublished{1} content, IPublishedSnapshotAccessor publishedSnapshotAccessor)\n\t\t\t: base(content)\n\t\t{{\n\t\t\t_publishedSnapshotAccessor = publishedSnapshotAccessor;\n\t\t}}\n\n",
type.ClrName, type.IsElement ? "Element" : "Content");
// write the properties
@@ -416,7 +417,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Building
}
// internal for unit tests
- internal void WriteClrType(StringBuilder sb, Type type)
+ public void WriteClrType(StringBuilder sb, Type type)
{
var s = type.ToString();
diff --git a/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/ModelsBuilder/BuilderTests.cs
similarity index 95%
rename from src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs
rename to src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/ModelsBuilder/BuilderTests.cs
index 6065570b13..22903ef768 100644
--- a/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs
+++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/ModelsBuilder/BuilderTests.cs
@@ -74,6 +74,8 @@ namespace Umbraco.Web.PublishedModels
[PublishedModel(""type1"")]
public partial class Type1 : PublishedContentModel
{
+ private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor;
+
// helpers
#pragma warning disable 0109 // new is redundant
[global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")]
@@ -82,16 +84,18 @@ namespace Umbraco.Web.PublishedModels
public new const PublishedItemType ModelItemType = PublishedItemType.Content;
[global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")]
public new static IPublishedContentType GetModelContentType()
- => PublishedModelUtility.GetModelContentType(ModelItemType, ModelTypeAlias);
+ => PublishedModelUtility.GetModelContentType(_publishedSnapshotAccessor, ModelItemType, ModelTypeAlias);
[global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")]
public static IPublishedPropertyType GetModelPropertyType(Expression> selector)
=> PublishedModelUtility.GetModelPropertyType(GetModelContentType(), selector);
#pragma warning restore 0109
// ctor
- public Type1(IPublishedContent content)
+ public Type1(IPublishedContent content, IPublishedSnapshotAccessor publishedSnapshotAccessor)
: base(content)
- { }
+ {
+ _publishedSnapshotAccessor = publishedSnapshotAccessor;
+ }
// properties
@@ -189,6 +193,8 @@ namespace Umbraco.Web.PublishedModels
[PublishedModel(""type1"")]
public partial class Type1 : PublishedContentModel
{
+ private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor;
+
// helpers
#pragma warning disable 0109 // new is redundant
[global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")]
@@ -197,16 +203,18 @@ namespace Umbraco.Web.PublishedModels
public new const PublishedItemType ModelItemType = PublishedItemType.Content;
[global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")]
public new static IPublishedContentType GetModelContentType()
- => PublishedModelUtility.GetModelContentType(ModelItemType, ModelTypeAlias);
+ => PublishedModelUtility.GetModelContentType(_publishedSnapshotAccessor, ModelItemType, ModelTypeAlias);
[global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")]
public static IPublishedPropertyType GetModelPropertyType(Expression> selector)
=> PublishedModelUtility.GetModelPropertyType(GetModelContentType(), selector);
#pragma warning restore 0109
// ctor
- public Type1(IPublishedContent content)
+ public Type1(IPublishedContent content, IPublishedSnapshotAccessor publishedSnapshotAccessor)
: base(content)
- { }
+ {
+ _publishedSnapshotAccessor = publishedSnapshotAccessor;
+ }
// properties