コード例 #1
0
        public void MapSetsDataRecorderMetaDataToResultOfMetaDataFactoryCall()
        {
            const int organizationRoleUserCreatorId = 23;
            var       dateCreated = new DateTime(2001, 1, 1);
            var       expectedDataRecorderMetaData = new DataRecorderMetaData();
            var       orderDetailEntity            = GetValidOrderDetailEntity();

            orderDetailEntity.DateCreated = dateCreated;
            orderDetailEntity.OrganizationRoleUserCreatorId = organizationRoleUserCreatorId;

            Expect.Call(_mockedDataRecorderMetaDataFactory.CreateDataRecorderMetaData
                            (organizationRoleUserCreatorId, dateCreated)).
            Return(expectedDataRecorderMetaData);
            Expect.Call(_mockedOrderItemStatusFactory.CreateOrderItemStatus
                            ((OrderItemType)orderDetailEntity.OrderItem.Type, orderDetailEntity.Status)).
            Return(FakeOrderItemStatus.StatusZero);

            _mocks.ReplayAll();
            OrderDetail orderDetail = _mapper.Map(orderDetailEntity);

            _mocks.VerifyAll();

            Assert.AreEqual(expectedDataRecorderMetaData, orderDetail.DataRecorderMetaData,
                            "The OrderDetail's DataRecorderMetaData was not set correctly.");
        }
コード例 #2
0
        public void PlaceOrderSavesTwoEntitiesWhenOneItemOrdered()
        {
            const int       quantity = 1;
            const int       forOrganizationRoleUserId = 3;
            const int       dataRecorderCreatorId     = 4;
            const OrderType typeOfOrderToPlace        = OrderType.Retail;
            var             fakeOrderable             = new FakeOrderable();

            Expect.Call(_orderFactory.CreateNewOrder(typeOfOrderToPlace, dataRecorderCreatorId)).
            Return(new Order {
                OrderDetails = new List <OrderDetail>()
            });
            Expect.Call(_orderDetailFactory.CreateNewOrderDetail(fakeOrderable, quantity,
                                                                 forOrganizationRoleUserId, dataRecorderCreatorId, null, null, null)).
            Return(new OrderDetail());
            Expect.Call(_orderItemStatusFactory.CreateOrderItemStatus(0, 0)).IgnoreArguments().
            Return(FakeOrderItemStatus.IncompleteFakeStatus);

            // Expecting persistence of two entities.
            Expect.Call(_orderRepository.SaveOrder(null)).IgnoreArguments().
            Return(new Order());
            Expect.Call(_orderItemRepository.SaveOrderItem(fakeOrderable.Id, fakeOrderable.OrderItemType))
            .Return(new FakeOrderItem());

            _mocks.ReplayAll();
            _orderController.AddItem(fakeOrderable, quantity,
                                     forOrganizationRoleUserId, dataRecorderCreatorId);
            _orderController.PlaceOrder(typeOfOrderToPlace, dataRecorderCreatorId);
            _mocks.VerifyAll();
        }
コード例 #3
0
        public void AddItem(IOrderable itemToOrder, int quantity, long forOrganizationRoleUserId,
                            long dataRecorderCreatorId, SourceCode sourceCode, EventCustomer eventCustomer,
                            ShippingDetail shippingDetail, OrderStatusState orderStatusState, long?sourceId = null)
        {
            if (sourceId == null && (itemToOrder is EventPackage || itemToOrder is EventTest))
            {
                var customerId = forOrganizationRoleUserId;
                if (itemToOrder is EventTest)
                {
                    var preApprovedTestList = _preApprovedTestRepository.GetByCustomerId(customerId).Select(x => x.TestId);
                    if (preApprovedTestList.Contains(((EventTest)itemToOrder).TestId))
                    {
                        sourceId = (long)OrderSource.PreApproved;
                    }
                }
                else if (itemToOrder is EventPackage)
                {
                    var preApprovedPackageList = _preApprovedPackageRepository.GetByCustomerId(customerId).Select(x => x.PackageId);
                    if (preApprovedPackageList.Contains(((EventPackage)itemToOrder).PackageId))
                    {
                        sourceId = (long)OrderSource.PreApproved;
                    }
                }
                if (sourceId == null)
                {
                    var oru = _organizationRoleUserRepository.GetOrganizationRoleUser(dataRecorderCreatorId);
                    if (oru.RoleId == (long)Roles.FranchiseeAdmin)
                    {
                        sourceId = (long)OrderSource.Admin;
                    }
                    else if (oru.RoleId == (long)Roles.CallCenterRep)
                    {
                        sourceId = (long)OrderSource.CallCenter;
                    }
                    else if (oru.RoleId == (long)Roles.Technician)
                    {
                        sourceId = (long)OrderSource.Technician;
                    }
                    else if (oru.RoleId == (long)Roles.NursePractitioner)
                    {
                        sourceId = (long)OrderSource.NursePractioner;
                    }
                }
            }


            OrderDetail orderDetail = _orderDetailFactory.CreateNewOrderDetail(itemToOrder, quantity,
                                                                               forOrganizationRoleUserId,
                                                                               dataRecorderCreatorId,
                                                                               sourceCode, eventCustomer, shippingDetail, sourceId);

            orderDetail.OrderItemStatus = _orderItemStatusFactory.CreateOrderItemStatus(itemToOrder.OrderItemType,
                                                                                        (int)orderStatusState);

            var pair = new OrderedPair <OrderDetail, IOrderable>(orderDetail, itemToOrder);

            _lineItems.Add(pair);
        }
コード例 #4
0
        public void CreateNewOrderDetailCreatesOrderItemStatusInInitialStateWithOrderableOrderItemType()
        {
            var orderable = new FakeOrderable();

            Expect.Call(_orderItemStatusFactory.CreateOrderItemStatus(orderable.OrderItemType,
                                                                      (int)OrderStatusState.Initial)).Return(null);
            Expect.Call(_dataRecorderMetaDataFactory.CreateDataRecorderMetaData(0)).IgnoreArguments().
            Return(null);

            _mocks.ReplayAll();
            _orderDetailFactory.CreateNewOrderDetail(orderable, 1, 0, 0, null, null, null);
            _mocks.VerifyAll();
        }
コード例 #5
0
        protected override void MapDomainFields(OrderDetailEntity entity, OrderDetail domainObjectToMapTo)
        {
            NullArgumentChecker.CheckIfNull(entity.OrderItem, "entity.OrderItem",
                                            "The OrderItem associated with the given OrderDetail must be provided.");

            OrderItemStatus orderItemStatus = _orderItemStatusFactory.CreateOrderItemStatus
                                                  ((OrderItemType)entity.OrderItem.Type, entity.Status);
            DataRecorderMetaData dataRecorderMetaData = _dataRecorderMetaDataFactory.
                                                        CreateDataRecorderMetaData(entity.OrganizationRoleUserCreatorId, entity.DateCreated);

            domainObjectToMapTo.Id          = entity.OrderDetailId;
            domainObjectToMapTo.OrderId     = entity.OrderId;
            domainObjectToMapTo.OrderItemId = entity.OrderItemId;
            domainObjectToMapTo.ForOrganizationRoleUserId = entity.ForOrganizationRoleUserId;
            domainObjectToMapTo.Description          = entity.Description;
            domainObjectToMapTo.Quantity             = entity.Quantity;
            domainObjectToMapTo.Price                = entity.Price;
            domainObjectToMapTo.DataRecorderMetaData = dataRecorderMetaData;
            domainObjectToMapTo.OrderItemStatus      = orderItemStatus;
            domainObjectToMapTo.DetailType           = (OrderItemType)entity.OrderItem.Type;
            domainObjectToMapTo.SourceId             = entity.SourceId;
        }
コード例 #6
0
        public OrderDetail CreateNewOrderDetail(IOrderable orderable, int quantity,
                                                long forOrganizationRoleUserId, long dataRecorderCreatorId, SourceCode sourceCode,
                                                EventCustomer eventCustomer, ShippingDetail shippingDetail, long?sourceId = null)
        {
            if (orderable == null)
            {
                throw new ArgumentNullException("orderable");
            }
            if (orderable.Id == 0)
            {
                throw new InvalidOperationException("itemToOrder must already exist in the database.");
            }
            if (quantity < 1)
            {
                throw new ArgumentOutOfRangeException("quantity", "The quantity must be at least 1.");
            }
            DataRecorderMetaData dataRecorderMetaData = _dataRecorderMetaDataFactory.
                                                        CreateDataRecorderMetaData(dataRecorderCreatorId);
            OrderItemStatus orderItemStatus = _orderItemStatusFactory.CreateOrderItemStatus(orderable.
                                                                                            OrderItemType, (int)OrderStatusState.Initial);

            decimal price = orderable.Price;

            // TODO: Test source code logic.
            SourceCodeOrderDetail sourceCodeOrderDetail = null;

            if (sourceCode != null)
            {
                sourceCodeOrderDetail = new SourceCodeOrderDetail
                {
                    Amount       = sourceCode.CouponValue,
                    SourceCodeId = sourceCode.Id,
                    IsActive     = true,
                    OrganizationRoleUserCreatorId =
                        dataRecorderMetaData.DataRecorderCreator.Id
                };
            }

            EventCustomerOrderDetail eventCustomerOrderDetail = null;

            if (eventCustomer != null)
            {
                eventCustomerOrderDetail = new EventCustomerOrderDetail
                {
                    EventCustomerId = eventCustomer.Id,
                    IsActive        = true
                };
            }

            ShippingDetailOrderDetail shippingDetailOrderDetail = null;

            if (shippingDetail != null)
            {
                shippingDetailOrderDetail = new ShippingDetailOrderDetail
                {
                    ShippingDetailId = shippingDetail.Id,
                    IsActive         = true
                };
            }

            return(new OrderDetail
            {
                Description = orderable.Description,
                Price = price,
                Quantity = quantity,
                DetailType = orderable.OrderItemType,
                DataRecorderMetaData = dataRecorderMetaData,
                ForOrganizationRoleUserId = forOrganizationRoleUserId,
                OrderItemStatus = orderItemStatus,
                SourceCodeOrderDetail = sourceCodeOrderDetail,
                EventCustomerOrderDetail = eventCustomerOrderDetail,
                ShippingDetailOrderDetails = new List <ShippingDetailOrderDetail> {
                    shippingDetailOrderDetail
                },
                SourceId = sourceId
            });
        }
コード例 #7
0
        public void CreateOrderItemStatusSetsStatusToCorrectTypeBasedOnOrderItemType()
        {
            OrderItemStatus orderItemStatus = _orderItemStatusFactory.CreateOrderItemStatus(OrderItemType.EventPackageItem, 0);

            Assert.IsInstanceOf <EventPackageItemStatus>(orderItemStatus, "The OrderItemStatus is of the incorrect type.");
        }