diff --git a/NucuCar.UnitTests/NucuCar.Domain.Tests/Utilities/FirebaseRestTranslatorTests.cs b/NucuCar.UnitTests/NucuCar.Domain.Tests/Utilities/FirebaseRestTranslatorTests.cs index 8481640..8b544d2 100644 --- a/NucuCar.UnitTests/NucuCar.Domain.Tests/Utilities/FirebaseRestTranslatorTests.cs +++ b/NucuCar.UnitTests/NucuCar.Domain.Tests/Utilities/FirebaseRestTranslatorTests.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using Newtonsoft.Json; using NucuCar.Domain.Utilities; @@ -6,6 +7,15 @@ using Xunit.Abstractions; namespace NucuCar.UnitTests.NucuCar.Domain.Tests.Utilities { + enum Season + { + Spring, + Summer, + Autumn, + Winter + } + + /* { "source":"NucuCar.Sensors", @@ -63,7 +73,7 @@ namespace NucuCar.UnitTests.NucuCar.Domain.Tests.Utilities } [Fact] - public void Test_FireBaseTranslator_Parse() + public void Test_FirebaseTranslator_Parse() { var expectedJson = "{\"name\":\"Test\",\"fields\":{\"source\":{\"stringValue\":\"NucuCar.Sensors\"},\"timestamp\":{\"stringValue\":\"2019-12-01T23:26:13.5537227+02:00\"},\"data\":{\"arrayValue\":{\"values\":[{\"mapValue\":{\"fields\":{\"sensor_state\":{\"integerValue\":2},\"cpu_temperature\":{\"doubleValue\":48.849998474121094},\"_id\":{\"stringValue\":\"CpuTemperature\"}}}},{\"mapValue\":{\"fields\":{\"sensor_state\":{\"integerValue\":2},\"temperature\":{\"doubleValue\":32.65},\"humidity\":{\"doubleValue\":100.0},\"pressure\":{\"doubleValue\":62228.49},\"voc\":{\"doubleValue\":0.0},\"_id\":{\"stringValue\":\"Bme680-Sensor\"}}}}]}}}}"; @@ -72,5 +82,125 @@ namespace NucuCar.UnitTests.NucuCar.Domain.Tests.Utilities var json = JsonConvert.SerializeObject(result); Assert.Equal(expectedJson, json); } + + [Fact] + public void Test_FirebaseTranslator_StringValue() + { + var data = new Dictionary() + { + ["myKey"] = "myValue" + }; + var expectedJson = "{\"name\":\"Test_FirebaseTranslator_StringValue\",\"fields\":{\"myKey\":{\"stringValue\":\"myValue\"}}}"; + var result = FirebaseRestTranslator.Translate("Test_FirebaseTranslator_StringValue", data); + var actualJson = JsonConvert.SerializeObject(result); + Assert.Equal(expectedJson, actualJson); + } + + [Fact] + public void Test_FirebaseTranslator_IntegerValue() + { + var data = new Dictionary() + { + ["myKey"] = 23 + }; + var expectedJson = "{\"name\":\"Test_FirebaseTranslator\",\"fields\":{\"myKey\":{\"integerValue\":23}}}"; + var result = FirebaseRestTranslator.Translate("Test_FirebaseTranslator", data); + var actualJson = JsonConvert.SerializeObject(result); + Assert.Equal(expectedJson, actualJson); + } + + [Fact] + public void Test_FirebaseTranslator_DoubleValue() + { + var data = new Dictionary() + { + ["myKey"] = 11.20 + }; + var expectedJson = "{\"name\":\"Test_FirebaseTranslator\",\"fields\":{\"myKey\":{\"doubleValue\":11.2}}}"; + var result = FirebaseRestTranslator.Translate("Test_FirebaseTranslator", data); + var actualJson = JsonConvert.SerializeObject(result); + Assert.Equal(expectedJson, actualJson); + } + + [Fact] + public void Test_FirebaseTranslator_BoolValue() + { + var data = new Dictionary() + { + ["myKey"] = false + }; + var expectedJson = "{\"name\":\"Test_FirebaseTranslator\",\"fields\":{\"myKey\":{\"booleanValue\":false}}}"; + var result = FirebaseRestTranslator.Translate("Test_FirebaseTranslator", data); + var actualJson = JsonConvert.SerializeObject(result); + Assert.Equal(expectedJson, actualJson); + } + + [Fact] + public void Test_FirebaseTranslator_TimestampValue() + { + var data = new Dictionary() + { + ["myKey"] = new DateTime(2020, 2, 29, 0, 0, 0, 0) + }; + var expectedJson = "{\"name\":\"Test_FirebaseTranslator\",\"fields\":{\"myKey\":{\"timestampValue\":\"2020-02-29T00:00:00\"}}}"; + var result = FirebaseRestTranslator.Translate("Test_FirebaseTranslator", data); + var actualJson = JsonConvert.SerializeObject(result); + Assert.Equal(expectedJson, actualJson); + } + + [Fact] + public void Test_FirebaseTranslator_EnumValue() + { + var data = new Dictionary() + { + ["myKey"] = Season.Winter + }; + var expectedJson = "{\"name\":\"Test_FirebaseTranslator\",\"fields\":{\"myKey\":{\"integerValue\":3}}}"; + var result = FirebaseRestTranslator.Translate("Test_FirebaseTranslator", data); + var actualJson = JsonConvert.SerializeObject(result); + Assert.Equal(expectedJson, actualJson); + } + + [Fact] + public void Test_FirebaseTranslator_ArrayValue() + { + var data = new Dictionary() + { + ["myKey"] = new List> + { + new Dictionary + { + ["arrayIndex0"] = 11.20 + }, + new Dictionary + { + ["arrayIndex1"] = "test" + } + } + }; + var expectedJson = "{\"name\":\"Test_FirebaseTranslator\",\"fields\":{\"myKey\":{\"arrayValue\":{\"values\":[{\"mapValue\":{\"fields\":{\"arrayIndex0\":{\"doubleValue\":11.2}}}},{\"mapValue\":{\"fields\":{\"arrayIndex1\":{\"stringValue\":\"test\"}}}}]}}}}"; + var result = FirebaseRestTranslator.Translate("Test_FirebaseTranslator", data); + var actualJson = JsonConvert.SerializeObject(result); + Assert.Equal(expectedJson, actualJson); + } + + [Fact] + public void Test_FirebaseTranslator_MapValue() + { + var data = new Dictionary() + { + ["myKey"] = new Dictionary + { + ["stringKey"] = "test", + ["boolKey"] = true, + ["intKey"] = 99 + } + }; + var expectedJson = "{\"name\":\"Test_FirebaseTranslator\",\"fields\":{\"myKey\":{\"mapValue\":{\"fields\":{\"stringKey\":{\"stringValue\":\"test\"},\"boolKey\":{\"booleanValue\":true},\"intKey\":{\"integerValue\":99}}}}}}"; + var result = FirebaseRestTranslator.Translate("Test_FirebaseTranslator", data); + var actualJson = JsonConvert.SerializeObject(result); + Assert.Equal(expectedJson, actualJson); + } + } } \ No newline at end of file