|
|
- 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);
- }
- }
|