public async Task Handle_CustomerExists_ReturnCustomer(
            [Frozen] Mock <IRepository <Entities.Customer> > customerRepoMock,
            GetCustomerQueryHandler sut,
            GetCustomerQuery query,
            Entities.StoreCustomer customer
            )
        {
            //Arrange
            customerRepoMock.Setup(_ => _.GetBySpecAsync(
                                       It.IsAny <GetCustomerSpecification>(),
                                       It.IsAny <CancellationToken>()
                                       ))
            .ReturnsAsync(customer);

            //Act
            var result = await sut.Handle(query, CancellationToken.None);

            //Assert
            result.Should().NotBeNull();
            customerRepoMock.Verify(x => x.GetBySpecAsync(
                                        It.IsAny <GetCustomerSpecification>(),
                                        It.IsAny <CancellationToken>()
                                        ));

            result.Should().BeEquivalentTo(customer, opt => opt
                                           .Excluding(_ => _.SelectedMemberPath.EndsWith("Id", StringComparison.InvariantCultureIgnoreCase))
                                           );
        }
        public GetCustomerQueryHandlerTests()
        {
            this.repositoryMock = new Mock <ICustomersRepository>();

            this.handler = new GetCustomerQueryHandler(this.repositoryMock.Object);
            this.fixture = new Fixture();
        }
Example #3
0
        public async Task EmptyTest()
        {
            var sut = new GetCustomerQueryHandler(Repository, Mapper);

            var result = await sut.Handle(new GetCustomerQuery { }, CancellationToken.None);

            Assert.IsNull(result);
        }
        public async Task GetCustomerByNotExistCustomerId()
        {
            var sut = new GetCustomerQueryHandler(_context, _mapper);

            var result = await sut.Handle(new GetCustomerQuery { Id = 2 }, CancellationToken.None);

            result.ShouldBeNull();
        }
Example #5
0
        public async Task GetByIdTest()
        {
            var sut = new GetCustomerQueryHandler(Repository, Mapper);

            var result = await sut.Handle(new GetCustomerQuery { CustomerId = 213233 }, CancellationToken.None);

            Assert.IsInstanceOf <CustomerProfileDto>(result);
            Assert.AreEqual(213233, result.CustomerId);
        }
Example #6
0
        public async Task GetByEmailTest()
        {
            var sut = new GetCustomerQueryHandler(Repository, Mapper);

            var result = await sut.Handle(new GetCustomerQuery { Email = "*****@*****.**" }, CancellationToken.None);

            Assert.IsInstanceOf <CustomerProfileDto>(result);
            Assert.AreEqual("*****@*****.**", result.Email);
        }
        public void Handle_WhenInValidRequest_ShouldThrowException()
        {
            var sut     = new GetCustomerQueryHandler(_context);
            var request = new GetCustomerQuery {
                Id = Guid.NewGuid()
            };

            Assert.ThrowsAsync <ValidationException>(() => sut.Handle(request, CancellationToken.None));
        }
Example #8
0
        public async Task GetCustomerDetailNotFound()
        {
            var sut = new GetCustomerQueryHandler(_logger, _mapper, _context);

            var exceptionResult = await Assert.ThrowsAsync <NotFoundException>(async() => await sut.Handle(new GetCustomerQuery {
                CustomerId = Guid.Parse("ACA5A84B-CD2C-441B-9795-632FBC0B05FB")
            }, CancellationToken.None));

            Assert.Contains("not found", exceptionResult.Message);
        }
        public void Handle_WhenValidRequest_ShouldReturnCustomer()
        {
            var sut     = new GetCustomerQueryHandler(_context);
            var request = new GetCustomerQuery {
                Id = Guid.Parse("39aff1c2-5530-4112-bd3d-b72b52f4d69d")
            };

            var result = sut.Handle(request, CancellationToken.None).Result;

            Assert.AreEqual(request.Id, result.Id);
        }
Example #10
0
        public async Task GetCustomerDetailExists()
        {
            var sut = new GetCustomerQueryHandler(_logger, _mapper, _context);

            var result = await sut.Handle(new GetCustomerQuery { CustomerId = Guid.Parse("ACA5A74B-CD2C-441B-9795-632FBC0B05FB") }, CancellationToken.None);

            Assert.IsType <CustomerDto>(result);
            Assert.Equal(Guid.Parse("ACA5A74B-CD2C-441B-9795-632FBC0B05FB"), result.Id);
            Assert.Equal("Test1", result.Name);
            Assert.Equal("*****@*****.**", result.Email);
            Assert.Equal(10000M, result.MonthlyIncome);
            Assert.Equal(1000M, result.MonthlyExpense);
        }
Example #11
0
        public async Task GetAsync()
        {
            var dataAccess = new CustomerDataAccess(this.Context);

            //Act
            var sutCreate    = new CreateCustomerCommandHandler(dataAccess);
            var resultCreate = await sutCreate.Handle(new CreateCustomerCommand
            {
                Data = CustomerTestData.CustomerDataDTO
            }, CancellationToken.None);

            //Act
            var sutGet    = new GetCustomerQueryHandler(dataAccess);
            var resultGet = await sutGet.Handle(new GetCustomerQuery
            {
                Id = resultCreate.Data.Id
            }, CancellationToken.None);

            Assert.IsTrue(resultGet?.Data != null);
        }
        public void Handle_CustomerNotFound_ThrowArgumentNullException(
            [Frozen] Mock <IRepository <Entities.Customer> > customerRepoMock,
            GetCustomerQueryHandler sut,
            GetCustomerQuery query
            )
        {
            // Arrange
            customerRepoMock.Setup(x => x.GetBySpecAsync(
                                       It.IsAny <GetCustomerSpecification>(),
                                       It.IsAny <CancellationToken>()
                                       ))
            .ReturnsAsync((Entities.Customer)null);

            //Act
            Func <Task> func = async() => await sut.Handle(query, CancellationToken.None);

            //Assert
            func.Should().Throw <ArgumentNullException>()
            .WithMessage("Value cannot be null. (Parameter 'customer')");
        }