Beispiel #1
0
        public void GeneratePO_Error()
        {
            #region 1. Setup / Arrange
            var orgServiceMock = new Mock <IOrganizationService>();
            var orgService     = orgServiceMock.Object;
            var orgTracingMock = new Mock <ITracingService>();
            var orgTracing     = orgTracingMock.Object;

            #region Product Entity Collection
            var ProductCollection = new EntityCollection
            {
                EntityName = "product",
                Entities   =
                {
                    new Entity
                    {
                        Id          = Guid.NewGuid(),
                        LogicalName = "product",
                        EntityState = EntityState.Created,
                        Attributes  = new AttributeCollection
                        {
                            { "gsc_modelyear", "2016" }
                        }
                    }
                }
            };
            #endregion

            #region Vendor Entity Collection
            var VendorCollection = new EntityCollection()
            {
                EntityName = "gsc_cmn_vendor",
                Entities   =
                {
                }
            };
            #endregion

            #region CFO Quantity Entity Collection
            var CFOQuantityCollection = new EntityCollection()
            {
                EntityName = "gsc_sls_committedfirmorderquantity",
                Entities   =
                {
                    new Entity
                    {
                        Id          = Guid.NewGuid(),
                        LogicalName = "gsc_sls_committedfirmorderquantity",
                        Attributes  = new AttributeCollection
                        {
                            { "gsc_committedfirmorderquantitypn", "CFO06272016" },
                            { "gsc_cfodealerid",                  new EntityReference("dealer", new Guid("5ebda07e-0a26-e611-80d8-00155d010e2c"))
                                {
                                    Name = "Citimotors"
                                } },
                            { "gsc_cfobranchid",                  new EntityReference("branch", new Guid("5ebda07e-0a26-e611-80d8-00155d010e2c"))
                                {
                                    Name = "Branch 1"
                                } }
                        }
                    }
                }
            };
            #endregion

            #region CFO Quantity Details Entity Collection
            var CFOQuantityDetailsCollection = new EntityCollection()
            {
                EntityName = "gsc_sls_committedfirmorderquantitydetail",
                Entities   =
                {
                    new Entity
                    {
                        Id          = Guid.NewGuid(),
                        LogicalName = "gsc_sls_committedfirmorderquantitydetail",
                        Attributes  = new AttributeCollection
                        {
                            { "gsc_selected",                     true                                  },
                            { "gsc_committedfirmorderquantityid", new EntityReference(CFOQuantityCollection.EntityName, CFOQuantityCollection.Entities[0].Id) },
                            { "gsc_vehiclebasemodelid",           new EntityReference("basemodel", new Guid("5ebda07e-0a26-e611-80d8-00155d010e2c"))
                                {
                                    Name = "Mirage"
                                } },
                            { "gsc_productid",                    new EntityReference(ProductCollection.EntityName, ProductCollection.Entities[0].Id)
                                {
                                    Name = "Mirage GLX"
                                } },
                            { "gsc_modelcode",                    "123"                                 },
                            { "gsc_optioncode",                   "456"                                 },
                            { "gsc_vehiclecolorid",               new EntityReference("color", new Guid("5ebda07e-0a26-e611-80d8-00155d010e2c"))
                                {
                                    Name = "Black"
                                } },
                            { "gsc_orderquantity",                                                    2 },
                            { "gsc_remainingallocatedquantity",                                       6 }
                        }
                    }
                }
            };
            #endregion

            orgServiceMock.Setup((service => service.RetrieveMultiple(
                                      It.Is <QueryExpression>(expression => expression.EntityName == CFOQuantityCollection.EntityName)
                                      ))).Returns(CFOQuantityCollection);

            orgServiceMock.Setup((service => service.RetrieveMultiple(
                                      It.Is <QueryExpression>(expression => expression.EntityName == ProductCollection.EntityName)
                                      ))).Returns(ProductCollection);

            orgServiceMock.Setup((service => service.RetrieveMultiple(
                                      It.Is <QueryExpression>(expression => expression.EntityName == VendorCollection.EntityName)
                                      ))).Returns(VendorCollection);
            #endregion

            #region 2. Call/Action

            var           CFOQuantityHandler  = new CommittedFirmOrderQuantityDetailHandler(orgService, orgTracing);
            List <Entity> cfoQuantityEntities = CFOQuantityHandler.GeneratePO(CFOQuantityDetailsCollection.Entities[0]);

            #endregion

            #region 3. Verify
            //Vehicle Purchase Order
            Assert.AreEqual(null, cfoQuantityEntities);
            #endregion
        }
Beispiel #2
0
        public void GeneratePO_CFOStatusNotUpdated()
        {
            #region 1. Setup / Arrange
            var orgServiceMock = new Mock <IOrganizationService>();
            var orgService     = orgServiceMock.Object;
            var orgTracingMock = new Mock <ITracingService>();
            var orgTracing     = orgTracingMock.Object;

            #region Product Entity Collection
            var ProductCollection = new EntityCollection
            {
                EntityName = "product",
                Entities   =
                {
                    new Entity
                    {
                        Id          = Guid.NewGuid(),
                        LogicalName = "product",
                        EntityState = EntityState.Created,
                        Attributes  = new AttributeCollection
                        {
                            { "gsc_modelyear", "2016" }
                        }
                    }
                }
            };
            #endregion

            #region Vendor Entity Collection
            var VendorCollection = new EntityCollection()
            {
                EntityName = "gsc_cmn_vendor",
                Entities   =
                {
                    new Entity
                    {
                        Id          = Guid.NewGuid(),
                        LogicalName = "gsc_cmn_vendor",
                        Attributes  = new AttributeCollection
                        {
                            { "gsc_vendornamepn", "MMPC" }
                        }
                    }
                }
            };
            #endregion

            #region CFO Quantity Entity Collection
            var CFOQuantityCollection = new EntityCollection()
            {
                EntityName = "gsc_sls_committedfirmorderquantity",
                Entities   =
                {
                    new Entity
                    {
                        Id          = Guid.NewGuid(),
                        LogicalName = "gsc_sls_committedfirmorderquantity",
                        Attributes  = new AttributeCollection
                        {
                            { "gsc_committedfirmorderquantitypn", "CFO06272016"                 },
                            { "gsc_cfodealerid",                  new EntityReference("dealer", new Guid("5ebda07e-0a26-e611-80d8-00155d010e2c"))
                                {
                                    Name = "Citimotors"
                                } },
                            { "gsc_cfobranchid",                  new EntityReference("branch", new Guid("5ebda07e-0a26-e611-80d8-00155d010e2c"))
                                {
                                    Name = "Branch 1"
                                } },
                            { "gsc_cfostatus",                    new OptionSetValue(100000000) }
                        }
                    }
                }
            };
            #endregion

            #region CFO Quantity Details Entity Collection
            var CFOQuantityDetailsCollection = new EntityCollection()
            {
                EntityName = "gsc_sls_committedfirmorderquantitydetail",
                Entities   =
                {
                    new Entity
                    {
                        Id          = Guid.NewGuid(),
                        LogicalName = "gsc_sls_committedfirmorderquantitydetail",
                        Attributes  = new AttributeCollection
                        {
                            { "gsc_selected",                     true                                  },
                            { "gsc_committedfirmorderquantityid", new EntityReference(CFOQuantityCollection.EntityName, CFOQuantityCollection.Entities[0].Id) },
                            { "gsc_vehiclebasemodelid",           new EntityReference("basemodel", new Guid("5ebda07e-0a26-e611-80d8-00155d010e2c"))
                                {
                                    Name = "Mirage"
                                } },
                            { "gsc_productid",                    new EntityReference(ProductCollection.EntityName, ProductCollection.Entities[0].Id)
                                {
                                    Name = "Mirage GLX"
                                } },
                            { "gsc_modelcode",                    "123"                                 },
                            { "gsc_optioncode",                   "456"                                 },
                            { "gsc_vehiclecolorid",               new EntityReference("color", new Guid("5ebda07e-0a26-e611-80d8-00155d010e2c"))
                                {
                                    Name = "Black"
                                } },
                            { "gsc_orderquantity",                                                    6 },
                            { "gsc_remainingallocatedquantity",                                       6 }
                        }
                    },
                    new Entity
                    {
                        Id          = Guid.NewGuid(),
                        LogicalName = "gsc_sls_committedfirmorderquantitydetail",
                        Attributes  = new AttributeCollection
                        {
                            { "gsc_selected",                     true                                  },
                            { "gsc_committedfirmorderquantityid", new EntityReference(CFOQuantityCollection.EntityName, CFOQuantityCollection.Entities[0].Id) },
                            { "gsc_vehiclebasemodelid",           new EntityReference("basemodel", new Guid("5ebda07e-0a26-e611-80d8-00155d010e2c"))
                                {
                                    Name = "Mirage"
                                } },
                            { "gsc_productid",                    new EntityReference(ProductCollection.EntityName, ProductCollection.Entities[0].Id)
                                {
                                    Name = "Mirage GLX"
                                } },
                            { "gsc_modelcode",                    "123"                                 },
                            { "gsc_optioncode",                   "456"                                 },
                            { "gsc_vehiclecolorid",               new EntityReference("color", new Guid("5ebda07e-0a26-e611-80d8-00155d010e2c"))
                                {
                                    Name = "Black"
                                } },
                            { "gsc_orderquantity",                                                    0 },
                            { "gsc_remainingallocatedquantity",                                       3 }
                        }
                    }
                }
            };
            #endregion

            orgServiceMock.Setup((service => service.RetrieveMultiple(
                                      It.Is <QueryExpression>(expression => expression.EntityName == CFOQuantityCollection.EntityName)
                                      ))).Returns(CFOQuantityCollection);

            orgServiceMock.Setup((service => service.RetrieveMultiple(
                                      It.Is <QueryExpression>(expression => expression.EntityName == ProductCollection.EntityName)
                                      ))).Returns(ProductCollection);

            orgServiceMock.Setup((service => service.RetrieveMultiple(
                                      It.Is <QueryExpression>(expression => expression.EntityName == VendorCollection.EntityName)
                                      ))).Returns(VendorCollection);

            orgServiceMock.Setup((service => service.RetrieveMultiple(
                                      It.Is <QueryExpression>(expression => expression.EntityName == CFOQuantityDetailsCollection.EntityName)
                                      ))).Returns(CFOQuantityDetailsCollection);

            orgServiceMock.Setup((service => service.Update(It.Is <Entity>(entity => entity.LogicalName == CFOQuantityCollection.Entities[0].LogicalName)))).Callback <Entity>(s => CFOQuantityCollection.Entities[0] = s);

            orgServiceMock.Setup(service => service.Retrieve(
                                     It.IsAny <string>(),
                                     It.IsAny <Guid>(),
                                     It.IsAny <ColumnSet>())).Returns(CFOQuantityDetailsCollection.Entities[0]);

            orgServiceMock.Setup((service => service.Update(It.Is <Entity>(entity => entity.LogicalName == CFOQuantityDetailsCollection.Entities[0].LogicalName)))).Callback <Entity>(s => CFOQuantityDetailsCollection.Entities[0] = s);


            #endregion

            #region 2. Call/Action

            var           CFOQuantityHandler  = new CommittedFirmOrderQuantityDetailHandler(orgService, orgTracing);
            List <Entity> cfoQuantityEntities = CFOQuantityHandler.GeneratePO(CFOQuantityDetailsCollection.Entities[0]);

            #endregion

            #region 3. Verify
            //Vehicle Purchase Order
            Assert.AreEqual(CFOQuantityCollection.Entities[0].GetAttributeValue <String>("gsc_committedfirmorderquantitypn"),
                            cfoQuantityEntities[0].GetAttributeValue <String>("gsc_cfonumber"));
            Assert.AreEqual(VendorCollection.Entities[0].Id,
                            cfoQuantityEntities[0].GetAttributeValue <EntityReference>("gsc_vendorid").Id);
            Assert.AreEqual(CFOQuantityCollection.Entities[0].GetAttributeValue <EntityReference>("gsc_cfodealerid").Id,
                            cfoQuantityEntities[0].GetAttributeValue <EntityReference>("gsc_todealerid").Id);
            Assert.AreEqual(CFOQuantityCollection.Entities[0].GetAttributeValue <EntityReference>("gsc_cfobranchid").Id,
                            cfoQuantityEntities[0].GetAttributeValue <EntityReference>("gsc_tobranchid").Id);

            //Vehicle Purchase Order Item
            Assert.AreEqual(cfoQuantityEntities[0].Id,
                            cfoQuantityEntities[1].GetAttributeValue <EntityReference>("gsc_purchaseorderid").Id);
            Assert.AreEqual(CFOQuantityDetailsCollection.Entities[0].GetAttributeValue <EntityReference>("gsc_vehiclebasemodelid").Id,
                            cfoQuantityEntities[1].GetAttributeValue <EntityReference>("gsc_basemodelid").Id);
            Assert.AreEqual(CFOQuantityDetailsCollection.Entities[0].GetAttributeValue <EntityReference>("gsc_productid").Id,
                            cfoQuantityEntities[1].GetAttributeValue <EntityReference>("gsc_productid").Id);
            Assert.AreEqual(CFOQuantityDetailsCollection.Entities[0].GetAttributeValue <String>("gsc_modelcode"),
                            cfoQuantityEntities[1].GetAttributeValue <String>("gsc_modelcode"));
            Assert.AreEqual(CFOQuantityDetailsCollection.Entities[0].GetAttributeValue <String>("gsc_optioncode"),
                            cfoQuantityEntities[1].GetAttributeValue <String>("gsc_optioncode"));
            Assert.AreEqual(ProductCollection.Entities[0].GetAttributeValue <String>("gsc_modelyear"),
                            cfoQuantityEntities[1].GetAttributeValue <String>("gsc_modelyear"));
            Assert.AreEqual(CFOQuantityDetailsCollection.Entities[0].GetAttributeValue <EntityReference>("gsc_vehiclecolorid").Id,
                            cfoQuantityEntities[1].GetAttributeValue <EntityReference>("gsc_vehiclecolorid").Id);

            //CFO Quantity Detail
            Assert.AreEqual(false, CFOQuantityDetailsCollection.Entities[0].GetAttributeValue <Boolean>("gsc_selected"));
            Assert.AreEqual(0, CFOQuantityDetailsCollection.Entities[0].GetAttributeValue <Int32>("gsc_remainingallocatedquantity"));

            //CFO Status
            Assert.AreEqual(100000000, CFOQuantityCollection.Entities[0].GetAttributeValue <OptionSetValue>("gsc_cfostatus").Value);

            #endregion
        }