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.
 
 
 
 
 
 

169 lines
5.3 KiB

using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate;
using Ordering.Domain.Events;
using Ordering.Domain.Exceptions;
using System;
using Xunit;
public class OrderAggregateTest
{
public OrderAggregateTest()
{ }
[Fact]
public void Create_order_item_success()
{
//Arrange
var productId = 1;
var productName = "FakeProductName";
var unitPrice = 12;
var discount = 15;
var pictureUrl = "FakeUrl";
var units = 5;
//Act
var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units);
//Assert
Assert.NotNull(fakeOrderItem);
}
[Fact]
public void Invalid_number_of_units()
{
//Arrange
var productId = 1;
var productName = "FakeProductName";
var unitPrice = 12;
var discount = 15;
var pictureUrl = "FakeUrl";
var units = -1;
//Act - Assert
Assert.Throws<OrderingDomainException>(() => new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units));
}
[Fact]
public void Invalid_total_of_order_item_lower_than_discount_applied()
{
//Arrange
var productId = 1;
var productName = "FakeProductName";
var unitPrice = 12;
var discount = 15;
var pictureUrl = "FakeUrl";
var units = 1;
//Act - Assert
Assert.Throws<OrderingDomainException>(() => new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units));
}
[Fact]
public void Invalid_discount_setting()
{
//Arrange
var productId = 1;
var productName = "FakeProductName";
var unitPrice = 12;
var discount = 15;
var pictureUrl = "FakeUrl";
var units = 5;
//Act
var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units);
//Assert
Assert.Throws<OrderingDomainException>(() => fakeOrderItem.SetNewDiscount(-1));
}
[Fact]
public void Invalid_units_setting()
{
//Arrange
var productId = 1;
var productName = "FakeProductName";
var unitPrice = 12;
var discount = 15;
var pictureUrl = "FakeUrl";
var units = 5;
//Act
var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units);
//Assert
Assert.Throws<OrderingDomainException>(() => fakeOrderItem.AddUnits(-1));
}
[Fact]
public void Add_new_Order_raises_new_event()
{
//Arrange
var userId = new Guid();
var street = "fakeStreet";
var city = "FakeCity";
var state = "fakeState";
var country = "fakeCountry";
var zipcode = "FakeZipCode";
var cardTypeId = 5;
var cardNumber = "12";
var cardSecurityNumber = "123";
var cardHolderName = "FakeName";
var cardExpiration = DateTime.Now.AddYears(1);
var expectedResult = 1;
//Act
var fakeOrder = new Order("1", new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration);
//Assert
Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult);
}
[Fact]
public void Add_event_Order_explicitly_raises_new_event()
{
//Arrange
var userId = new Guid();
var street = "fakeStreet";
var city = "FakeCity";
var state = "fakeState";
var country = "fakeCountry";
var zipcode = "FakeZipCode";
var cardTypeId = 5;
var cardNumber = "12";
var cardSecurityNumber = "123";
var cardHolderName = "FakeName";
var cardExpiration = DateTime.Now.AddYears(1);
var expectedResult = 2;
//Act
var fakeOrder = new Order("1", new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration);
fakeOrder.AddDomainEvent(new OrderStartedDomainEvent(fakeOrder, "1", cardTypeId,cardNumber,cardSecurityNumber,cardHolderName,cardExpiration));
//Assert
Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult);
}
[Fact]
public void Remove_event_Order_explicitly()
{
//Arrange
var userId = new Guid();
var street = "fakeStreet";
var city = "FakeCity";
var state = "fakeState";
var country = "fakeCountry";
var zipcode = "FakeZipCode";
var cardTypeId = 5;
var cardNumber = "12";
var cardSecurityNumber = "123";
var cardHolderName = "FakeName";
var cardExpiration = DateTime.Now.AddYears(1);
var fakeOrder = new Order("1", new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration);
var @fakeEvent = new OrderStartedDomainEvent(fakeOrder, "1", cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration);
var expectedResult = 1;
//Act
fakeOrder.AddDomainEvent(@fakeEvent);
fakeOrder.RemoveDomainEvent(@fakeEvent);
//Assert
Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult);
}
}