Summary

Class:FakeXrmEasy.Services.DefaultEntityInitializerService
Assembly:FakeXrmEasy
File(s):C:\code\jordimontana82\fake-xrm-easy\FakeXrmEasy.Shared\Services\EntityInitializer\DefaultEntityInitializerService.cs
Covered lines:36
Uncovered lines:3
Coverable lines:39
Total lines:74
Line coverage:92.3%
Branch coverage:100%

Metrics

MethodCyclomatic ComplexitySequence CoverageBranch Coverage
.ctor()1100100
Initialize(...)7100100
Initialize(...)100

File(s)

C:\code\jordimontana82\fake-xrm-easy\FakeXrmEasy.Shared\Services\EntityInitializer\DefaultEntityInitializerService.cs

#LineLine coverage
 1using System;
 2using Microsoft.Xrm.Sdk;
 3using FakeXrmEasy.Extensions;
 4using System.Collections.Generic;
 5using Microsoft.Xrm.Sdk.Query;
 6
 7namespace FakeXrmEasy.Services
 8{
 9    public enum EntityInitializationLevel
 10    {
 11        Default = 0,  //Minimal initialization of common attributes
 12        PerEntity = 1 //More detailed initialization of entities, on an entity per entity basis
 13    }
 14    public class DefaultEntityInitializerService : IEntityInitializerService
 15    {
 16
 17        public Dictionary<string, IEntityInitializerService> InitializerServiceDictionary;
 18
 427619        public DefaultEntityInitializerService()
 427620        {
 427621            InitializerServiceDictionary = new Dictionary<string, IEntityInitializerService>()
 427622            {
 427623                { InvoiceDetailInitializerService.EntityLogicalName, new InvoiceDetailInitializerService() },
 427624                { InvoiceInitializerService.EntityLogicalName, new InvoiceInitializerService() }
 427625            };
 427626        }
 27
 28        public Entity Initialize(Entity e, Guid gCallerId, XrmFakedContext ctx, bool isManyToManyRelationshipEntity = fa
 2849429        {
 30            //Validate primary key for dynamic entities
 2849431            var primaryKey = string.Format("{0}id", e.LogicalName);
 2849432             if (!e.Attributes.ContainsKey(primaryKey))
 2229633            {
 2229634                e[primaryKey] = e.Id;
 2229635            }
 36
 2849437             if (isManyToManyRelationshipEntity)
 7238            {
 7239                return e;
 40            }
 41
 2842242            var CallerId = new EntityReference("systemuser", gCallerId); //Create a new instance by default
 43
 2842244            var now = DateTime.UtcNow;
 45
 2842246            e.SetValueIfEmpty("createdon", now);
 47
 48            //Overriden created on should replace created on
 2842249             if (e.Contains("overriddencreatedon"))
 650            {
 651                e["createdon"] = e["overriddencreatedon"];
 652            }
 53
 2842254            e.SetValueIfEmpty("modifiedon", now);
 2842255            e.SetValueIfEmpty("createdby", CallerId);
 2842256            e.SetValueIfEmpty("modifiedby", CallerId);
 2842257            e.SetValueIfEmpty("ownerid", CallerId);
 2842258            e.SetValueIfEmpty("statecode", new OptionSetValue(0)); //Active by default
 59
 2842260             if (ctx.InitializationLevel == EntityInitializationLevel.PerEntity)
 36061            {
 36062                 if (!string.IsNullOrEmpty(e.LogicalName) && InitializerServiceDictionary.ContainsKey(e.LogicalName))
 14463                    InitializerServiceDictionary[e.LogicalName].Initialize(e, gCallerId, ctx, isManyToManyRelationshipEn
 36064            }
 65
 2842266            return e;
 2849467        }
 68
 69        public Entity Initialize(Entity e, XrmFakedContext ctx, bool isManyToManyRelationshipEntity = false)
 070        {
 071            return this.Initialize(e, Guid.NewGuid(), ctx, isManyToManyRelationshipEntity);
 072        }
 73    }
 74}