You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

86 lines
3.7 KiB

using System;
using System.Linq;
using Xunit;
using Microsoft.eShopOnContainers.Services.Ordering.SqlData.UnitOfWork;
using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel;
using Microsoft.eShopOnContainers.Services.Ordering.Domain.Contracts;
using Microsoft.eShopOnContainers.Services.Ordering.SqlData.Repositories;
using Microsoft.EntityFrameworkCore;
namespace DataIntegrationTests
{
//Basic documentation for Testing EF Core classes
// http://ef.readthedocs.io/en/latest/miscellaneous/testing.html
public class Tests
{
[Fact]
public async void Add_order_to_data_model()
{
// All contexts that share the same service provider will share the same database
//Using InMemory DB
//var options = DbContextUtil.CreateNewContextOptionsForInMemoryDB();
//Using Sql Server
var options = DbContextUtil.CreateNewContextOptionsForSqlDb();
// Run the test against one instance of the context
using (var context = new OrderingDbContext(options))
{
IOrderRepository orderRepository = new OrderRepository(context);
//Create generic Address ValueObject
Address sampleAddress = new Address("15703 NE 61st Ct.",
"Redmond",
"Washington",
"WA",
"United States",
"US",
"98052",
47.661492,
-122.131309
);
//Create sample Orders
Order order1 = new Order(Guid.NewGuid(), sampleAddress, sampleAddress);
//Add a few OrderItems
order1.AddNewOrderItem(Guid.NewGuid(), 2, 25, 30);
order1.AddNewOrderItem(Guid.NewGuid(), 1, 58, 0);
order1.AddNewOrderItem(Guid.NewGuid(), 1, 60, 0);
order1.AddNewOrderItem(Guid.NewGuid(), 3, 12, 0);
order1.AddNewOrderItem(Guid.NewGuid(), 5, 3, 0);
orderRepository.Add(order1);
int numChanges = await orderRepository.UnitOfWork.CommitAsync();
//With no Async Repository
//context.Orders.Add(order1);
//context.SaveChanges();
}
//// Use a separate instance of the context to verify correct data was saved to database
using (var context = new OrderingDbContext(options))
{
var orders = context.Orders
.Include(o => o.ShippingAddress)
.Include(o => o.BillingAddress)
.ToList();
//Could be using .Load() if you don't want to create a List
//OTHER SAMPLE
//var company = context.Companies
// .Include(co => co.Employees).ThenInclude(emp => emp.Employee_Car)
// .Include(co => co.Employees).ThenInclude(emp => emp.Employee_Country)
// .FirstOrDefault(co => co.companyID == companyID);
//Assert when running test with a clean In-Memory DB
//Assert.Equal(1, context.Orders.Count());
string cityName = orders.First<Order>().ShippingAddress.City;
Assert.Equal("Redmond", cityName);
}
}
}
}