/// <summary> /// Rendert eine Mailmessage aus dem angegebenen Template und verwendet dabei die Daten aus dem Model. /// </summary> /// <param name="templateName">Name des Templates</param> /// <param name="model">Daten für das Template</param> /// <returns></returns> /// <exception cref="FileNotFoundException">Falls das Template nicht gefunden wird.</exception> public string RenderMessage(string templateName, ModelMap model) { _log.DebugFormat("Render message für das Template {0}.", templateName); CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; string template = LoadMailMessageTemplate(templateName, cultureInfo); Templater templater = new Templater(cultureInfo); string evaluatedTemplate = templater.FormatTemplate(template, model); return(evaluatedTemplate); }
public void TestFormatPathNotFoundDefaultNull() { /* Given: Ein Template mit zwei Platzhaltern, von denen im Model nur ein Pfad gefunden werden kann. */ const string TEMPLATE = "Heute ist der {today:d}. Weltuntergang ist am {doomsday:d}"; DateTime now = DateTime.Now; string expected = TEMPLATE.Replace("{today:d}", now.ToString("d")); ModelMap model = new ModelMap(); model.Add("today", now); /* When: Das Template ersetzt werden soll */ string result = new Templater().FormatTemplate(TEMPLATE, model); /* Then: Muss das gefundene ersetzt werden und das andere so belassen werden. */ Assert.AreEqual(expected, result); }
public void TestFormat() { /* Given: Ein Template, in welches ein Datum eingefügt werden soll. */ const string TEMPLATE = "Heute ist der {today:d}"; DateTime now = DateTime.Now; string expected = TEMPLATE.Replace("{today:d}", now.ToString("d")); ModelMap model = new ModelMap(); model.Add("today", now); /* When: Die Platzhalter ersetzt werden sollen */ string result = new Templater().FormatTemplate(TEMPLATE, model); /* Then: Muss das korrekte Datum im richtigen Format eingefügt wurden sein. */ Assert.AreEqual(expected, result); }
public void TestSimpleTemplate() { /* Given: Ein einfacher String mit einem Platzhalter */ const string TEMPLATE = "Das ist ein {value} Template"; const string PLACE_HOLDER_VALUE = "einfaches"; string expectedString = TEMPLATE.Replace("{value}", PLACE_HOLDER_VALUE); ModelMap model = new ModelMap(); model.Add("value", PLACE_HOLDER_VALUE); /* When: Das Template mit dem Platzhalter gefüllt werden soll */ string result = new Templater().FormatTemplate(TEMPLATE, model); /* Then: Muss der Platzhalter korrekt ersetzt werden. */ Assert.AreEqual(expectedString, result); }
public void TestFormatCulture() { /* Given: Eine Zeichenfolge, in welches ein Datum im englischen Format eingefügt werden soll. */ const string TEMPLATE = "Heute ist der {today:d}"; DateTime now = DateTime.Now; CultureInfo englishCulture = CultureInfo.GetCultureInfo("en"); string expected = TEMPLATE.Replace("{today:d}", now.ToString("d", englishCulture)); ModelMap model = new ModelMap(); model.Add("today", now); /* When: Die Platzhalter ersetzt werden sollen */ string result = new Templater(englishCulture).FormatTemplate(TEMPLATE, model); /* Then: Muss das Datum korrekt im englischen Datumsformat eingefügt sein. */ Assert.AreEqual(expected, result); }
public void TestReplaceTwice() { /* Given: Ein Template in dem ein Platzhalter mehrfach vorkommt. */ const string TEMPLATE = "{hello}, {hello}, {hello}. Wie geht's?"; const string HELLO_VALUE = "Hi"; string expected = TEMPLATE.Replace("{hello}", HELLO_VALUE); ModelMap model = new ModelMap(); model.Add("hello", HELLO_VALUE); /* When: Die Platzhalter ersetzt werden sollen */ string result = new Templater().FormatTemplate(TEMPLATE, model); /* Then: Müssen alle Platzhalter ersetzt werden. */ Assert.AreEqual(expected, result); }
public void TestDeepPathTemplate() { /* Given: Ein Template mit einem 3-teiligen Platzhalter-Pfad */ const string TEMPLATE = "Das ist ein {user.name.firstname} Template"; const string PLACE_HOLDER_VALUE = "Tobias"; string expectedString = TEMPLATE.Replace("{user.name.firstname}", PLACE_HOLDER_VALUE); /* When: Das Template gefüllt werden soll */ var name = new { firstname = PLACE_HOLDER_VALUE }; // ReSharper disable once RedundantAnonymousTypePropertyName : Readability var user = new { name = name }; ModelMap model = new ModelMap(); model.Add("user", user); string result = new Templater().FormatTemplate(TEMPLATE, model); /* Then: Müssen die Platzhalter korrekt ersetzt werden. */ Assert.AreEqual(expectedString, result); }
public void TestMultiplePlaceholdersOfDifferentDepth() { /* Given: Ein Template mit einem 3-teiligen Platzhalter-Pfad */ const string TEMPLATE = "Mein Name ist {user.name.firstname} {user.name.lastname}. Ich habe im Jahr {application.year} eine tolle Software namens {application.name} entwickelt."; const string FIRST_NAME_VALUE = "Tobias"; const string LAST_NAME_VALUE = "Jäkel"; const string APPLICATION_YEAR_VALUE = "2000"; const string APPLICATION_NAME_VALUE = "Bubble Sort"; string expectedString = TEMPLATE; expectedString = expectedString.Replace("{user.name.firstname}", FIRST_NAME_VALUE); expectedString = expectedString.Replace("{user.name.lastname}", LAST_NAME_VALUE); expectedString = expectedString.Replace("{application.year}", APPLICATION_YEAR_VALUE); expectedString = expectedString.Replace("{application.name}", APPLICATION_NAME_VALUE); /* When: Das Template gefüllt werden soll */ var name = new { firstname = FIRST_NAME_VALUE, lastname = LAST_NAME_VALUE }; var user = new { // ReSharper disable once RedundantAnonymousTypePropertyName : Readability name = name }; var app = new { name = APPLICATION_NAME_VALUE, year = APPLICATION_YEAR_VALUE }; ModelMap model = new ModelMap(); model.Add("user", user); model.Add("application", app); string result = new Templater().FormatTemplate(TEMPLATE, model); /* Then: Müssen die Platzhalter korrekt ersetzt werden. */ Assert.AreEqual(expectedString, result); }