public void Apply_Changes_Should_Mark_Added_Customer_As_Added_And_Unchanged_Setting_Order_OrderDetail_As_Added()
        {
            // NOTE: Customer is added, Order and OrderDetail are added due to 1-M relation

            // Arrange
            var context = TestsHelper.CreateNorthwindDbContext(CreateNorthwindDbOptions);
            var nw = new MockNorthwind();

            var customer = nw.Customers[0];
            customer.TrackingState = TrackingState.Added;

            var customerSetting = new CustomerSetting() { CustomerId = customer.CustomerId, Setting = "Setting1" };
            customer.CustomerSetting = customerSetting;

            var order = new Order() { OrderDate = DateTime.Now };
            customer.Orders = new List<Order>() { order };

            var orderDetail = new OrderDetail() { ProductId = nw.Products[0].ProductId, Quantity = 1, UnitPrice = 1 };
            order.OrderDetails = new List<OrderDetail>() { orderDetail };

            // Act
            context.ApplyChanges(customer);

            // Assert
            Assert.AreEqual(EntityState.Added, context.Entry(customer).State);
            Assert.AreEqual(EntityState.Added, context.Entry(customerSetting).State);
            Assert.AreEqual(EntityState.Added, context.Entry(order).State);
            Assert.AreEqual(EntityState.Added, context.Entry(orderDetail).State);
        }
 private static void EnsureTestCustomerSetting(NorthwindDbContext context, string customerId)
 {
     var setting = context.CustomerSettings
         .SingleOrDefault(c => c.CustomerId == customerId);
     if (setting == null)
     {
         setting = new CustomerSetting { CustomerId = customerId, Setting = "Setting1" };
         context.CustomerSettings.Add(setting);
     }
 }