Пример #1
0
        public async Task SearchCustomers_When_1_customer_exists_It_should_return_1_customer()
        {
            // Arrange
            await ResetDatabaseAsync();

            var existingCustomer = new Customer {
                Id = Guid.NewGuid(), Name = "Test"
            };

            await AddAsExistingEntityAsync(existingCustomer);

            var query = new SearchCustomersQuery();

            // Act
            var response = await Client.CustomersController().SearchAsync(query);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);

            var content = await response.Content.ReadFromJsonAsync <SearchCustomersQueryResult>();

            content.Should().NotBeNull();
            content !.Customers.Should().NotBeEmpty();
            content.Customers.Should().HaveCount(1);

            content.PageIndex.Should().Be(query.PageIndex);
            content.PageSize.Should().Be(query.PageSize);
            content.TotalItems.Should().Be(1);
            content.TotalPages.Should().Be(1);
            content.HasNextPage.Should().Be(false);
            content.HasPreviousPage.Should().Be(false);

            content.Customers.First().Id.Should().Be(existingCustomer.Id);
            content.Customers.First().Name.Should().Be(existingCustomer.Name);
        }
Пример #2
0
        public async Task SearchCustomers_When_no_customers_exist_It_should_return_an_empty_list()
        {
            // Arrange
            await ResetDatabaseAsync();

            var query = new SearchCustomersQuery();

            // Act
            var response = await Client.CustomersController().SearchAsync(query);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);

            var content = await response.Content.ReadFromJsonAsync <SearchCustomersQueryResult>();

            content.Should().NotBeNull();
            content !.Customers.Should().BeEmpty();

            content.PageIndex.Should().Be(query.PageIndex);
            content.PageSize.Should().Be(query.PageSize);
            content.TotalItems.Should().Be(0);
            content.TotalPages.Should().Be(0);
            content.HasNextPage.Should().Be(false);
            content.HasPreviousPage.Should().Be(false);
        }
Пример #3
0
        public async Task SearchCustomers_When_28_customers_exist_and_pagesize_is_10_and_page_index_is_1_It_should_return_10_customers()
        {
            // Arrange
            await ResetDatabaseAsync();

            var numberOfExistingCustomers = 28;
            var existingCustomers         = AutoFixture.CreateMany <Customer>(numberOfExistingCustomers);

            await AddAsExistingEntitiesAsync(existingCustomers);

            var query = new SearchCustomersQuery
            {
                PageIndex = 1,
                PageSize  = 10
            };

            // Act
            var response = await Client.CustomersController().SearchAsync(query);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);

            var content = await response.Content.ReadFromJsonAsync <SearchCustomersQueryResult>();

            content.Should().NotBeNull();
            content !.Customers.Should().NotBeEmpty();
            content.Customers.Should().HaveCount(10);

            content.PageIndex.Should().Be(query.PageIndex);
            content.PageSize.Should().Be(query.PageSize);
            content.TotalItems.Should().Be(numberOfExistingCustomers);
            content.TotalPages.Should().Be(3);
            content.HasNextPage.Should().Be(true);
            content.HasPreviousPage.Should().Be(true);
        }
Пример #4
0
        public async Task SearchCustomers_When_ordering_by_customer_name_descending_It_should_return_list_in_correct_order()
        {
            // Arrange
            await ResetDatabaseAsync();

            var existingCustomer1 = new Customer {
                Id = Guid.NewGuid(), Code = 2, Name = "B"
            };

            await AddAsExistingEntityAsync(existingCustomer1);

            var existingCustomer2 = new Customer {
                Id = Guid.NewGuid(), Code = 1, Name = "A"
            };

            await AddAsExistingEntityAsync(existingCustomer2);

            var query = new SearchCustomersQuery
            {
                OrderBy           = SearchCustomersOrderByEnum.Name,
                OrderByDescending = true
            };

            // Act
            var response = await Client.CustomersController().SearchAsync(query);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);

            var content = await response.Content.ReadFromJsonAsync <SearchCustomersQueryResult>();

            content.Should().NotBeNull();
            content !.Customers.Should().NotBeEmpty();
            content.Customers.Should().HaveCount(2);

            content.Customers.First().Id.Should().Be(existingCustomer1.Id);
            content.Customers.Skip(1).First().Id.Should().Be(existingCustomer2.Id);
        }
Пример #5
0
        public async Task SearchCustomers_When_filter_on_name_It_should_exclude_non_matching_customers()
        {
            // Arrange
            await ResetDatabaseAsync();

            var existingCustomer1 = new Customer {
                Id = Guid.NewGuid(), Name = "Customer with Hello in name"
            };

            await AddAsExistingEntityAsync(existingCustomer1);

            var existingCustomer2 = new Customer {
                Id = Guid.NewGuid(), Name = "Customer without search term in name"
            };

            await AddAsExistingEntityAsync(existingCustomer2);

            var query = new SearchCustomersQuery
            {
                SearchTerm = "hello"
            };

            // Act
            var response = await Client.CustomersController().SearchAsync(query);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);

            var content = await response.Content.ReadFromJsonAsync <SearchCustomersQueryResult>();

            content.Should().NotBeNull();
            content !.Customers.Should().NotBeEmpty();
            content.Customers.Should().HaveCount(1);

            content.Customers.First().Id.Should().Be(existingCustomer1.Id);
        }
 public async Task <ActionResult <SearchCustomersQueryResult> > Search([FromQuery] SearchCustomersQuery query, CancellationToken cancellationToken)
 {
     return(await Mediator.Send(query, cancellationToken));
 }
Пример #7
0
 public async Task <HttpResponseMessage> SearchAsync(SearchCustomersQuery query)
 {
     return(await _httpClient.GetAsync($"/api/customers?{query.ToQueryString()}"));
 }