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."); }
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(); }
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); }
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(); }
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; }
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 }); }
public void CreateOrderItemStatusSetsStatusToCorrectTypeBasedOnOrderItemType() { OrderItemStatus orderItemStatus = _orderItemStatusFactory.CreateOrderItemStatus(OrderItemType.EventPackageItem, 0); Assert.IsInstanceOf <EventPackageItemStatus>(orderItemStatus, "The OrderItemStatus is of the incorrect type."); }