Esempio n. 1
0
        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());
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }