Browse Source

Minor cleanup (#63)

main
Steve Smith 8 years ago
committed by GitHub
parent
commit
749a37d6d9
  1. 2
      src/ApplicationCore/Entities/Basket.cs
  2. 10
      src/ApplicationCore/Entities/OrderAggregate/Address.cs
  3. 2
      src/ApplicationCore/Entities/OrderAggregate/Order.cs
  4. 11
      src/Infrastructure/Data/CatalogContext.cs
  5. 5
      tests/IntegrationTests/Repositories/OrderRepositoryTests/GetById.cs

2
src/ApplicationCore/Entities/Basket.cs

@ -7,7 +7,7 @@ namespace Microsoft.eShopWeb.ApplicationCore.Entities
{
public string BuyerId { get; set; }
private readonly List<BasketItem> _items = new List<BasketItem>();
public IEnumerable<BasketItem> Items => _items.ToList();
public IReadOnlyCollection<BasketItem> Items => _items.AsReadOnly();
public void AddItem(int catalogItemId, decimal unitPrice, int quantity = 1)
{

10
src/ApplicationCore/Entities/OrderAggregate/Address.cs

@ -25,15 +25,5 @@ namespace ApplicationCore.Entities.OrderAggregate
Country = country;
ZipCode = zipcode;
}
//protected override IEnumerable<object> GetAtomicValues()
//{
// yield return Street;
// yield return City;
// yield return State;
// yield return Country;
// yield return ZipCode;
//}
}
}

2
src/ApplicationCore/Entities/OrderAggregate/Order.cs

@ -28,7 +28,7 @@ namespace ApplicationCore.Entities.OrderAggregate
// but only through the method Order.AddOrderItem() which includes behavior.
private readonly List<OrderItem> _orderItems = new List<OrderItem>();
public IReadOnlyCollection<OrderItem> OrderItems => _orderItems;
public IReadOnlyCollection<OrderItem> OrderItems => _orderItems.AsReadOnly();
// Using List<>.AsReadOnly()
// This will create a read only wrapper around the private list so is protected against "external updates".
// It's much cheaper than .ToList() because it will not have to copy all items in a new collection. (Just one heap alloc for the wrapper instance)

11
src/Infrastructure/Data/CatalogContext.cs

@ -1,7 +1,7 @@
using Microsoft.EntityFrameworkCore;
using ApplicationCore.Entities.OrderAggregate;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.eShopWeb.ApplicationCore.Entities;
using ApplicationCore.Entities.OrderAggregate;
namespace Infrastructure.Data
{
@ -11,10 +11,7 @@ namespace Infrastructure.Data
public CatalogContext(DbContextOptions<CatalogContext> options) : base(options)
{
}
//public CatalogContext()
//{
// // required by migrations
//}
public DbSet<Basket> Baskets { get; set; }
public DbSet<CatalogItem> CatalogItems { get; set; }
public DbSet<CatalogBrand> CatalogBrands { get; set; }
@ -95,10 +92,12 @@ namespace Infrastructure.Data
.IsRequired()
.HasMaxLength(100);
}
private void ConfigureOrder(EntityTypeBuilder<Order> builder)
{
builder.OwnsOne(o => o.ShipToAddress);
}
private void ConfigureOrderItem(EntityTypeBuilder<OrderItem> builder)
{
builder.OwnsOne(i => i.ItemOrdered);

5
tests/IntegrationTests/Repositories/OrderRepositoryTests/GetById.cs

@ -1,8 +1,5 @@
using ApplicationCore.Entities.OrderAggregate;
using Infrastructure.Data;
using Infrastructure.Data;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using UnitTests.Builders;
using Xunit;

Loading…
Cancel
Save