public void GivenValidTemplateJsonWithOptionalExpressions_WhenFactoryCreate_ThenTemplateCreated_Test(string json) { var templateContainer = JsonConvert.DeserializeObject <TemplateContainer>(json); var factory = new IotCentralJsonPathContentTemplateFactory(); var template = factory.Create(templateContainer); Assert.NotNull(template); var jsonPathTemplate = template as IotCentralJsonPathContentTemplate; Assert.NotNull(jsonPathTemplate); Assert.Equal("telemetry", jsonPathTemplate.TypeName); Assert.Equal("$..[?(@telemetry)]", jsonPathTemplate.TypeMatchExpression); Assert.Equal("$.deviceId", jsonPathTemplate.DeviceIdExpression); Assert.Equal("$.enqueuedTime", jsonPathTemplate.TimestampExpression); Assert.Equal("$.messageProperties.patientId", jsonPathTemplate.PatientIdExpression); Assert.Collection( jsonPathTemplate.Values, v => { Assert.True(v.Required); Assert.Equal("activity", v.ValueName); Assert.Equal("$.template.Activity", v.ValueExpression); }, v => { Assert.True(v.Required); Assert.Equal("bp_diastolic", v.ValueName); Assert.Equal("$.template.BloodPressure.Diastolic", v.ValueExpression); }); }
public void GivenInvalidTemplateTargetType_WhenFactoryCreate_ThenNullReturned_Test() { var templateContainer = new TemplateContainer(); var factory = new IotCentralJsonPathContentTemplateFactory(); var template = factory.Create(templateContainer); Assert.Null(template); }
public void GivenInvalidTemplateJsonMissingValueField_WhenFactoryCreate_ThenTemplateErrorReturned_Test(string json) { var templateContainer = JsonConvert.DeserializeObject <TemplateContainer>(json); var factory = new IotCentralJsonPathContentTemplateFactory(); var ex = Assert.Throws <InvalidTemplateException>(() => factory.Create(templateContainer)); Assert.NotNull(ex); Assert.Contains("ValueName", ex.Message); }
public void GivenInvalidTemplateBody_WhenFactoryCreate_ThenInvalidTemplateExceptionThrown_Test() { var templateContainer = new TemplateContainer { TemplateType = "IotCentralJsonPathContent", Template = null, }; var factory = new IotCentralJsonPathContentTemplateFactory(); var ex = Assert.Throws <InvalidTemplateException>(() => factory.Create(templateContainer)); Assert.NotNull(ex); }
public void GivenInvalidTemplateJsonMissingTypeMetadata_WhenFactoryCreate_ThenTemplateErrorReturned_Test(string json) { var templateContainer = JsonConvert.DeserializeObject <TemplateContainer>(json); var factory = new IotCentralJsonPathContentTemplateFactory(); var ex = Assert.Throws <AggregateException>(() => factory.Create(templateContainer)); Assert.NotNull(ex); Assert.Collection( ex.InnerExceptions, p => { Assert.IsType <InvalidTemplateException>(p); Assert.Contains("TypeName", ex.Message); }, p => { Assert.IsType <InvalidTemplateException>(p); Assert.Contains("TypeMatchExpression", ex.Message); }); }
public void GivenValidTemplateJson_WhenFactoryCreate_ThenTemplateCreated_Test(string json) { var templateContainer = JsonConvert.DeserializeObject <TemplateContainer>(json); var factory = new IotCentralJsonPathContentTemplateFactory(); var contentTemplate = factory.Create(templateContainer); Assert.NotNull(contentTemplate); Assert.IsType <LegacyMeasurementExtractor>(contentTemplate); var extractor = contentTemplate as MeasurementExtractor; Assert.IsType <JsonPathCalculatedFunctionContentTemplateAdapter <IotCentralJsonPathContentTemplate> >(extractor.Template); var jsonPathTemplate = (extractor.Template as JsonPathCalculatedFunctionContentTemplateAdapter <IotCentralJsonPathContentTemplate>).InnerTemplate; Assert.Equal("telemetry", jsonPathTemplate.TypeName); Assert.Equal("$..[?(@telemetry)]", jsonPathTemplate.TypeMatchExpression); Assert.Equal("$.deviceId", jsonPathTemplate.DeviceIdExpression); Assert.Equal("$.enqueuedTime", jsonPathTemplate.TimestampExpression); Assert.Null(jsonPathTemplate.PatientIdExpression); Assert.Collection( jsonPathTemplate.Values, v => { Assert.True(v.Required); Assert.Equal("activity", v.ValueName); Assert.Equal("$.template.Activity", v.ValueExpression); }, v => { Assert.True(v.Required); Assert.Equal("bp_diastolic", v.ValueName); Assert.Equal("$.template.BloodPressure.Diastolic", v.ValueExpression); }); }