Esempio n. 1
0
        public async Task HandleAsync_ValidRequest_ReturnsResponse()
        {
            var products = new List <Product>
            {
                new Product(new ProductIdentity(10), "ABC", "My name", 12),
                new Product(new ProductIdentity(11), "BDE", "My name 2", 14),
                new Product(new ProductIdentity(12), "GDE", "My name 3", 16),
                new Product(new ProductIdentity(13), "HDE", "My name 4", 18),
            };

            var page = 2;
            var size = 5;

            _repositoryMock.Setup(e => e.GetAsync(page, size))
            .Returns(Task.FromResult(products.AsEnumerable()));

            var request = new BrowseProductsRequest
            {
                Page = page,
                Size = size,
            };

            await _useCase.HandleAsync(request);

            _mapperMock.Verify(e => e.Map <IEnumerable <Product>, BrowseProductsResponse>(products), Times.Once);
            _repositoryMock.Verify(e => e.GetAsync(page, size), Times.Once);
        }
Esempio n. 2
0
        public async Task <ActionResult <BrowseProductsResponse> > BrowseProductsAsync([FromQuery] int?page = null, [FromQuery] int?size = null)
        {
            var request = new BrowseProductsRequest
            {
                Page = page.Value,
                Size = size.Value,
            };

            var response = await Service.BrowseProductsAsync(request);

            return(Ok(response));
        }
Esempio n. 3
0
        public async Task BrowseProducts_Valid_OK()
        {
            for (int i = 0; i < 30; i++)
            {
                var productRecord = new ProductRecord
                {
                    ProductCode = $"P{i}",
                    ProductName = $"Product {i}",
                    ListPrice   = 100 + i,
                };

                _productRecords.Add(productRecord);

                Fixture.Db.Add(productRecord);
            }

            var browseRequest = new BrowseProductsRequest
            {
                Page = 3,
                Size = 5,
            };

            var browseResponse = await Fixture.Api.Products.BrowseProductsAsync(browseRequest);

            Assert.Equal(HttpStatusCode.OK, browseResponse.StatusCode);

            var browseResponseContent = browseResponse.Data;

            Assert.Equal(browseRequest.Size, browseResponseContent.Count);

            var skip = browseRequest.Page * browseRequest.Size;
            var take = browseRequest.Size;

            var expected = _productRecords.Skip(skip).Take(take).ToList();

            for (int i = 0; i < expected.Count; i++)
            {
                var expectedRecord = expected[i];
                var actualRecord   = browseResponseContent.Records[i];
                Assert.Equal(expectedRecord.Id, actualRecord.Id);
                Assert.Equal(expectedRecord.ProductCode, actualRecord.Code);
                Assert.Equal(expectedRecord.ProductName, actualRecord.Description);
                Assert.Equal(expectedRecord.ListPrice, actualRecord.UnitPrice);
            }
        }
Esempio n. 4
0
        public async Task BrowseProducts_ValidRequest_ReturnsResponse()
        {
            for (int i = 0; i < 30; i++)
            {
                var productRecord = new ProductRecord
                {
                    ProductCode = $"P{i.ToString("0000")}",
                    ProductName = $"Product {i.ToString("0000")}",
                    ListPrice   = 100 + i,
                };

                _productRecords.Add(productRecord);

                Fixture.Db.Add(productRecord);
            }

            var browseRequest = new BrowseProductsRequest
            {
                Page = 3,
                Size = 5,
            };

            var browseResponse = await Fixture.Products.BrowseProductsAsync(browseRequest);

            Assert.Equal(_productRecords.Count, browseResponse.TotalRecords);

            var skip = (browseRequest.Page - 1) * browseRequest.Size;
            var take = browseRequest.Size;

            var expected = _productRecords.Skip(skip).Take(take).ToList();

            for (int i = 0; i < expected.Count; i++)
            {
                var expectedRecord = expected[i];
                var actualRecord   = browseResponse.Records[i];
                Assert.Equal(expectedRecord.Id, actualRecord.Id);
                Assert.Equal(expectedRecord.ProductCode, actualRecord.Code);
                Assert.Equal(expectedRecord.ProductName, actualRecord.Description);
                Assert.Equal(expectedRecord.ListPrice, actualRecord.UnitPrice);
                Assert.Equal(expectedRecord.IsListed, actualRecord.IsListed);
            }
        }
Esempio n. 5
0
 public Task <BrowseProductsResponse> BrowseProductsAsync(BrowseProductsRequest request)
 {
     return(HandleAsync <BrowseProductsRequest, BrowseProductsResponse>(request));
 }
Esempio n. 6
0
 public Task <BrowseProductsResponse> BrowseProductsAsync(BrowseProductsRequest request)
 {
     return(ExecuteAsync(e => e.BrowseProductsAsync(request)));
 }
Esempio n. 7
0
 public Task <IObjectClientResponse <BrowseProductsResponse> > BrowseProductsAsync(BrowseProductsRequest request)
 {
     return(Client.GetAsync <BrowseProductsRequest, BrowseProductsResponse>(request));
 }