using System; using System.Collections.Generic; using Newtonsoft.Json; using NUnit.Framework; using Serilog.Events; using ShareeBike.Model.Settings; using ShareeBike.Settings; namespace SharedBusinessLogic.Tests.Model.Settings { [TestFixture] public class TestJsonSettingsDictionary { /// Verifies that empty log fiel leads to expected default value and doesn not throw exceptions. [Test] public void TestGetCopriHostUri_NoFile() { Assert.That(JsonSettingsDictionary.GetCopriHostUri(new Dictionary()), Is.Null); } /// Verifies that empty log file leads to expected default value and doesn not throw exceptions. [Test] public void TestGetPolling() { // Serialize parameters. var dict = new Dictionary() .SetPollingParameters(new PollingParameters(new TimeSpan(0, 0, 0, 15, 0), false)); // Deserialize parameters. Assert.That( dict.GetPollingParameters(), Is.EqualTo(new PollingParameters(new TimeSpan(0, 0, 0, 15, 0), false))); } /// Verifies that empty log fiel leads to expected default value and doesn not throw exceptions. [Test] public void TestGetPolling_NoFile() { Assert.That(JsonSettingsDictionary.GetPollingParameters(new Dictionary()), Is.Null); } [Test] public void TestGetGetCopriHostUri() { var dict = new Dictionary() .SetCopriHostUri("http://1.2.3.4"); Assert.That( JsonSettingsDictionary.GetCopriHostUri(dict), Is.EqualTo(new Uri("http://1.2.3.4"))); } /// Verifies that empty log fiel leads to expected default value and doesn not throw exceptions. [Test] public void TestGetLoggingLevel() { var dict = new Dictionary() .SetMinimumLoggingLevel(0); // Verbose = 0 Assert.That( JsonSettingsDictionary.GetMinimumLoggingLevel(dict), Is.EqualTo(LogEventLevel.Verbose)); // LogEventLevel.Error = 4 } /// Verifies that empty log fiel leads to expected default value and doesn not throw exceptions. [Test] public void TestGetLoggingLevel_NoFile() { Assert.That(JsonSettingsDictionary.GetMinimumLoggingLevel(new Dictionary()), Is.Null); } [Test] public void TestGetAppVersion_FirstInstall() { var dict = new Dictionary(); Assert.That(JsonSettingsDictionary.GetAppVersion(dict), Is.Null); } [Test] public void TestGetAppVersion_LegacyTo115() { var dict = new Dictionary { { "AppVersion", "7.2.3.9" } }; Assert.That(JsonSettingsDictionary.GetAppVersion(dict), Is.EqualTo(new Version(7, 2, 3, 9))); dict = new Dictionary { { "AppVersion", "7.2.3" } }; Assert.That(JsonSettingsDictionary.GetAppVersion(dict), Is.EqualTo(new Version(7, 2, 3))); } [Test] public void TestGetAppVersion_Json() { var dict = new Dictionary { { "AppVersion", "\"3.1.2.117\"" } }; Assert.That(JsonSettingsDictionary.GetAppVersion(dict), Is.EqualTo(new Version(3, 1, 2, 117))); } [Test] public void TestSetAppVersion_Json() { var dict = new Dictionary() .SetAppVersion(new Version(47, 12, 3)); Assert.That(JsonSettingsDictionary.GetAppVersion(dict), Is.EqualTo(new Version(47, 12, 3))); } [Test] public void TestGetShowWhatsNew_FirstInstall() { var dict = new Dictionary(); Assert.That(JsonSettingsDictionary.GetWhatsNew(dict), Is.Null); } [Test] public void TestGetShowWhatsNew_Json() { var dict = new Dictionary { { "ShowWhatsNew", "\"3.1.2.117\"" } }; Assert.That(JsonSettingsDictionary.GetWhatsNew(dict), Is.EqualTo(new Version(3, 1, 2, 117))); dict = new Dictionary { { "ShowWhatsNew", "\"3.1.2\"" } }; Assert.That(JsonSettingsDictionary.GetWhatsNew(dict), Is.EqualTo(new Version(3, 1, 2))); } [Test] public void TestSetShowWhats_Json() { var dict = new Dictionary() .SetWhatsNew(new Version(47, 12, 3)); Assert.That(JsonSettingsDictionary.GetWhatsNew(dict), Is.EqualTo(new Version(47, 12, 3))); } [Test] public void TestGetEntryTNoLegacySettingsKeyNull() => Assert.That( JsonSettingsDictionary.GetEntry(null, new Dictionary()), Is.Null); [Test] public void TestGetEntryTNoLegacySettingsNull() => Assert.That( JsonSettingsDictionary.GetEntry("Hi", null), Is.Null); [Test] public void TestGetEntryTNoLegacyEntryNotFound() => Assert.That( JsonSettingsDictionary.GetEntry("Hi", new Dictionary { { "Ho", @"""Hu""" } }), Is.Null); [Test] public void TestGetEntryTNoLegacyEntryFound() => Assert.That( JsonSettingsDictionary.GetEntry("Hi", new Dictionary { { "Hi", @"""Ho""" } }), Is.EqualTo("Ho")); [Test] public void TestGetEntryT() => Assert.That( JsonSettingsDictionary.GetEntry("Hi", new Dictionary { { "Hi", @"""Ho""" } }, (value) => @"""Hey"""), Is.EqualTo("Hey")); [Test] public void TestGetActiveTheme() => Assert.That( JsonSettingsDictionary.GetActiveTheme(new Dictionary { { "Theme", @"""LastenradBayern""" } }), Is.EqualTo(typeof(ShareeBike.Themes.LastenradBayern).Name)); [Test] public void TestGetActiveThemeLegacy() => Assert.That( JsonSettingsDictionary.GetActiveTheme(new Dictionary { { "Theme", @"""ShareeBike.Themes.LastenradBayern""" } }), Is.EqualTo(typeof(ShareeBike.Themes.LastenradBayern).Name)); [Test] public void TestSetActiveTheme() { var settings = JsonSettingsDictionary.SetActiveTheme(new Dictionary(), @"LastenradBayern"); Assert.That( settings, Contains.Key("Theme")); settings = JsonSettingsDictionary.SetActiveTheme(new Dictionary(), @"LastenradBayern"); Assert.That( settings["Theme"], Is.EqualTo(JsonConvert.SerializeObject(typeof(ShareeBike.Themes.LastenradBayern).Name))); } [Test] public void TestGetStartupSettingsStartupPage() => Assert.That( JsonSettingsDictionary.GetStartupSettings(new Dictionary { { "StartupSettings", JsonConvert.SerializeObject(new StartupSettings { StartupPage = ShareeBike.ViewTypes.ContactPage}) } }).StartupPage, Is.EqualTo(ShareeBike.ViewTypes.ContactPage)); [Test] public void TestSetStartupSettingsStartupPage() { var settings = JsonSettingsDictionary.SetStartupSettings( new Dictionary(), new StartupSettings { StartupPage = ShareeBike.ViewTypes.ContactPage }); Assert.That( settings, Contains.Key("StartupSettings")); Assert.That( settings["StartupSettings"], Is.EqualTo(JsonConvert.SerializeObject(new StartupSettings { StartupPage = ShareeBike.ViewTypes.ContactPage }))); } } }