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.

164 lines
5.1 KiB

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