public void JsonBuilder_DelayedExecution( bool delayExecution, bool propertyValueNull, JsPropertyType jsPropertyType) { // If the flag is set then initialise the 'property' value to null. if (propertyValueNull) { _elementDataMock.Setup(ed => ed.AsDictionary()). Returns(new Dictionary <string, object>() { { "property", null }, { "jsproperty", "var = 'some js code';" } }); } // Configure the property meta-data as needed for // this test. var testElementMetaData = new Dictionary <string, IElementPropertyMetaData>(); var p1 = new ElementPropertyMetaData(_testEngine.Object, "property", typeof(string), true, "", null, false, new List <string>() { "jsproperty" }); testElementMetaData.Add("property", p1); var p2 = new ElementPropertyMetaData(_testEngine.Object, "jsproperty", GetTypeFromEnum(jsPropertyType), true, "", null, delayExecution); testElementMetaData.Add("jsproperty", p2); _propertyMetaData.Add("test", testElementMetaData); // Run the test var json = TestIteration(1); // Verify that the *delayexecution and *evidenceproperties // values are populated as expected. JObject obj = JObject.Parse(json); var results = obj["test"].Children().ToList(); bool hasEvidenceProperties = results.Any(t => t.ToString().Contains("propertyevidenceproperties")); bool hasDelayedExecution = results.Any(t => t.ToString().Contains("jspropertydelayexecution")); Assert.AreEqual(delayExecution ? true : false, hasEvidenceProperties, $"The JSON data does {(delayExecution ? "not" : "")} " + $"contain a 'propertyevidenceproperties' property. " + $"Complete JSON: {json}"); Assert.AreEqual(delayExecution ? true : false, hasDelayedExecution, $"The JSON data does {(delayExecution ? "not" : "")} " + $"contain a 'jspropertydelayexecution' property. " + $"Complete JSON: {json}"); if (delayExecution) { var evidenceProperties = results.Single(t => (t as JProperty)?.Name.Equals("propertyevidenceproperties") ?? false) as JProperty; Assert.IsInstanceOfType(evidenceProperties.Value, typeof(JArray)); Assert.AreEqual("test.jsproperty", (evidenceProperties.Value as JArray).Single().ToString()); } }
public void JsonBuilder_JsProperty(JsPropertyType propertyType) { _elementDataMock.Setup(ed => ed.AsDictionary()). Returns(new Dictionary <string, object>() { { "jsproperty", "var = 'some js code';" } }); var testElementMetaData = new Dictionary <string, IElementPropertyMetaData>(); var p1 = new ElementPropertyMetaData(_testEngine.Object, "jsproperty", GetTypeFromEnum(propertyType), true, ""); testElementMetaData.Add("jsproperty", p1); _propertyMetaData.Add("test", testElementMetaData); var json = TestIteration(1); Assert.IsTrue(ContainsJavaScriptProperties(json), "The 'javascriptProperties' element is missing from the JSON. " + "Complete JSON: " + Environment.NewLine + json); }
private Type GetTypeFromEnum(JsPropertyType type) { Type result = typeof(JavaScript); switch (type) { case JsPropertyType.JavaScript: result = typeof(JavaScript); break; case JsPropertyType.IAspectPropertyValue: result = typeof(IAspectPropertyValue <JavaScript>); break; case JsPropertyType.AspectPropertyValue: result = typeof(AspectPropertyValue <JavaScript>); break; default: break; } return(result); }