Пример #1
0
        public async Task Handle_CustomersExists_ReturnCustomers(
            [Frozen] Mock <IRepository <Entities.Customer> > customerRepoMock,
            GetCustomersQueryHandler sut,
            List <Entities.Customer> customers,
            GetCustomersQuery query
            )
        {
            // Arrange
            customerRepoMock.Setup(x => x.CountAsync(
                                       It.IsAny <CountCustomersSpecification>(),
                                       It.IsAny <CancellationToken>()
                                       ))
            .ReturnsAsync(customers.Count);

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

            //Assert
            result.Should().NotBeNull();
            customerRepoMock.Verify(x => x.ListAsync(
                                        It.IsAny <ISpecification <Entities.Customer> >(),
                                        It.IsAny <CancellationToken>()
                                        ));
            customerRepoMock.Verify(x => x.CountAsync(
                                        It.IsAny <ISpecification <Entities.Customer> >(),
                                        It.IsAny <CancellationToken>()
                                        ));
            result.TotalCustomers.Should().Be(customers.Count);
        }
            public async Task GetCustomers_ShouldReturnCustomers_WhenGivenCustomers(

                [Frozen] Mock <IMediator> mockMediator,
                List <Core.Handlers.GetCustomer.StoreCustomerDto> customers,
                [Greedy] CustomerController sut,
                GetCustomersQuery query
                )
            {
                //Arrange
                var dto = new GetCustomersDto
                {
                    TotalCustomers = customers.Count,
                    Customers      = customers.ToList <Core.Handlers.GetCustomer.CustomerDto>()
                };

                mockMediator.Setup(x => x.Send(It.IsAny <GetCustomersQuery>(), It.IsAny <CancellationToken>()))
                .ReturnsAsync(dto);

                //Act
                var actionResult = await sut.GetCustomers(query);

                //Assert
                var okObjectResult = actionResult as OkObjectResult;

                okObjectResult.Should().NotBeNull();

                var response = okObjectResult.Value as Models.GetCustomers.GetCustomersResult;

                response.TotalCustomers.Should().Be(customers.Count);
                response.Customers.Count.Should().Be(customers.Count);
                response.Customers[0].AccountNumber.Should().Be(customers[0].AccountNumber);
                response.Customers[1].AccountNumber.Should().Be(customers[1].AccountNumber);
            }
Пример #3
0
        public async Task <List <CustomerDto> > Handle(GetCustomersQuery request, CancellationToken cancellationToken)
        {
            var result = (
                from customers in _context.Customers
                join countries in _context.Countries on customers.CountryId equals countries.Id
                join categoryCustomers in _context.CategoryCustomers on customers.CategoryCustomerId equals categoryCustomers.Id
                join priceTiers in _context.PriceTiers on customers.PriceTierId equals priceTiers.Id
                join termsOfPayments in _context.TermsOfPayments on customers.TermsOfPaymentId equals termsOfPayments.Id

                select new CustomerDto
            {
                Id = customers.Id,
                Name = customers.Name,
                Email = customers.Email,
                City = customers.City,
                Country = countries.Name,
                CategoryCustomerId = categoryCustomers.Id,
                CategoryCustomer = categoryCustomers.Name,
                PriceTierId = priceTiers.Id,
                PriceTier = priceTiers.Name,
                TaxLocation = customers.TaxLocation,
                TermsOfPaymentId = termsOfPayments.Id,
                TermsOfPayment = termsOfPayments.Name
            }).ToList();

            var customerPaymentHistoricist = _context.CustomerPaymentHistories.ToList();

            result.ForEach(x => x.TheyOwnYou = customerPaymentHistoricist.Where(y => y.CustomerId == x.Id).Select(z => z.TheyOwnYou).ToList().Sum());
            result.ForEach(x => x.YouOwnThem = customerPaymentHistoricist.Where(y => y.CustomerId == x.Id).Select(z => z.YouOwnThem).ToList().Sum());
            result.ForEach(x => x.Balance    = customerPaymentHistoricist.Where(y => y.CustomerId == x.Id).Select(z => z.Balance).ToList().Sum());

            return(await Task.FromResult(result));
        }
        public ActionResult Get()
        {
            // Send the query
            var query     = new GetCustomersQuery();
            var customers = query.Run();

            return(Ok(customers));
        }
Пример #5
0
        public async Task <IEnumerable <CustomerDto> > Handle(GetCustomersQuery request, CancellationToken cancellationToken)
        {
            var customers = await _context.Customers.ToListAsync();

            var customersDto = _mapper.Map <IEnumerable <CustomerDto> >(customers);

            return(customersDto);
        }
Пример #6
0
        public async Task <List <Customer> > Handle(GetCustomersQuery request, CancellationToken cancellationToken)
        {
            var myTask = Task.Run(() => _customerRepository.GetAll());

            List <Customer> result = await myTask;

            return(result);
        }
Пример #7
0
        public Task <List <Customer> > GetCustomersAsync(GetCustomersQuery query)
        {
            var customers = this.customers
                            .Where(c => BuildGetCustomersFilter(c, query))
                            .Select(c => c.Value)
                            .ToList();

            return(Task.FromResult(customers));
        }
Пример #8
0
        public void TestValidate_ValidQuery_NoValidationError(
            GetCustomersQueryValidator sut,
            GetCustomersQuery query
            )
        {
            //Act
            var result = sut.TestValidate(query);

            result.ShouldNotHaveValidationErrorFor(query => query.PageIndex);
            result.ShouldNotHaveValidationErrorFor(query => query.PageSize);
        }
Пример #9
0
        public async Task <IReadOnlyCollection <CustomerDTO> > Handle(GetCustomersQuery request, CancellationToken cancellationToken)
        {
            var entities = await _customerRepository.GetAllAsync();

            return(entities.Select(c => new CustomerDTO
            {
                Name = c.Name,
                Email = c.Email
            })
                   .ToList());
        }
Пример #10
0
        public Task <IEnumerable <CustomerReponse> > Handle(
            GetCustomersQuery request,
            CancellationToken cancellationToken)
        {
            var response = _customerRepository.GetAll();

            var viewModel = response.Select(c =>
                                            new CustomerReponse(c.Id, c.Name, c.DocumentNumber));

            return(Task.FromResult(viewModel));
        }
Пример #11
0
            public async Task <IEnumerable <CustomerDto> > Handle(GetCustomersQuery request, CancellationToken cancellationToken)
            {
                cancellationToken.ThrowIfCancellationRequested();

                var persons = applicationDataContext.Persons
                              .AsQueryable()
                              .Include(c => c.Addresses)
                              .Include(c => c.BillingAddress)
                              .Include(c => c.ShippingAddress);

                return(mapper.ProjectTo <CustomerDto>(persons));
            }
Пример #12
0
        public void TestValidate_InvalidPageSize_ValidationErrorForPageSize(
            GetCustomersQueryValidator sut,
            GetCustomersQuery query
            )
        {
            //Arrange
            query.PageSize = 0;

            var result = sut.TestValidate(query);

            result.ShouldHaveValidationErrorFor(query => query.PageSize);
        }
Пример #13
0
        public async Task <Collection <Customer> > Get(CustomerFilter customerFilter)
        {
            GetCustomersQuery query = new GetCustomersQuery(uow, customerFilter);
            List <Customer>   items = await mapper.ProjectTo <Customer>(query.Build()).ToListAsync();

            var result = new Collection <Customer>(items, query.Count(), customerFilter);

            // demo purpose only
            if (items.Count < result.TotalItems)
            {
                modelStateAccessor.InfoMessages.Add("Use pagination for showing all records.");
            }

            return(result);
        }
        public async Task <GetAllCustomersResponse> Handle(GetAllCustomersRequest request, CancellationToken cancellationToken)
        {
            var query = new GetCustomersQuery()
            {
                CompanyId = request.AuthenticatorCompanyId
            };
            var customers = await queryExecutor.Execute(query);

            var mappedCustomers = mapper.Map <List <CustomerDto> >(customers);

            return(new GetAllCustomersResponse()
            {
                Data = mappedCustomers
            });
        }
Пример #15
0
 public async Task <BaseDto <IList <CustomerInput> > > Handle(GetCustomersQuery request, CancellationToken cancellationToken) =>
 new BaseDto <IList <CustomerInput> >
 {
     Message = "Success retrieve customer datas",
     Status  = true,
     Data    = await _context.customers.OrderBy(x => x.id).Select(result => new CustomerInput
     {
         full_name    = result.full_name,
         username     = result.username,
         password     = result.password,
         email        = result.email,
         birthdate    = result.birthdate,
         gender       = result.gender,
         phone_number = result.phone_number
     }).ToListAsync()
 };
Пример #16
0
        public void ShouldReturnAllCustomers()
        {
            var options = new DbContextOptionsBuilder <NorthwindContext>()
                          .UseInMemoryDatabase(databaseName: "ShouldReturnAllCustomers")
                          .Options;

            var context = new NorthwindContext(options);

            Seed(context);

            var query = new GetCustomersQuery(context);

            var result = query.Execute();

            Assert.Equal(6, result.Count);
        }
Пример #17
0
        public void ShouldOrderCustomersByName()
        {
            var options = new DbContextOptionsBuilder <NorthwindContext>()
                          .UseInMemoryDatabase(databaseName: "ShouldOrderCustomersByName")
                          .Options;

            var context = new NorthwindContext(options);

            Seed(context);

            var query = new GetCustomersQuery(context);

            var result = query.Execute();

            Assert.Equal("Beth Smith", result.First().Name);
        }
Пример #18
0
        private static void DisplayCustomers(NorthwindContext context)
        {
            var query     = new GetCustomersQuery(context);
            var customers = query.Execute();

            if (!customers.Any())
            {
                Console.WriteLine("No customers.");
            }

            foreach (var customer in customers)
            {
                Console.WriteLine($"{customer.Id}: {customer.Name}");
            }

            Console.WriteLine();
        }
Пример #19
0
            public async Task <IEnumerable <CustomersDto> > Handle(GetCustomersQuery request, CancellationToken cancellationToken)
            {
                var result = await(from customer in _context.Customers
                                   select new CustomersDto
                {
                    CustomerId   = customer.CustomerId,
                    CompanyName  = customer.CompanyName,
                    ContactTitle = customer.ContactTitle,
                    ContactName  = customer.ContactName,
                    Address      = customer.Address,
                    City         = customer.City,
                    Region       = customer.Region
                }).ToListAsync(cancellationToken);

                return(result);
                //return await Task.FromResult<IEnumerable<CustomersDto>>(null);
            }
Пример #20
0
        public void Handle_NoCustomersExists_ThrowArgumentNullException(
            [Frozen] Mock <IRepository <Entities.Customer> > customerRepoMock,
            GetCustomersQueryHandler sut,
            GetCustomersQuery query
            )
        {
            // Arrange
            customerRepoMock.Setup(x => x.ListAsync(
                                       It.IsAny <GetCustomersPaginatedSpecification>(),
                                       It.IsAny <CancellationToken>()
                                       ))
            .ReturnsAsync((List <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 'customers')");
        }
Пример #21
0
        public async Task ValidateAsync_InvalidQuery_ValidationResultIsNotValid()
        {
            // Arrange
            var validator = new GetCustomersQueryValidator();
            var query     = new GetCustomersQuery(
                new List <Guid> {
                Guid.Empty
            },
                new List <string>(),
                new List <int>(),
                new List <long>(),
                new List <string>());

            // Act
            var result = await validator.ValidateAsync(query);

            // Assert
            result.Should().NotBeNull();
            result.IsValid.Should().BeFalse();
            result.Errors.Should().NotBeEmpty();
        }
            public async Task GetCustomers_ShouldReturnNotFound_WhenGivenNoCustomers(
                [Frozen] Mock <IMediator> mockMediator,
                [Greedy] CustomerController sut,
                GetCustomersQuery query
                )
            {
                //Arrange
                mockMediator.Setup(x => x.Send(
                                       It.IsAny <GetCustomersQuery>(),
                                       It.IsAny <CancellationToken>()
                                       ))
                .ReturnsAsync((GetCustomersDto)null);

                //Act
                var actionResult = await sut.GetCustomers(query);

                //Assert
                var notFoundResult = actionResult as NotFoundResult;

                notFoundResult.Should().NotBeNull();
            }
Пример #23
0
        public async Task ValidateAsync_ValidQuery_ValidationResultIsValid()
        {
            // Arrange
            var validator = new GetCustomersQueryValidator();
            var query     = new GetCustomersQuery(
                new List <Guid> {
                Guid.Parse("34DE200F-EDCF-4590-9BD1-00318E826164")
            },
                new List <string>(),
                new List <int>(),
                new List <long>(),
                new List <string>());

            // Act
            var result = await validator.ValidateAsync(query);

            // Assert
            result.Should().NotBeNull();
            result.IsValid.Should().BeTrue();
            result.Errors.Should().BeEmpty();
        }
Пример #24
0
        public async Task Handle_ValidQuery_CustomersReturned()
        {
            // Arrange
            const int customersCount = 10;
            var       query          = new GetCustomersQuery();
            var       customers      = this.fixture
                                       .Build <Customer>()
                                       .CreateMany(customersCount)
                                       .ToList();

            this.repositoryMock
            .Setup(r => r.GetCustomersAsync(It.IsAny <GetCustomersQuery>()))
            .ReturnsAsync(customers);

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

            // Assert
            result.Should().NotBeNull();
            result.Should().AllBeOfType <CustomerDto>();
            this.repositoryMock.VerifyAll();
        }
Пример #25
0
        public async Task <ActionResult> Get()
        {
            var customer = new GetCustomersQuery();

            return(Ok(await _mediatr.Send(customer)));
        }
 public async Task <List <Customer> > Handle(GetCustomersQuery request, CancellationToken cancellationToken)
 {
     return(_customerRepository.GetAll().ToList());
 }
Пример #27
0
 public async Task <IEnumerable <CustomerDto> > Handle(GetCustomersQuery request, CancellationToken cancellationToken)
 {
     return((await _customerRepository.GetCustomersAsync())
            .Select(CustomerDto.FromDomain)
            .ToList());
 }
Пример #28
0
 public async Task <IDataResult <IEnumerable <Customer> > > Handle(GetCustomersQuery request, CancellationToken cancellationToken)
 {
     return(new SuccessDataResult <IEnumerable <Customer> >(await _customerMongoRepository.GetListAsync()));
 }
        public async Task <ActionResult <GetCustomersDto> > Get()
        {
            var result = new GetCustomersQuery();

            return(Ok(await meciater.Send(result)));
        }
            public async Task <ActionResult <GetCustomersDto> > Handle(GetCustomersQuery request, CancellationToken cancellationToken)
            {
                var obj = await _context.Customers.ProjectTo <GetCustomerDto>(_mapper.ConfigurationProvider).ToListAsync();

                return(new OkObjectResult(obj));
            }