예제 #1
0
        public void GetAvailableStates()
        {
            try
            {
                var     options = CreateNewContextOptions();
                Contact contact = ProcessingTestHelper.GenerateContact();
                Order   item;
                using (var db = new OrderContext(options))
                {
                    db.Contacts.Add(contact);
                    ProcessingTestHelper.PopulateDefaultOrderCtx(db);
                    var orderState = db.OrderStates.First();
                    var payment    = db.PaymentMethods.First();
                    var delivery   = db.DeliveryMethods.First();
                    var zone       = db.DeliveryZones.First();
                    item = ProcessingTestHelper.GenerateOrder(contact, orderState, payment, delivery, zone);
                    db.Set <Order>().Add(item);
                    db.SaveChanges();
                }
                using (var db = new OrderContext(options))
                {
                    var repository =
                        new odec.Processing.DAL.OrderProcessing(db);

                    IEnumerable <OrderState> result = null;
                    Assert.DoesNotThrow(() => result = repository.GetAvailableStates(item));
                    Assert.True(result != null && result.Any());
                }
            }
            catch (Exception ex)
            {
                LogEventManager.Logger.Error(ex);
                throw;
            }
        }
예제 #2
0
        public void Delete()
        {
            try
            {
                var     options = CreateNewContextOptions();
                Contact contact = ProcessingTestHelper.GenerateContact();
                using (var db = new OrderContext(options))
                {
                    db.Contacts.Add(contact);
                    ProcessingTestHelper.PopulateDefaultOrderCtx(db);
                }
                using (var db = new OrderContext(options))
                {
                    var repository = new OrderRepository(db);

                    var orderState = db.OrderStates.First();
                    var payment    = db.PaymentMethods.First();
                    var delivery   = db.DeliveryMethods.First();
                    var zone       = db.DeliveryZones.First();
                    var item       = ProcessingTestHelper.GenerateOrder(contact, orderState, payment, delivery, zone);
                    Assert.DoesNotThrow(() => repository.Save(item));
                    Assert.DoesNotThrow(() => repository.Delete(item));
                }
            }
            catch (Exception ex)
            {
                LogEventManager.Logger.Error(ex);
                throw;
            }
        }
예제 #3
0
        public void AddOrderDetails()
        {
            try
            {
                var options = Tester <OrderContext> .CreateNewContextOptions();

                var orderDetails = new List <OrderDetail>
                {
                    new OrderDetail
                    {
                        DiscountedCost    = 200,
                        EntityCount       = 20,
                        Total             = 4000,
                        JsonEntityDetails = JsonConvert.SerializeObject(new  { Id = 1, Name = "Hat", IsActive = true, Cost = 200 }),
                        MomentCost        = 200
                    },
                    new OrderDetail
                    {
                        DiscountedCost    = 300,
                        EntityCount       = 20,
                        Total             = 4000,
                        JsonEntityDetails = JsonConvert.SerializeObject(new  { Id = 2, Name = "Hat2", IsActive = true, Cost = 300 }),
                        MomentCost        = 300
                    },
                };
                var   contact = ProcessingTestHelper.GenerateContact();
                Order order;
                using (var db = new OrderContext(options))
                {
                    db.Contacts.Add(contact);
                    ProcessingTestHelper.PopulateDefaultOrderCtx(db);
                    var orderState1 = db.OrderStates.First();
                    var payment1    = db.PaymentMethods.First();
                    var delivery1   = db.DeliveryMethods.First();
                    var zone        = db.DeliveryZones.First();
                    order = ProcessingTestHelper.GenerateOrder(contact, orderState1, payment1, delivery1, zone);
                    db.Set <Order>().Add(order);
                    db.SaveChanges();
                }
                using (var db = new OrderContext(options))
                {
                    var repository =
                        new OrderRepository(db);
                    Assert.DoesNotThrow(() => repository.AddOrderDetails(orderDetails, order));
                    Assert.True(orderDetails.All(it => it.OrderId != 0));
                }
            }
            catch (Exception ex)
            {
                LogEventManager.Logger.Error(ex.Message, ex);
                throw;
            }
        }
예제 #4
0
        public void GetOrderDetailsByOrder()
        {
            try
            {
                var options = Tester <OrderContext> .CreateNewContextOptions();

                var   contact = ProcessingTestHelper.GenerateContact();
                Order order;
                using (var db = new OrderContext(options))
                {
                    db.Contacts.Add(contact);
                    ProcessingTestHelper.PopulateDefaultOrderCtx(db);
                    var orderState1 = db.OrderStates.First();
                    var payment1    = db.PaymentMethods.First();
                    var delivery1   = db.DeliveryMethods.First();
                    var zone        = db.DeliveryZones.First();
                    order = ProcessingTestHelper.GenerateOrder(contact, orderState1, payment1, delivery1, zone);
                    db.Set <Order>().Add(order);
                    var detailsOrder = ProcessingTestHelper.GenerateOrderDetail(order,
                                                                                new { Id = 1, Name = "Hat", Cost = 200 });
                    var detailsOrder2 = ProcessingTestHelper.GenerateOrderDetail(order,
                                                                                 new { Id = 2, Name = "Hat", Cost = 200 });
                    var detailsOrder3 = ProcessingTestHelper.GenerateOrderDetail(order,
                                                                                 new { Id = 3, Name = "Hat", Cost = 200 });
                    var detailsOrder4 = ProcessingTestHelper.GenerateOrderDetail(order,
                                                                                 new { Id = 4, Name = "Hat", Cost = 200 });
                    var detailsOrder5 = ProcessingTestHelper.GenerateOrderDetail(order,
                                                                                 new { Id = 5, Name = "Hat", Cost = 200 });
                    db.Set <OrderDetail>().AddRange(detailsOrder, detailsOrder2, detailsOrder3, detailsOrder4, detailsOrder5);
                    db.SaveChanges();
                }

                using (var db = new OrderContext(options))
                {
                    var repository =
                        new OrderRepository(db);
                    IEnumerable <OrderDetail> result = null;
                    Assert.DoesNotThrow(() => result = repository.GetOrderDetails(order));
                    Assert.True(result != null && result.Count() == 5);
                }
            }
            catch (Exception ex)
            {
                LogEventManager.Logger.Error(ex.Message, ex);
                throw;
            }
        }
        public void GetById()
        {
            try
            {
                var   options = CreateNewContextOptions();
                Order order;
                var   obj = new
                {
                    Id    = 1,
                    Name  = "Hat",
                    Price = 200
                };
                using (var db = new OrderContext(options))
                {
                    var contact = ProcessingTestHelper.GenerateContact();
                    ProcessingTestHelper.PopulateDefaultOrderCtx(db);
                    var orderState = db.OrderStates.First();
                    var payment    = db.PaymentMethods.First();
                    var delivery   = db.DeliveryMethods.First();
                    var zone       = db.DeliveryZones.First();
                    order = ProcessingTestHelper.GenerateOrder(contact, orderState, payment, delivery, zone);
                    db.Orders.Add(order);
                    db.SaveChanges();
                }
                using (var db = new OrderContext(options))
                {
                    var repository = new OrderDetailsRepository(db);

                    var item = ProcessingTestHelper.GenerateOrderDetail(order, obj);
                    Assert.DoesNotThrow(() => repository.Save(item));

                    Assert.DoesNotThrow(() => item = repository.GetById(item.Id));
                    Assert.DoesNotThrow(() => repository.Delete(item));
                    Assert.NotNull(item);
                    Assert.Greater(item.Id, 0);
                }
            }
            catch (Exception ex)
            {
                LogEventManager.Logger.Error(ex);
                throw;
            }
        }
예제 #6
0
        public void ChangeOrderStateById()
        {
            try
            {
                var options = Tester <OrderContext> .CreateNewContextOptions();

                var        contact = ProcessingTestHelper.GenerateContact();
                Order      order;
                OrderState resultState;
                using (var db = new OrderContext(options))
                {
                    db.Contacts.Add(contact);
                    ProcessingTestHelper.PopulateDefaultOrderCtx(db);
                    var orderState1 = db.OrderStates.First();
                    var payment1    = db.PaymentMethods.First();
                    var delivery1   = db.DeliveryMethods.First();
                    var zone        = db.DeliveryZones.First();
                    resultState = db.OrderStates.Last();
                    order       = ProcessingTestHelper.GenerateOrder(contact, orderState1, payment1, delivery1, zone);
                    db.Set <Order>().Add(order);
                    db.SaveChanges();
                }

                using (var db = new OrderContext(options))
                {
                    var repository =
                        new odec.Processing.DAL.OrderProcessing(db);
                    Assert.DoesNotThrow(() => repository.ChangeOrderState(order.Id, resultState));
                    order = db.Set <Order>().Single(it => it.Id == order.Id);
                    Assert.True(order.OrderStateId == resultState.Id);
                }
            }
            catch (Exception ex)
            {
                LogEventManager.Logger.Error(ex);
                throw;
            }
        }
예제 #7
0
            public IEnumerator GetEnumerator()
            {
                var options = Tester <OrderContext> .CreateNewContextOptions();

                var  contact = ProcessingTestHelper.GenerateContact();
                User user    = new User
                {
                    UserName = "******"
                };
                OrderState     orderState1;
                OrderState     orderState2;
                PaymentMethod  payment1;
                PaymentMethod  payment2;
                DeliveryMethod delivery1;
                DeliveryMethod delivery2;
                DeliveryZone   zone;

                using (var db = new OrderContext(options))
                {
                    db.Contacts.Add(contact);
                    db.Set <User>().Add(user);
                    db.Set <UserContact>().Add(new UserContact
                    {
                        IsAccountBased = true,
                        UserId         = user.Id,
                        ContactId      = contact.Id
                    });
                    ProcessingTestHelper.PopulateDefaultOrderCtx(db);
                    orderState1 = db.OrderStates.First();
                    orderState2 = db.OrderStates.Last();
                    payment1    = db.PaymentMethods.First();
                    payment2    = db.PaymentMethods.Last();
                    delivery1   = db.DeliveryMethods.First();
                    delivery2   = db.DeliveryMethods.Last();
                    zone        = db.DeliveryZones.First();
                    var order1 = ProcessingTestHelper.GenerateOrder(contact, orderState1, payment1, delivery1, zone);
                    var order2 = ProcessingTestHelper.GenerateOrder(contact, orderState1, payment1, delivery1, zone);
                    var order3 = ProcessingTestHelper.GenerateOrder(contact, orderState1, payment1, delivery1, zone);
                    var order4 = ProcessingTestHelper.GenerateOrder(contact, orderState2, payment2, delivery2, zone);
                    var order5 = ProcessingTestHelper.GenerateOrder(contact, orderState2, payment2, delivery2, zone);
                    var order6 = ProcessingTestHelper.GenerateOrder(ProcessingTestHelper.GenerateContact(), orderState2, payment2, delivery2, zone);
                    db.Set <Order>().AddRange(order1, order2, order3, order4, order5, order6);
                    db.SaveChanges();
                }
                //Order is required so result is 0
                var emptyFilter        = new OrderFilter <int?>();
                var serializerSettings = new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Ignore
                };



                var userFilter = new OrderFilter <int?>
                {
                    UserId = user.Id
                };
                var userDeliveryFilter1 = new OrderFilter <int?>
                {
                    UserId           = user.Id,
                    DeliveryMethodId = delivery2.Id
                };
                var userDeliveryFilter2 = new OrderFilter <int?>
                {
                    UserId           = user.Id,
                    DeliveryMethodId = delivery1.Id
                };
                var deliveryFilter = new OrderFilter <int?>
                {
                    DeliveryMethodId = delivery2.Id
                };

                var deliveryPaymentUserFilter = new OrderFilter <int?>
                {
                    UserId           = user.Id,
                    DeliveryMethodId = delivery1.Id,
                    PaymentMethodId  = payment1.Id,
                };

                var deliveryPaymentStateUserFilter = new OrderFilter <int?>
                {
                    UserId           = user.Id,
                    DeliveryMethodId = delivery1.Id,
                    PaymentMethodId  = payment1.Id,
                    OrderStateId     = orderState1.Id
                };

                var deliveryPaymentStateUserFilter2 = new OrderFilter <int?>
                {
                    UserId           = user.Id,
                    DeliveryMethodId = delivery1.Id,
                    PaymentMethodId  = payment2.Id,
                    OrderStateId     = orderState1.Id
                };

                var deliveryPaymentStateUserFilter3 = new OrderFilter <int?>
                {
                    UserId           = user.Id,
                    DeliveryMethodId = delivery1.Id,
                    PaymentMethodId  = payment1.Id,
                    OrderStateId     = orderState2.Id
                };

                var deliveryPaymentStateUserFilter4 = new OrderFilter <int?>
                {
                    UserId           = user.Id,
                    DeliveryMethodId = delivery2.Id,
                    PaymentMethodId  = payment1.Id,
                    OrderStateId     = orderState1.Id
                };

                var deliveryPaymentUserFilter2 = new OrderFilter <int?>
                {
                    UserId           = user.Id,
                    DeliveryMethodId = delivery2.Id,
                    PaymentMethodId  = payment1.Id
                };
                var deliveryPaymentUserFilter3 = new OrderFilter <int?>
                {
                    UserId           = user.Id,
                    DeliveryMethodId = delivery1.Id,
                    PaymentMethodId  = payment2.Id
                };
                var userTotalFilter = new OrderFilter <int?>
                {
                    UserId        = user.Id,
                    TotalInterval = new Interval <decimal?> {
                        Start = 2001
                    }
                };
                var totalStartFilter = new OrderFilter <int?>
                {
                    TotalInterval = new Interval <decimal?> {
                        Start = 2001
                    }
                };
                var totalFilter = new OrderFilter <int?>
                {
                    TotalInterval = new Interval <decimal?> {
                        Start = 2001, End = 2004
                    }
                };
                var totalFilter1 = new OrderFilter <int?>
                {
                    TotalInterval = new Interval <decimal?> {
                        Start = 500, End = 1999
                    }
                };
                var totalFilterEnd = new OrderFilter <int?>
                {
                    TotalInterval = new Interval <decimal?> {
                        End = 1999
                    }
                };
                var enumerator = new List <Tuple <OrderFilter <int?>, int> >
                {
                    new Tuple <OrderFilter <int?>, int>(emptyFilter, 6),
                    new Tuple <OrderFilter <int?>, int>(userFilter, 5),
                    new Tuple <OrderFilter <int?>, int>(deliveryFilter, 3),
                    new Tuple <OrderFilter <int?>, int>(userDeliveryFilter1, 2),
                    new Tuple <OrderFilter <int?>, int>(userDeliveryFilter2, 3),
                    new Tuple <OrderFilter <int?>, int>(deliveryPaymentUserFilter, 3),


                    new Tuple <OrderFilter <int?>, int>(deliveryPaymentStateUserFilter, 3),
                    new Tuple <OrderFilter <int?>, int>(deliveryPaymentStateUserFilter2, 0),
                    new Tuple <OrderFilter <int?>, int>(deliveryPaymentStateUserFilter3, 0),
                    new Tuple <OrderFilter <int?>, int>(deliveryPaymentStateUserFilter4, 0),
                    new Tuple <OrderFilter <int?>, int>(deliveryPaymentUserFilter2, 0),
                    new Tuple <OrderFilter <int?>, int>(deliveryPaymentUserFilter3, 0),
                    new Tuple <OrderFilter <int?>, int>(userTotalFilter, 0),
                    new Tuple <OrderFilter <int?>, int>(totalStartFilter, 0),
                    new Tuple <OrderFilter <int?>, int>(totalFilter, 0),
                    new Tuple <OrderFilter <int?>, int>(totalFilter1, 0),
                    new Tuple <OrderFilter <int?>, int>(totalFilterEnd, 0),
                };

                return
                    (enumerator.Select(
                         it =>
                         new TestCaseData(options, it.Item1, it.Item2)
                         .SetName("Get: Filter -> " +
                                  JsonConvert.SerializeObject(it.Item1, serializerSettings).Replace('.', ',')
                                  ))
                     .GetEnumerator());
            }
        public IEnumerator GetEnumerator()
        {
            var options = Tester <OrderContext> .CreateNewContextOptions();

            var   contact = ProcessingTestHelper.GenerateContact();
            Order order1, order2;

            using (var db = new OrderContext(options))
            {
                db.Contacts.Add(contact);
                ProcessingTestHelper.PopulateDefaultOrderCtx(db);
                var orderState = db.OrderStates.First();
                var payment    = db.PaymentMethods.First();
                var delivery   = db.DeliveryMethods.First();
                var zone       = db.DeliveryZones.First();
                order1 = ProcessingTestHelper.GenerateOrder(contact, orderState, payment, delivery, zone);
                order2 = ProcessingTestHelper.GenerateOrder(contact, orderState, payment, delivery, zone);
                db.Set <Order>().AddRange(order1, order2);
                var detailsOrder = ProcessingTestHelper.GenerateOrderDetail(order1,
                                                                            new { Id = 1, Name = "Hat", Cost = 200 });
                var detailsOrder2 = ProcessingTestHelper.GenerateOrderDetail(order1,
                                                                             new { Id = 2, Name = "Hat", Cost = 200 });
                var detailsOrder3 = ProcessingTestHelper.GenerateOrderDetail(order1,
                                                                             new { Id = 3, Name = "Hat", Cost = 200 });
                var detailsOrder4 = ProcessingTestHelper.GenerateOrderDetail(order2,
                                                                             new { Id = 4, Name = "Hat", Cost = 200 });
                var detailsOrder5 = ProcessingTestHelper.GenerateOrderDetail(order2,
                                                                             new { Id = 5, Name = "Hat", Cost = 200 });
                db.Set <OrderDetail>().AddRange(detailsOrder, detailsOrder2, detailsOrder3, detailsOrder4, detailsOrder5);
                db.SaveChanges();
            }
            //Order is required so result is 0
            yield return(new TestCaseData(options, new OrderDetailsFilter <int>(), 0));

            yield return(new TestCaseData(options, new OrderDetailsFilter <int>
            {
                OrderId = order1.Id
            }, 3));

            yield return(new TestCaseData(options, new OrderDetailsFilter <int>
            {
                OrderId = order2.Id
            }, 2));

            yield return(new TestCaseData(options, new OrderDetailsFilter <int>
            {
                OrderId = order1.Id,
                TotalInterval = new Interval <decimal?> {
                    Start = 999
                }
            }, 3));

            yield return(new TestCaseData(options, new OrderDetailsFilter <int>
            {
                OrderId = order1.Id,
                TotalInterval = new Interval <decimal?> {
                    Start = 888, End = 1001
                }
            }, 3));

            yield return(new TestCaseData(options, new OrderDetailsFilter <int>
            {
                OrderId = order1.Id,
                TotalInterval = new Interval <decimal?> {
                    Start = 1001
                }
            }, 0));

            yield return(new TestCaseData(options, new OrderDetailsFilter <int>
            {
                OrderId = order1.Id,
                TotalInterval = new Interval <decimal?> {
                    Start = 1001, End = 1004
                }
            }, 0));

            yield return(new TestCaseData(options, new OrderDetailsFilter <int>
            {
                OrderId = order1.Id,
                TotalInterval = new Interval <decimal?> {
                    Start = 500, End = 999
                }
            }, 0));

            yield return(new TestCaseData(options, new OrderDetailsFilter <int>
            {
                OrderId = order1.Id,
                TotalInterval = new Interval <decimal?> {
                    End = 999
                }
            }, 0));
        }