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.

RoomTests.cs 7.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. using Diligent.WebAPI.Business.Interfaces;
  2. using Diligent.WebAPI.Data.Entities;
  3. using Diligent.WebAPI.Data.HelperModels;
  4. using Diligent.WebAPI.Host.Exceptions;
  5. using Diligent.WebAPI.Host.Mediator.Chat.Handlers;
  6. using Diligent.WebAPI.Host.Mediator.Rooms.Commands;
  7. using Diligent.WebAPI.Host.Mediator.Rooms.Queries;
  8. using Microsoft.AspNetCore.Http;
  9. using Moq;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. namespace Tests
  16. {
  17. [TestFixture]
  18. public class RoomTests
  19. {
  20. private Mock<IRoomRepository> _roomRepositoryMock;
  21. private readonly List<Room> _rooms = new()
  22. {
  23. new Room
  24. {
  25. Id = "123",
  26. CreatedBy = "123",
  27. Customers = new List<CustomerDTO>
  28. {
  29. new CustomerDTO
  30. {
  31. CustomerId = "1",
  32. DateOfEnteringRoom = new DateTime(2021, 2, 3)
  33. },
  34. new CustomerDTO
  35. {
  36. CustomerId = "2",
  37. DateOfEnteringRoom = DateTime.UtcNow
  38. }
  39. },
  40. CreatedAtUtc = DateTime.UtcNow,
  41. IsOneToOne = true,
  42. Messages = new List<Message>
  43. {
  44. new Message
  45. {
  46. Id = "1",
  47. Content = "AA",
  48. SenderId = "1",
  49. Username = "username1",
  50. CreatedAtUtc = DateTime.Now,
  51. },
  52. new Message
  53. {
  54. Id = "2",
  55. Content = "BB",
  56. SenderId = "2",
  57. Username = "username2",
  58. CreatedAtUtc = DateTime.Now,
  59. }
  60. },
  61. Name = "room1"
  62. },
  63. new Room
  64. {
  65. Id = "1234",
  66. CreatedBy = "1234",
  67. Customers = new List<CustomerDTO>()
  68. {
  69. new CustomerDTO
  70. {
  71. CustomerId = "3",
  72. DateOfEnteringRoom = DateTime.Now
  73. },
  74. new CustomerDTO
  75. {
  76. CustomerId = "4",
  77. DateOfEnteringRoom = DateTime.Now
  78. }
  79. },
  80. CreatedAtUtc = DateTime.Now,
  81. IsOneToOne = true,
  82. Messages = new List<Message>
  83. {
  84. new Message
  85. {
  86. Id = "3",
  87. Content = "CC",
  88. SenderId = "3",
  89. Username = "username1",
  90. CreatedAtUtc = new DateTime(2021, 2, 3)
  91. },
  92. new Message
  93. {
  94. Id = "4",
  95. Content = "DD",
  96. SenderId = "4",
  97. Username = "username2",
  98. CreatedAtUtc = new DateTime(2021, 2, 3)
  99. }
  100. },
  101. Name = "room2"
  102. },
  103. };
  104. [SetUp]
  105. public void SetUp()
  106. {
  107. _roomRepositoryMock = new Mock<IRoomRepository>();
  108. }
  109. [Test]
  110. public async Task RemoveUserFromGroup_ObjectIsNull_ThrowsNotFoundException()
  111. {
  112. var command = new RemoveUserFromGroupCommand(null, null);
  113. var handler = new RemoveUserFromGroupHandler(_roomRepositoryMock.Object);
  114. Assert.That(async () => await handler.Handle(command, new CancellationToken()), Throws.Exception.TypeOf<NotFoundException>());
  115. }
  116. [Test]
  117. public async Task RemoveUserFromGroup_UserConnectionIsNull_ThrowsNotFoundException()
  118. {
  119. _roomRepositoryMock.Setup(x => x.GetByIdAsync(It.IsAny<string>()))
  120. .ReturnsAsync(new Room
  121. {
  122. Name = "Room1",
  123. Customers = new List<CustomerDTO>
  124. {
  125. new CustomerDTO { CustomerId = "user", DateOfEnteringRoom = DateTime.Now}
  126. },
  127. CreatedBy = "User1"
  128. });
  129. var command = new RemoveUserFromGroupCommand("room1", "user1");
  130. var handler = new RemoveUserFromGroupHandler(_roomRepositoryMock.Object);
  131. Assert.That(async () => await handler.Handle(command, new CancellationToken()), Throws.Exception.TypeOf<NotFoundException>());
  132. }
  133. [Test]
  134. public async Task RemoveUserFromGroup_UserConnectionIsNotNull_ObjectIsNotNull()
  135. {
  136. var userConnection = new CustomerDTO { CustomerId = "user1", DateOfEnteringRoom = DateTime.Now };
  137. var room = new Room
  138. {
  139. Name = "Room1",
  140. Customers = new List<CustomerDTO>
  141. {
  142. userConnection
  143. },
  144. CreatedBy = "User1"
  145. };
  146. _roomRepositoryMock.Setup(x => x.GetByIdAsync(It.IsAny<string>()))
  147. .ReturnsAsync(room);
  148. _roomRepositoryMock.Setup(x => x.LeaveChatRoom(It.IsAny<Room>(), It.IsAny<CustomerDTO>()));
  149. var command = new RemoveUserFromGroupCommand("room1", "user1");
  150. var handler = new RemoveUserFromGroupHandler(_roomRepositoryMock.Object);
  151. var result = await handler.Handle(command, new CancellationToken());
  152. _roomRepositoryMock.Verify(mock => mock.LeaveChatRoom(room, userConnection));
  153. }
  154. [Test]
  155. public async Task GetAllRoomsWithFilteredMessages_CustomerIsNull_ReturnsEmptyList()
  156. {
  157. _roomRepositoryMock.Setup(x => x.GetAsync()).Returns(Task.FromResult(_rooms));
  158. var query = new GetAllRoomsWithFilteredMessagesQuery("5");
  159. var handler = new GetAllRoomsWithFilteredMessagesHandler(_roomRepositoryMock.Object);
  160. var result = await handler.Handle(query, new CancellationToken());
  161. Assert.That(result[0].Messages.Count(), Is.EqualTo(0));
  162. }
  163. [Test]
  164. public async Task GetAllRoomsWithFilteredMessages_CustomerIsNotNull_ReturnsEmptyListWithMessage()
  165. {
  166. _roomRepositoryMock.Setup(x => x.GetAsync()).Returns(Task.FromResult(_rooms));
  167. var query = new GetAllRoomsWithFilteredMessagesQuery("3");
  168. var handler = new GetAllRoomsWithFilteredMessagesHandler(_roomRepositoryMock.Object);
  169. var result = await handler.Handle(query, new CancellationToken());
  170. Assert.That(result[0].Messages.Count(), Is.EqualTo(0));
  171. }
  172. [Test]
  173. public async Task GetAllRoomsWithFilteredMessages_CustomerIsNotNull_Messages()
  174. {
  175. _roomRepositoryMock.Setup(x => x.GetAsync()).Returns(Task.FromResult(_rooms));
  176. var query = new GetAllRoomsWithFilteredMessagesQuery("1");
  177. var handler = new GetAllRoomsWithFilteredMessagesHandler(_roomRepositoryMock.Object);
  178. var result = await handler.Handle(query, new CancellationToken());
  179. Assert.That(result[0].Messages.Count(), Is.EqualTo(2));
  180. }
  181. }
  182. }