public void Test_Invalidate_WhenDataChanged()
        {
            EntityType type = null;

            try
            {
                var scenario = CreateScenario("core:stringField", "'TestA '+Name");
                var field    = scenario.Item1;
                var inst     = scenario.Item2;
                type = scenario.Item3;

                // Get provider
                ICalculatedFieldProvider provider = Factory.CalculatedFieldProvider;

                // Run test
                object result = provider.GetCalculatedFieldValue(field.Id, inst.Id, CalculatedFieldSettings.Default);
                CheckResult(result, "TestA Name1");

                // Change data
                inst.Name = "Name9";
                inst.Save();

                result = provider.GetCalculatedFieldValue(field.Id, inst.Id, CalculatedFieldSettings.Default);
                CheckResult(result, "TestA Name9");
            }
            finally
            {
                if (type != null)
                {
                    type.Delete();
                }
            }
        }
        /// <summary>
        /// Fetch results for calculated fields.
        /// </summary>
        /// <remarks>
        /// Extension method for processing a single entity and single field.
        /// Script errors cause null result.
        /// </remarks>
        /// <param name="provider">The calculated field provider.</param>
        /// <param name="fieldId">The calculated field to evaluate.</param>
        /// <param name="entityId">The root entity for which the calculation is being evaluated.</param>
        /// <param name="settings">Additional settings.</param>
        /// <returns>Calculation results.</returns>
        public static object GetCalculatedFieldValue(this ICalculatedFieldProvider provider, long fieldId, long entityId, CalculatedFieldSettings settings)
        {
            if (provider == null)
            {
                throw new ArgumentNullException("provider");                // assert false
            }
            var entities = new[] { entityId };

            // Call provider
            var results = provider.GetCalculatedFieldValues(fieldId, entities, settings);

            // Extract results
            if (results == null)
            {
                throw new Exception("Unexpected null result.");             // assert false .. provider isn't following the rules
            }
            // Parse exception means there are no individual results
            if (results.ParseException != null)
            {
                return(null);
            }

            CalculatedFieldSingleResult singleResult = results.Entities.FirstOrDefault();

            if (singleResult == null)
            {
                throw new Exception("Could not load calculated field for entity. Likely cause that entity could not be loaded.");
            }

            // Return result
            return(singleResult.Result);
        }
        public void Test_FieldTypes(string fieldTypeAlias, string calc, string exected, Type expectedType)
        {
            var scenario = CreateScenario(fieldTypeAlias, calc);
            var field    = scenario.Item1;
            var inst     = scenario.Item2;

            // Get provider
            ICalculatedFieldProvider provider = Factory.CalculatedFieldProvider;

            // Run test
            object result = provider.GetCalculatedFieldValue(field.Id, inst.Id, CalculatedFieldSettings.Default);

            // Check results
            CheckResult(result, exected);
        }
        /// <summary>
        /// Fetch results for calculated fields.
        /// </summary>
        /// <remarks>
        /// Extension method for processing a single field.
        /// Script errors cause null result.
        /// </remarks>
        /// <param name="provider">The calculated field provider.</param>
        /// <param name="fieldId">The calculated field to evaluate.</param>
        /// <param name="entityIds">The root entities for which the calculation is being evaluated.</param>
        /// <param name="settings">Additional settings.</param>
        /// <returns>Calculation results.</returns>
        public static CalculatedFieldResult GetCalculatedFieldValues(this ICalculatedFieldProvider provider, long fieldId, IReadOnlyCollection <long> entityIds, CalculatedFieldSettings settings)
        {
            if (provider == null)
            {
                throw new ArgumentNullException("provider");                // assert false
            }
            var fields = new[] { fieldId };

            // Call provider
            var results = provider.GetCalculatedFieldValues(fields, entityIds, settings);

            // Extract results
            CalculatedFieldResult result = results.FirstOrDefault();

            if (result == null)
            {
                throw new Exception("Unexpected null result.");             // assert false .. provider isn't following the rules
            }
            return(result);
        }
示例#5
0
        public void CalculatedFieldProvider_Instance()
        {
            ICalculatedFieldProvider instance = Factory.CalculatedFieldProvider;

            Assert.That(instance, Is.Not.Null);
        }