| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- using AutoMapper;
- using Diligent.WebAPI.Business.Interfaces;
- using Diligent.WebAPI.Data.Entities;
- using Diligent.WebAPI.Data.HelperModels;
- using Diligent.WebAPI.Host.DTOs.Request;
- using Diligent.WebAPI.Host.Exceptions;
- using Diligent.WebAPI.Host.Mapper;
- using Diligent.WebAPI.Host.Mediator.Request.Commands;
- using Diligent.WebAPI.Host.Mediator.Request.Handlers;
- using Diligent.WebAPI.Host.Mediator.Request.Queries;
- using Moq;
-
- namespace Tests
- {
- [TestFixture]
- public class RequestTests
- {
- private Mock<IRequestRepository> _requestRepositoryMock;
- private Mock<IRoomRepository> _roomRepositoryMock;
- private IMapper _mapper;
- private readonly List<Request> _requests = new()
- {
- new Request
- {
- Id = "1",
- RoomId = "123",
- RoomName = "Room1",
- SenderId = "123",
- SenderUsername = "user1",
- CreatedAtUtc = DateTime.UtcNow,
- },
- new Request
- {
- Id = "2",
- RoomId = "1234",
- RoomName = "Room2",
- SenderId = "1234",
- SenderUsername = "user1",
- CreatedAtUtc = DateTime.UtcNow,
- },
- new Request
- {
- Id = "3",
- RoomId = "123",
- RoomName = "Room3",
- SenderId = "123",
- SenderUsername = "user2",
- CreatedAtUtc = DateTime.UtcNow,
- },
- };
- private readonly List<Room> _rooms = new()
- {
- new Room
- {
- Id = "123",
- CreatedBy = "123",
- Customers = new List<CustomerDTO>(),
- CreatedAtUtc = DateTime.UtcNow,
- IsOneToOne = true,
- Messages = new List<Message>(),
- Name = "room1"
- },
- new Room
- {
- Id = "1234",
- CreatedBy = "1234",
- Customers = new List<CustomerDTO>(),
- CreatedAtUtc = DateTime.UtcNow,
- IsOneToOne = true,
- Messages = new List<Message>(),
- Name = "room2"
- },
-
- };
-
- [SetUp]
- public void Setup()
- {
- _requestRepositoryMock = new Mock<IRequestRepository>();
- _roomRepositoryMock = new Mock<IRoomRepository>();
- _requestRepositoryMock.Setup(r => r.RemoveAsync(It.IsAny<string>())).Returns(Task.CompletedTask);
- _requestRepositoryMock.Setup(x => x.CreateAsync(It.IsAny<Request>())).Returns(Task.CompletedTask);
- var listOfProfiles = new List<Profile>
- {
- new RequestMappingProfile(),
- new CustomerMappingProfile()
- };
- var configuration = new MapperConfiguration(cfg => cfg.AddProfiles(listOfProfiles));
- _mapper = new Mapper(configuration);
- }
-
- [Test]
- public void AcceptCustomerRequest_RoomIsNull_ThrowNotFoundException()
- {
- _roomRepositoryMock.Setup(r => r.GetByIdAsync(It.IsAny<string>())).Returns(Task.FromResult<Room>(null));
- var command = new AcceptCustomerRequestCommand("1", "1");
- var handler = new AcceptCustomerRequestHandler(_requestRepositoryMock.Object, _roomRepositoryMock.Object);
-
- Assert.That(async () => await handler.Handle(command, new CancellationToken()), Throws.Exception.TypeOf<NotFoundException>());
- }
-
- [Test]
- public void AcceptCustomerRequest_RoomIsNotNullAndRequestIsNull_ThrowNotFoundException()
- {
- _roomRepositoryMock.Setup(r => r.GetByIdAsync(It.IsAny<string>())).Returns(Task.FromResult(_rooms[0]));
- _requestRepositoryMock.Setup(r => r.FindRequestAsync(It.IsAny<string>(), It.IsAny<string>())).Returns(Task.FromResult<Request>(null));
- var command = new AcceptCustomerRequestCommand("1", "1");
- var handler = new AcceptCustomerRequestHandler(_requestRepositoryMock.Object, _roomRepositoryMock.Object);
-
- Assert.That(async () => await handler.Handle(command, new CancellationToken()), Throws.Exception.TypeOf<NotFoundException>());
- }
-
- [Test]
- public async Task AcceptCustomerRequest_RoomIsNotNullAndRequestInNotNull_ReturnIdOfRequest()
- {
- _roomRepositoryMock.Setup(r => r.GetByIdAsync(It.IsAny<string>())).Returns(Task.FromResult(_rooms[0]));
- _requestRepositoryMock.Setup(r => r.FindRequestAsync(It.IsAny<string>(), It.IsAny<string>())).Returns(Task.FromResult(_requests[0]));
- var command = new AcceptCustomerRequestCommand("1", "1");
- var handler = new AcceptCustomerRequestHandler(_requestRepositoryMock.Object, _roomRepositoryMock.Object);
-
- var result = await handler.Handle(command, new CancellationToken());
-
- Assert.That(result, Is.EqualTo(_requests[0].Id));
- }
-
- [Test]
- public async Task CreateRequest_WhenCalled_ReturnsObject()
- {
- var requestDTO = new RequestCreateDTO
- {
- RoomId = "room1",
- RoomName = "room1",
- SenderId = "sender1",
- SenderUsername = "sender1"
- };
- var command = new CreateRequestCommand(requestDTO);
- var handler = new CreateRequestHandler(_mapper, _requestRepositoryMock.Object);
-
- var result = await handler.Handle(command, new CancellationToken());
-
- Assert.That(result, Is.Not.Null);
- }
-
- [Test]
- public async Task GetAllRequest_ThereAreNoRequests_ReturnEmptyList()
- {
- _requestRepositoryMock.Setup(x => x.GetAsync()).Returns(Task.FromResult(new List<Request>()));
-
- var query = new GetAllRequestsQuery();
- var handler = new GetAllRequestHandler(_requestRepositoryMock.Object);
- var result = await handler.Handle(query, new CancellationToken());
-
- Assert.That(result, Is.Empty);
-
- }
- [Test]
- public async Task GetAllRequest_ThereAreRequests_ReturnListOfRequests()
- {
- _requestRepositoryMock.Setup(x => x.GetAsync()).Returns(Task.FromResult(_requests));
-
- var query = new GetAllRequestsQuery();
- var handler = new GetAllRequestHandler(_requestRepositoryMock.Object);
- var result = await handler.Handle(query, new CancellationToken());
-
- Assert.That(result, Is.EqualTo(_requests));
- }
-
- [Test]
- public void GetRequest_RequestIsNull_ThrowNotFoundException()
- {
- _requestRepositoryMock.Setup(r => r.GetByIdAsync(It.IsAny<string>())).Returns(Task.FromResult<Request>(null));
- var query = new GetRequestQuery("123");
- var handler = new GetRequestHandler(_requestRepositoryMock.Object);
-
- var result = handler.Handle(query, new CancellationToken());
-
- Assert.That(async () => await handler.Handle(query, new CancellationToken()), Throws.Exception.TypeOf<NotFoundException>());
- }
-
- [Test]
- public async Task GetRequest_RequestIsNotNull_ReturnRequest()
- {
- var request = _requests[0];
- _requestRepositoryMock.Setup(r => r.GetByIdAsync(It.IsAny<string>())).Returns(Task.FromResult(request));
- var query = new GetRequestQuery("123");
- var handler = new GetRequestHandler(_requestRepositoryMock.Object);
-
- var result = await handler.Handle(query, new CancellationToken());
-
- Assert.That(result, Is.EqualTo(request));
- }
-
- [Test]
- public async Task GetRoomsForWhichRequestExist_ThereAreNoRequests_ReturnEmptyList()
- {
- _requestRepositoryMock.Setup(r => r.GetAsync()).Returns(Task.FromResult(new List<Request>()));
- var query = new GetRoomsForWhichRequestExistQuery();
- var handler = new GetRoomsForWhichRequestExistHandler(_requestRepositoryMock.Object,_mapper,_roomRepositoryMock.Object);
-
- var result = await handler.Handle(query, new CancellationToken());
-
- Assert.That(result, Is.Empty);
- }
-
- [Test]
- public async Task GetRoomsForWhichRequestExist_ThereAreOneRequestForOneRoom_ReturnListWithOneElement()
- {
- _requestRepositoryMock.Setup(r => r.GetAsync()).Returns(Task.FromResult(new List<Request> { _requests[0] })); //parameter must be _requests[0]
- _roomRepositoryMock.Setup(r => r.GetAsync()).Returns(Task.FromResult(new List<Room> { _rooms[0] })); //parameter must be _rooms[0]
- var query = new GetRoomsForWhichRequestExistQuery();
- var handler = new GetRoomsForWhichRequestExistHandler(_requestRepositoryMock.Object, _mapper, _roomRepositoryMock.Object);
-
- var result = await handler.Handle(query, new CancellationToken());
-
- Assert.That(result, Has.Count.EqualTo(1));
- }
-
- [Test]
- public async Task GetRoomsForWhichRequestExist_ThereAreTwoRequestsForOneRoom_ReturnListWithOneElement()
- {
- _requestRepositoryMock.Setup(r => r.GetAsync()).Returns(Task.FromResult(new List<Request> { _requests[0], _requests[2] })); //parameter must be _requests[0] and _requests[2]
- _roomRepositoryMock.Setup(r => r.GetAsync()).Returns(Task.FromResult(new List<Room> { _rooms[0] })); //parameter must be _rooms[0]
- var query = new GetRoomsForWhichRequestExistQuery();
- var handler = new GetRoomsForWhichRequestExistHandler(_requestRepositoryMock.Object, _mapper, _roomRepositoryMock.Object);
-
- var result = await handler.Handle(query, new CancellationToken());
-
- Assert.That(result, Has.Count.EqualTo(1));
- }
-
- [Test]
- public async Task GetRoomsForWhichRequestExist_ThereAreTwoRequestsForTwoRooms_ReturnListWithTwoElements()
- {
- _requestRepositoryMock.Setup(r => r.GetAsync()).Returns(Task.FromResult(new List<Request> { _requests[0], _requests[1] })); //parameter must be _requests[0] and _requests[1]
- _roomRepositoryMock.Setup(r => r.GetAsync()).Returns(Task.FromResult(new List<Room> { _rooms[0], _rooms[1] })); //parameter must be _rooms[0] and _rooms[1]
- var query = new GetRoomsForWhichRequestExistQuery();
- var handler = new GetRoomsForWhichRequestExistHandler(_requestRepositoryMock.Object, _mapper, _roomRepositoryMock.Object);
-
- var result = await handler.Handle(query, new CancellationToken());
-
- Assert.That(result, Has.Count.EqualTo(2));
- }
-
- [Test]
- public async Task GetSendersForSpecificRoom_ThereAreNoRequests_ReturnEmptyList()
- {
- _requestRepositoryMock.Setup(x => x.GetAsync()).Returns(Task.FromResult(new List<Request>()));
- var query = new GetSendersForSpecificRequestRoomQuery("1");
- var handler = new GetSendersForSpecificRoomHandler(_requestRepositoryMock.Object, _mapper);
-
- var result = await handler.Handle(query, new CancellationToken());
-
- Assert.That(result, Is.Empty);
- }
-
- [Test]
- public async Task GetSendersForSpecificRoom_ThereAreRequestsAndOneSender_ReturnListWithOneItem()
- {
- _requestRepositoryMock.Setup(x => x.GetAsync()).Returns(Task.FromResult(_requests));
- var query = new GetSendersForSpecificRequestRoomQuery("1234"); // parameter must be equal 1234
- var handler = new GetSendersForSpecificRoomHandler(_requestRepositoryMock.Object, _mapper);
-
- var result = await handler.Handle(query, new CancellationToken());
-
- Assert.That(result, Has.Count.EqualTo(1));
- }
- [Test]
- public async Task GetSendersForSpecificRoom_ThereAreRequestsAndTwoSenders_ReturnListWithTwoSenders()
- {
- _requestRepositoryMock.Setup(x => x.GetAsync()).Returns(Task.FromResult(_requests));
- var query = new GetSendersForSpecificRequestRoomQuery("123"); // parameter must be equal 123
- var handler = new GetSendersForSpecificRoomHandler(_requestRepositoryMock.Object, _mapper);
-
- var result = await handler.Handle(query, new CancellationToken());
-
- Assert.That(result, Has.Count.EqualTo(2));
- }
- [Test]
- public void RejectCustomer_ThereAreNoRequest_ThrowNotFoundException()
- {
- _requestRepositoryMock.Setup(r => r.FindRequestAsync(It.IsAny<string>(), It.IsAny<string>())).Returns(Task.FromResult<Request>(null));
- var command = new RejectCustomerRequestCommand("1", "1");
- var handler = new RejectCustomerRequestHandler(_requestRepositoryMock.Object);
-
- Assert.That(async () => await handler.Handle(command, new CancellationToken()), Throws.Exception.TypeOf<NotFoundException>());
- }
- [Test]
- public async Task RejectCustomer_ThereAreRequest_ReturnIdOfRequest()
- {
- var request = _requests[0];
- _requestRepositoryMock.Setup(r => r.FindRequestAsync(It.IsAny<string>(), It.IsAny<string>())).Returns(Task.FromResult(request));
- var command = new RejectCustomerRequestCommand("1", "1");
- var handler = new RejectCustomerRequestHandler(_requestRepositoryMock.Object);
-
- var result = await handler.Handle(command, new CancellationToken());
-
- Assert.That(result, Is.EqualTo(request.Id));
- }
- }
- }
|