Skip to content

Commit ea8e2f5

Browse files
committed
Added generation of classes without imports of Umbraco namespaces
1 parent 98bea57 commit ea8e2f5

18 files changed

+512
-174
lines changed

Umbraco.CodeGen.Integration/Umbraco.CodeGen.Integration.csproj

Lines changed: 24 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@
5555
<Private>False</Private>
5656
</Reference>
5757
<Reference Include="businesslogic">
58-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\businesslogic.dll</HintPath>
59-
<Private>False</Private>
58+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\businesslogic.dll</HintPath>
6059
</Reference>
6160
<Reference Include="ClientDependency.Core">
6261
<HintPath>..\packages\ClientDependency.1.7.0.4\lib\ClientDependency.Core.dll</HintPath>
@@ -67,20 +66,17 @@
6766
<Private>False</Private>
6867
</Reference>
6968
<Reference Include="cms">
70-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\cms.dll</HintPath>
71-
<Private>False</Private>
69+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\cms.dll</HintPath>
7270
</Reference>
7371
<Reference Include="controls">
74-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\controls.dll</HintPath>
75-
<Private>False</Private>
72+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\controls.dll</HintPath>
7673
</Reference>
7774
<Reference Include="CookComputing.XmlRpcV2">
7875
<HintPath>..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll</HintPath>
7976
<Private>False</Private>
8077
</Reference>
8178
<Reference Include="Examine">
82-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\Examine.dll</HintPath>
83-
<Private>False</Private>
79+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\Examine.dll</HintPath>
8480
</Reference>
8581
<Reference Include="HtmlAgilityPack">
8682
<HintPath>..\packages\HtmlAgilityPack.1.4.6\lib\Net40\HtmlAgilityPack.dll</HintPath>
@@ -91,28 +87,24 @@
9187
<Private>False</Private>
9288
</Reference>
9389
<Reference Include="interfaces">
94-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\interfaces.dll</HintPath>
95-
<Private>False</Private>
90+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\interfaces.dll</HintPath>
9691
</Reference>
9792
<Reference Include="jumps.umbraco.usync">
9893
<HintPath>..\lib\jumps.umbraco.usync.dll</HintPath>
9994
<Private>False</Private>
10095
</Reference>
10196
<Reference Include="log4net">
102-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\log4net.dll</HintPath>
103-
<Private>False</Private>
97+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\log4net.dll</HintPath>
10498
</Reference>
10599
<Reference Include="Lucene.Net">
106100
<HintPath>..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll</HintPath>
107101
<Private>False</Private>
108102
</Reference>
109103
<Reference Include="Microsoft.ApplicationBlocks.Data">
110-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\Microsoft.ApplicationBlocks.Data.dll</HintPath>
111-
<Private>False</Private>
104+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\Microsoft.ApplicationBlocks.Data.dll</HintPath>
112105
</Reference>
113106
<Reference Include="Microsoft.Web.Helpers">
114-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\Microsoft.Web.Helpers.dll</HintPath>
115-
<Private>False</Private>
107+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\Microsoft.Web.Helpers.dll</HintPath>
116108
</Reference>
117109
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
118110
<Private>False</Private>
@@ -134,30 +126,17 @@
134126
<HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll</HintPath>
135127
<Private>False</Private>
136128
</Reference>
137-
<Reference Include="Our.Umbraco.uGoLive">
138-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\Our.Umbraco.uGoLive.dll</HintPath>
139-
<Private>False</Private>
140-
</Reference>
141-
<Reference Include="Our.Umbraco.uGoLive.47x">
142-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\Our.Umbraco.uGoLive.47x.dll</HintPath>
143-
<Private>False</Private>
144-
</Reference>
145-
<Reference Include="Our.Umbraco.uGoLive.Checks">
146-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\Our.Umbraco.uGoLive.Checks.dll</HintPath>
147-
<Private>False</Private>
148-
</Reference>
149129
<Reference Include="SQLCE4Umbraco">
150-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\SQLCE4Umbraco.dll</HintPath>
151-
<Private>False</Private>
130+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\SQLCE4Umbraco.dll</HintPath>
152131
</Reference>
153132
<Reference Include="System" />
154133
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
155-
<Private>False</Private>
156-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\System.Data.SqlServerCe.dll</HintPath>
134+
<Private>True</Private>
135+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\System.Data.SqlServerCe.dll</HintPath>
157136
</Reference>
158137
<Reference Include="System.Data.SqlServerCe.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
159-
<Private>False</Private>
160-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
138+
<Private>True</Private>
139+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
161140
</Reference>
162141
<Reference Include="System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
163142
<HintPath>..\packages\Microsoft.Net.Http.2.0.20710.0\lib\net40\System.Net.Http.dll</HintPath>
@@ -207,48 +186,37 @@
207186
<Reference Include="System.XML" />
208187
<Reference Include="System.Xml.Linq" />
209188
<Reference Include="TidyNet">
210-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\TidyNet.dll</HintPath>
211-
<Private>False</Private>
189+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\TidyNet.dll</HintPath>
212190
</Reference>
213191
<Reference Include="umbraco">
214-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\umbraco.dll</HintPath>
215-
<Private>False</Private>
192+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.dll</HintPath>
216193
</Reference>
217194
<Reference Include="Umbraco.Core">
218-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\Umbraco.Core.dll</HintPath>
219-
<Private>False</Private>
195+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\Umbraco.Core.dll</HintPath>
220196
</Reference>
221197
<Reference Include="umbraco.DataLayer">
222-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\umbraco.DataLayer.dll</HintPath>
223-
<Private>False</Private>
198+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.DataLayer.dll</HintPath>
224199
</Reference>
225200
<Reference Include="umbraco.editorControls">
226-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\umbraco.editorControls.dll</HintPath>
227-
<Private>False</Private>
201+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.editorControls.dll</HintPath>
228202
</Reference>
229203
<Reference Include="umbraco.MacroEngines">
230-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\umbraco.MacroEngines.dll</HintPath>
231-
<Private>False</Private>
204+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.MacroEngines.dll</HintPath>
232205
</Reference>
233206
<Reference Include="umbraco.providers">
234-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\umbraco.providers.dll</HintPath>
235-
<Private>False</Private>
207+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.providers.dll</HintPath>
236208
</Reference>
237209
<Reference Include="Umbraco.Web.UI">
238-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\Umbraco.Web.UI.dll</HintPath>
239-
<Private>False</Private>
210+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\Umbraco.Web.UI.dll</HintPath>
240211
</Reference>
241212
<Reference Include="umbraco.XmlSerializers">
242-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\umbraco.XmlSerializers.dll</HintPath>
243-
<Private>False</Private>
213+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\umbraco.XmlSerializers.dll</HintPath>
244214
</Reference>
245215
<Reference Include="UmbracoExamine">
246-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\UmbracoExamine.dll</HintPath>
247-
<Private>False</Private>
216+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\UmbracoExamine.dll</HintPath>
248217
</Reference>
249218
<Reference Include="UrlRewritingNet.UrlRewriter">
250-
<HintPath>..\packages\UmbracoCms.Core.7.0.0\lib\UrlRewritingNet.UrlRewriter.dll</HintPath>
251-
<Private>False</Private>
219+
<HintPath>..\packages\UmbracoCms.Core.7.0.1\lib\UrlRewritingNet.UrlRewriter.dll</HintPath>
252220
</Reference>
253221
</ItemGroup>
254222
<ItemGroup>

Umbraco.CodeGen.Integration/packages.config

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<package id="ClientDependency" version="1.7.0.4" targetFramework="net40" developmentDependency="true" />
55
<package id="ClientDependency-Mvc" version="1.7.0.4" targetFramework="net40" developmentDependency="true" />
66
<package id="HtmlAgilityPack" version="1.4.6" targetFramework="net40" developmentDependency="true" requireReinstallation="True" />
7+
<package id="ICSharpCode.NRefactory" version="5.3.0" targetFramework="net45" />
78
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net40" developmentDependency="true" />
89
<package id="Microsoft.AspNet.Mvc" version="4.0.30506.0" targetFramework="net40" developmentDependency="true" />
910
<package id="Microsoft.AspNet.Mvc.FixedDisplayModes" version="1.0.1" targetFramework="net40" developmentDependency="true" />
@@ -16,11 +17,10 @@
1617
<package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net40" developmentDependency="true" requireReinstallation="True" />
1718
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" developmentDependency="true" />
1819
<package id="MiniProfiler" version="2.1.0" targetFramework="net40" developmentDependency="true" />
20+
<package id="Mono.Cecil" version="0.9.5.4" targetFramework="net45" />
1921
<package id="MySql.Data" version="6.6.5" targetFramework="net40" developmentDependency="true" />
2022
<package id="Newtonsoft.Json" version="4.5.11" targetFramework="net40" developmentDependency="true" />
2123
<package id="SharpZipLib" version="0.86.0" targetFramework="net40" developmentDependency="true" />
22-
<package id="UmbracoCms.Core" version="7.0.0" targetFramework="net45" developmentDependency="true" />
24+
<package id="UmbracoCms.Core" version="7.0.1" targetFramework="net45" developmentDependency="true" />
2325
<package id="xmlrpcnet" version="2.5.0" targetFramework="net40" developmentDependency="true" />
24-
<package id="Mono.Cecil" version="0.9.5.4" targetFramework="net45" />
25-
<package id="ICSharpCode.NRefactory" version="5.3.0" targetFramework="net45" />
2626
</packages>
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Text;
6+
using NUnit.Framework;
7+
using Umbraco.CodeGen.Configuration;
8+
using Umbraco.CodeGen.Definitions;
9+
using Umbraco.CodeGen.Generators;
10+
using Umbraco.CodeGen.Generators.Annotated;
11+
using Umbraco.CodeGen.Tests.TestHelpers;
12+
13+
namespace Umbraco.CodeGen.Tests
14+
{
15+
[TestFixture]
16+
public class BaseSupportedAnnotatedCodeGeneratorAcceptanceTests
17+
{
18+
[Test]
19+
public void BuildCode_GeneratesCodeForDocumentType()
20+
{
21+
TestBuildCode("SomeBaseSupportedAnnotatedDocumentType", "SomeDocumentType", "DocumentType");
22+
}
23+
24+
[Test]
25+
public void BuildCode_GeneratesCodeForMediaType()
26+
{
27+
TestBuildCode("SomeBaseSupportedAnnotatedMediaType", "SomeMediaType", "MediaType");
28+
}
29+
30+
private void TestBuildCode(string classFileName, string xmlFileName, string contentTypeName)
31+
{
32+
ContentType contentType;
33+
var expectedOutput = "";
34+
using (var inputReader = File.OpenText(@"..\..\TestFiles\" + xmlFileName + ".xml"))
35+
{
36+
contentType = new ContentTypeSerializer().Deserialize(inputReader);
37+
}
38+
using (var goldReader = File.OpenText(@"..\..\TestFiles\" + classFileName + ".cs"))
39+
{
40+
expectedOutput = goldReader.ReadToEnd();
41+
}
42+
43+
var configuration = new CodeGeneratorConfiguration();
44+
configuration.TypeMappings.Add(new TypeMapping("1413afcb-d19a-4173-8e9a-68288d2a73b8", "Int32"));
45+
var typeConfig = configuration.Get(contentTypeName);
46+
typeConfig.BaseClass = "BaseClassWithSupport";
47+
typeConfig.Namespace = "Umbraco.CodeGen.Models";
48+
49+
var sb = new StringBuilder();
50+
var writer = new StringWriter(sb);
51+
52+
var dataTypeProvider = new TestDataTypeProvider();
53+
var generator = new CodeGenerator(typeConfig, dataTypeProvider, new BaseSupportedAnnotatedCodeGeneratorFactory());
54+
55+
generator.Generate(contentType, writer);
56+
57+
writer.Flush();
58+
Console.WriteLine(sb.ToString());
59+
60+
Assert.AreEqual(expectedOutput, sb.ToString());
61+
}
62+
}
63+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System.CodeDom;
2+
using NUnit.Framework;
3+
using Umbraco.CodeGen.Definitions;
4+
using Umbraco.CodeGen.Generators.BaseSupportedAnnotated;
5+
6+
namespace Umbraco.CodeGen.Tests.Generators.BaseSupportedAnnotated
7+
{
8+
[TestFixture]
9+
public class CtorGeneratorTests
10+
{
11+
[Test]
12+
public void Generate_AddsConstructorWithBaseCall_PassingQualifiedIPublishedContentParameter()
13+
{
14+
var type = new CodeTypeDeclaration{Name="AName"};
15+
type.BaseTypes.Add("ABaseType");
16+
var generator = new CtorGenerator(null);
17+
generator.Generate(type, new MediaType());
18+
19+
var ns = CodeGenerationHelper.CreateNamespaceWithType(type);
20+
var code = CodeGenerationHelper.GenerateCode(ns);
21+
22+
Assert.AreEqual(
23+
@"namespace ANamespace {
24+
25+
26+
public class AName : ABaseType {
27+
28+
public AName(Umbraco.Core.Models.IPublishedContent content) :
29+
base(content) {
30+
}
31+
}
32+
}
33+
", code.ToString());
34+
}
35+
}
36+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System.CodeDom;
2+
using System.Linq;
3+
using NUnit.Framework;
4+
using Umbraco.CodeGen.Generators.BaseSupportedAnnotated;
5+
6+
namespace Umbraco.CodeGen.Tests.Generators.BaseSupportedAnnotated
7+
{
8+
[TestFixture]
9+
class ImportsGeneratorTests
10+
{
11+
[Test]
12+
public void Generate_AddsImports()
13+
{
14+
var ns = new CodeNamespace("ANamespace");
15+
var generator = new ImportsGenerator(null);
16+
generator.Generate(ns, null);
17+
Assert.That(
18+
new[]
19+
{
20+
"System",
21+
"Umbraco.CodeGen.Annotations"
22+
}.SequenceEqual(
23+
ns.Imports.Cast<CodeNamespaceImport>()
24+
.Select(import => import.Namespace)
25+
));
26+
}
27+
}
28+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using NUnit.Framework;
2+
using Umbraco.CodeGen.Configuration;
3+
using Umbraco.CodeGen.Generators;
4+
using PropertyBodyGenerator = Umbraco.CodeGen.Generators.BaseSupportedAnnotated.PropertyBodyGenerator;
5+
6+
namespace Umbraco.CodeGen.Tests.Generators.BaseSupportedAnnotated
7+
{
8+
[TestFixture]
9+
public class PropertyBodyGeneratorTests : PropertyBodyGeneratorTestBase
10+
{
11+
[Test]
12+
public void Generate_Body_GetsValueFromBaseMethodGetValue()
13+
{
14+
var body = GeneratePropertyAndGetBodyText();
15+
16+
Assert.AreEqual(
17+
"return GetValue<String>(\"aProperty\");",
18+
body
19+
);
20+
}
21+
22+
protected override CodeGeneratorBase CreateGenerator()
23+
{
24+
return new PropertyBodyGenerator(new CodeGeneratorConfiguration().MediaTypes);
25+
}
26+
}
27+
}
Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,26 @@
1-
using System.CodeDom;
2-
using System.CodeDom.Compiler;
3-
using System.IO;
4-
using System.Linq;
5-
using System.Text;
6-
using Microsoft.CSharp;
7-
using NUnit.Framework;
1+
using NUnit.Framework;
82
using Umbraco.CodeGen.Configuration;
9-
using Umbraco.CodeGen.Definitions;
103
using Umbraco.CodeGen.Generators;
114

125
namespace Umbraco.CodeGen.Tests.Generators
136
{
147
[TestFixture]
15-
public class PropertyBodyGeneratorTest
8+
public class PropertyBodyGeneratorTest : PropertyBodyGeneratorTestBase
169
{
1710
[Test]
1811
public void Generate_Body_GetsContentPropertyValueOfType()
1912
{
20-
var property = new GenericProperty {Alias = "aProperty"};
21-
var propNode = new CodeMemberProperty {Type = new CodeTypeReference("String")};
22-
var generator = new PropertyBodyGenerator(new CodeGeneratorConfiguration().MediaTypes);
23-
24-
generator.Generate(propNode, property);
25-
26-
var ns = CodeGenerationHelper.CreateNamespaceWithTypeAndProperty(propNode);
27-
var builder = CodeGenerationHelper.GenerateCode(ns);
28-
29-
var code = builder.ToString();
30-
var returnIndex = code.IndexOf("return");
31-
var endIndex = code.IndexOf(";", returnIndex);
32-
var body = code.Substring(returnIndex, endIndex - returnIndex + 1);
13+
var body = GeneratePropertyAndGetBodyText();
3314

3415
Assert.AreEqual(
3516
"return Content.GetPropertyValue<String>(\"aProperty\");",
3617
body
3718
);
3819
}
20+
21+
protected override CodeGeneratorBase CreateGenerator()
22+
{
23+
return new PropertyBodyGenerator(new CodeGeneratorConfiguration().MediaTypes);
24+
}
3925
}
4026
}

0 commit comments

Comments
 (0)