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.

165 lines
5.2 KiB

  1. using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate;
  2. using Ordering.Domain.Events;
  3. using Ordering.Domain.Exceptions;
  4. using System;
  5. using Xunit;
  6. public class OrderAggregateTest
  7. {
  8. public OrderAggregateTest()
  9. { }
  10. [Fact]
  11. public void Create_order_item_success()
  12. {
  13. //Arrange
  14. var productId = 1;
  15. var productName = "FakeProductName";
  16. var unitPrice = 12;
  17. var discount = 15;
  18. var pictureUrl = "FakeUrl";
  19. var units = 5;
  20. //Act
  21. var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units);
  22. //Assert
  23. Assert.NotNull(fakeOrderItem);
  24. }
  25. [Fact]
  26. public void Invalid_number_of_units()
  27. {
  28. //Arrange
  29. var productId = 1;
  30. var productName = "FakeProductName";
  31. var unitPrice = 12;
  32. var discount = 15;
  33. var pictureUrl = "FakeUrl";
  34. var units = -1;
  35. //Act - Assert
  36. Assert.Throws<OrderingDomainException>(() => new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units));
  37. }
  38. [Fact]
  39. public void Invalid_total_of_order_item_lower_than_discount_applied()
  40. {
  41. //Arrange
  42. var productId = 1;
  43. var productName = "FakeProductName";
  44. var unitPrice = 12;
  45. var discount = 15;
  46. var pictureUrl = "FakeUrl";
  47. var units = 1;
  48. //Act - Assert
  49. Assert.Throws<OrderingDomainException>(() => new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units));
  50. }
  51. [Fact]
  52. public void Invalid_discount_setting()
  53. {
  54. //Arrange
  55. var productId = 1;
  56. var productName = "FakeProductName";
  57. var unitPrice = 12;
  58. var discount = 15;
  59. var pictureUrl = "FakeUrl";
  60. var units = 5;
  61. //Act
  62. var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units);
  63. //Assert
  64. Assert.Throws<OrderingDomainException>(() => fakeOrderItem.SetNewDiscount(-1));
  65. }
  66. [Fact]
  67. public void Invalid_units_setting()
  68. {
  69. //Arrange
  70. var productId = 1;
  71. var productName = "FakeProductName";
  72. var unitPrice = 12;
  73. var discount = 15;
  74. var pictureUrl = "FakeUrl";
  75. var units = 5;
  76. //Act
  77. var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units);
  78. //Assert
  79. Assert.Throws<OrderingDomainException>(() => fakeOrderItem.AddUnits(-1));
  80. }
  81. [Fact]
  82. public void Add_new_Order_raises_new_event()
  83. {
  84. //Arrange
  85. var street = "fakeStreet";
  86. var city = "FakeCity";
  87. var state = "fakeState";
  88. var country = "fakeCountry";
  89. var zipcode = "FakeZipCode";
  90. var cardTypeId = 5;
  91. var cardNumber = "12";
  92. var cardSecurityNumber = "123";
  93. var cardHolderName = "FakeName";
  94. var cardExpiration = DateTime.Now.AddYears(1);
  95. var expectedResult = 1;
  96. //Act
  97. var fakeOrder = new Order(new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration);
  98. //Assert
  99. Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult);
  100. }
  101. [Fact]
  102. public void Add_event_Order_explicitly_raises_new_event()
  103. {
  104. //Arrange
  105. var street = "fakeStreet";
  106. var city = "FakeCity";
  107. var state = "fakeState";
  108. var country = "fakeCountry";
  109. var zipcode = "FakeZipCode";
  110. var cardTypeId = 5;
  111. var cardNumber = "12";
  112. var cardSecurityNumber = "123";
  113. var cardHolderName = "FakeName";
  114. var cardExpiration = DateTime.Now.AddYears(1);
  115. var expectedResult = 2;
  116. //Act
  117. var fakeOrder = new Order(new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration);
  118. fakeOrder.AddDomainEvent(new OrderStartedDomainEvent(fakeOrder,cardTypeId,cardNumber,cardSecurityNumber,cardHolderName,cardExpiration));
  119. //Assert
  120. Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult);
  121. }
  122. [Fact]
  123. public void Remove_event_Order_explicitly()
  124. {
  125. //Arrange
  126. var street = "fakeStreet";
  127. var city = "FakeCity";
  128. var state = "fakeState";
  129. var country = "fakeCountry";
  130. var zipcode = "FakeZipCode";
  131. var cardTypeId = 5;
  132. var cardNumber = "12";
  133. var cardSecurityNumber = "123";
  134. var cardHolderName = "FakeName";
  135. var cardExpiration = DateTime.Now.AddYears(1);
  136. var fakeOrder = new Order(new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration);
  137. var @fakeEvent = new OrderStartedDomainEvent(fakeOrder, cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration);
  138. var expectedResult = 1;
  139. //Act
  140. fakeOrder.AddDomainEvent(@fakeEvent);
  141. fakeOrder.RemoveDomainEvent(@fakeEvent);
  142. //Assert
  143. Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult);
  144. }
  145. }