Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
        }