Skip to content

Commit

Permalink
TE-1 Reading TemplateDataModel from JSON (#5)
Browse files Browse the repository at this point in the history
* TE-1 Added Extension Methods for reading data from JSON

* TE-1   Update Readme for v1.0.8-preview

* TE-1 Renamed Method CreateStringFromTemplateWithJson

* TE-1 Renamed Tests

* TE-1 Update AssemblyVersion and FileVersion
  • Loading branch information
mbsoftlab authored Dec 25, 2020
1 parent b581ddc commit 1b2f992
Show file tree
Hide file tree
Showing 9 changed files with 175 additions and 38 deletions.
15 changes: 15 additions & 0 deletions MbSoftLab.TemplateEngine.Core.Tests/DummyJsonData.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"DummyStringProp1": "DummyStringProp1Value",
"DummyIntProp1": 1,
"DummBoolProp1": true,
"DummyBoolQProp1": true,
"DummyDoubleProp1": 1.75,
"DummyDateTimeProp1": "2020-01-01T00:00:00",
"DummyInt64Prop": 1234567,
"DummyUInt16": 8,
"DummyInt16": -8,
"DummyDecimalProp": 55,
"DummyCharProp": "c",
"DummyByteProp": 255,
"DummySByteProp": -5
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,18 @@

<ItemGroup>
<PackageReference Include="nunit" Version="3.12.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.17.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\MbSoftLab.TemplateEngine.Core\MbSoftLab.TemplateEngine.Core.csproj" />
</ItemGroup>

<ItemGroup>
<None Update="DummyJsonData.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>
38 changes: 16 additions & 22 deletions MbSoftLab.TemplateEngine.Core.Tests/TemplateEngineUnitTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,39 +12,49 @@ public class TemplateEngineUnitTest : UnitTestBase
{

[Test]
public void can_create_a_valid_template()
public void can_create_a_valid_string_from_template()
{

//Arrange
var sut = new TemplateEngine<TemplateDataModelDummy>(GetTemplateDataModelDummy(), "<TagName>${DummyStringProp1}</TagName>"); //SUT = [S]ystem [U]nder [T]est
string ShouldReturnString = "<TagName>DummyStringProp1Value</TagName>";

//Act Ausführen der zu testenden Funktion
string ReturnString = sut.CreateStringFromTemplate();

//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
[Test]
public void can_create_a_valid_string_from_template_with_json()
{
//Arrange
var sut = new TemplateEngine<TemplateDataModelDummy>(); //SUT = [S]ystem [U]nder [T]est
sut.TemplateString = "<TagName>${DummyStringProp1}</TagName>";
string ShouldReturnString = "<TagName>DummyStringProp1Value</TagName>";
string jsonData = GetDummyJson();

//Act Ausführen der zu testenden Funktion
string ReturnString = sut.CreateStringFromTemplateWithJson(jsonData);

//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
[Test]
public void can_handle_null_Values_in_Propertys()
{

//Arrange
var sut = new TemplateEngine(GetTemplateDataModelDummy(), "<TagName>${DummyStringProp2}</TagName>"); //SUT = [S]ystem [U]nder [T]est
string ShouldReturnString = "<TagName>NULL</TagName>";

//Act Ausführen der zu testenden Funktion
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
[Test]
public void can_set_a_custom_null_value_String()
{

//Arrange
var sut = new TemplateEngine(GetTemplateDataModelDummy(), "<TagName>${DummyStringProp2}</TagName>"); //SUT = [S]ystem [U]nder [T]est
sut.NullStringValue = "Nothing";
Expand All @@ -53,7 +63,6 @@ public void can_set_a_custom_null_value_String()
//Act
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -69,7 +78,6 @@ public void can_set_a_template()
//Act
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -94,7 +102,6 @@ public void can_use_the_config()
//Act
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -119,7 +126,6 @@ public void can_use_the_generic_config()
//Act
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -134,7 +140,6 @@ public void can_set_a_template_and_model_on_creating()
//Act
string ReturnString = sut.CreateStringFromTemplate(GetTemplateDataModelDummy(), "<TagName>${DummyStringProp2}</TagName>");


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -150,7 +155,6 @@ public void can_set_a_model_on_creating()
//Act
string ReturnString = sut.CreateStringFromTemplate(GetTemplateDataModelDummy());


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -166,7 +170,6 @@ public void can_set_a_DataModel_with_Annonymos_Type()
//Act
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -183,7 +186,6 @@ public void can_set_a_different_DataModel_with_annonymos_type_after_create_an_in
//Act
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -202,7 +204,6 @@ public void can_change_the_default_delimiters()
//Act
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -212,14 +213,12 @@ public void throws_exeption_if_type_not_supported()
//Arrange
var sut = new TemplateEngine(GetAWrongTemplateDataModelDummy(), "<TagName>${DummyObjectProp1}</TagName>"); //SUT = [S]ystem [U]nder [T]est


//Assert
Assert.Throws<NotSupportedException>(delegate
{
//Act
sut.CreateStringFromTemplate();
});

}
[Test]
public void throws_excepton_if_file_load_fail()
Expand Down Expand Up @@ -264,7 +263,6 @@ public void can_handle_return_values_from_a_method(string methodName, string ret
//Act
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -281,7 +279,6 @@ public void can_handle_return_values_from_IntReturningMethod()
//Act
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -299,7 +296,6 @@ public void can_handle_return_values_from_DoubleReturningMethod()
//Act
string ReturnString = sut.CreateStringFromTemplate();


//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand Down Expand Up @@ -359,7 +355,6 @@ public void can_handle_date_values_from_propertys()
//Act Ausführen der zu testenden Funktion
string ReturnString = sut.CreateStringFromTemplate();


//Assert Prüfen der Ergebnisse
Assert.AreEqual(ShouldReturnString, ReturnString);
}
Expand All @@ -380,6 +375,5 @@ public void can_create_and_use_SpecificCulture()
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}

}
}
}
4 changes: 4 additions & 0 deletions MbSoftLab.TemplateEngine.Core.Tests/UnitTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ public TemplateDataModelDummy GetTemplateDataModelDummy()

return templateDataModelFake;
}
public string GetDummyJson()
{
return System.IO.File.ReadAllText("DummyJsonData.json");
}
public TemplateDataModelDummyWithList GetTemplateDataModelDummyWithListAndMethod()
{
TemplateDataModelDummyWithList templateDataModelFake = new TemplateDataModelDummyWithList
Expand Down
99 changes: 99 additions & 0 deletions MbSoftLab.TemplateEngine.Core/Documentation.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AssemblyVersion>1.0.7.0</AssemblyVersion>
<FileVersion>1.0.7.0</FileVersion>
<Version>1.0.7</Version>
<PackageVersion>1.0.7</PackageVersion>
<AssemblyVersion>1.0.8.0</AssemblyVersion>
<FileVersion>1.0.8.0</FileVersion>
<Version>1.0.8</Version>
<PackageVersion>1.0.8-preview</PackageVersion>
<Description>This StringTemplateEngine can replace values from Classpropertys and methods in stringtemplates</Description>
<DocumentationFile>Documentation.xml</DocumentationFile>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
Expand Down
13 changes: 3 additions & 10 deletions MbSoftLab.TemplateEngine.Core/TemplateEngine.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text.Json;

namespace MbSoftLab.TemplateEngine.Core
{
Expand Down Expand Up @@ -93,22 +94,14 @@ public TemplateEngine(T templateDataModel)
{
_templateDataModel = templateDataModel;
}

public TemplateEngine()
{

}

#endregion
/// <summary>
/// Loads a Templatestring from File
/// </summary>
/// <param name="path">Path to File with Templatestring.</param>
public void LoadTemplateFromFile(string path)
{
TemplateString = System.IO.File.ReadAllText(path);
}


/// <summary>
/// Replaces all Propertys of templateDataModel in stringTemplate. The Popertynames from templateDataModel a the name of ${Placeholder} have to be equal.
/// Example: public string MyProperty => ${MyProperty}
Expand Down
Loading

0 comments on commit 1b2f992

Please sign in to comment.