private async Task GetListingsAsyncShouldReturnFetchResult(Func <Task <ItemListingsQueryResult> > asyncTestDelegate)
        {
            ItemListingsQueryResult expected = new ItemListingsQueryResult
            {
                Result = new List <ListingResult>
                {
                    new ListingResult {
                        Id = "Test"
                    }
                }
            };

            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <SearchQueryResult>(It.IsAny <string>()))
            .Returns(new SearchQueryResult
            {
                Result = new List <string> {
                    "123"
                },
                Total = 1
            });

            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <ItemListingsQueryResult>(It.IsAny <string>()))
            .Returns(expected);

            ItemListingsQueryResult result = await asyncTestDelegate();

            Assert.That(result, Is.SameAs(expected));
        }
        public async Task CreateAsyncShouldNotCallCreateOnListingViewModelFactoryIfCancellationRequested()
        {
            // arrange
            var itemListingsQueryResult = new ItemListingsQueryResult
            {
                Result = new List <ListingResult>
                {
                    new ListingResult(),
                    new ListingResult()
                },
            };
            var item = new CurrencyItem();

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            this.listingViewModelFactoryMock.Setup(x => x.CreateAsync(itemListingsQueryResult.Result[0], It.IsAny <Item>(), It.IsAny <CancellationToken>()))
            .Callback(() => cancellationTokenSource.Cancel());

            // act
            ItemListingsViewModel result = await this.itemListingsViewModelFactory.CreateAsync(item, itemListingsQueryResult, cancellationToken);

            // assert
            this.listingViewModelFactoryMock.Verify(x => x.CreateAsync(It.IsAny <ListingResult>(), It.IsAny <Item>(), It.IsAny <CancellationToken>()), Times.Once);
        }
        public async Task SetListingForItemUnderCursorAsyncShouldCallLoadOnAdvancedFiltersViewModel()
        {
            var item = new EquippableItem(ItemRarity.Unique);
            var searchQueryRequest = new SearchQueryRequest();

            var itemListingsResult = new ItemListingsQueryResult
            {
                SearchQueryRequest = searchQueryRequest
            };

            this.mediatorMock
            .Setup(x => x.Send(It.IsAny <GetItemFromCursorQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(item);

            this.queryRequestFactoryMock
            .Setup(x => x.Create(It.IsAny <Item>()))
            .Returns(searchQueryRequest);

            this.poeTradeApiClientMock.Setup(x => x.GetListingsAsync(It.IsAny <IQueryRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(itemListingsResult);

            await this.itemSearchOverlayViewModel.SetListingForItemUnderCursorAsync();

            this.advancedFiltersViewModelMock.Verify(x => x.LoadAsync(item, searchQueryRequest, default));
        }
        public async Task CreateAsyncShouldSetItemRarity()
        {
            var itemListingsQueryResult = new ItemListingsQueryResult();
            var item = new EquippableItem(ItemRarity.Rare);

            ItemListingsViewModel result = await this.itemListingsViewModelFactory.CreateAsync(item, itemListingsQueryResult);

            Assert.That(result.ItemRarity, Is.EqualTo(item.Rarity));
        }
        public async Task CreateAsyncShouldSetUri()
        {
            var itemListingsQueryResult = new ItemListingsQueryResult
            {
                Uri = new Uri("http://www.google.de")
            };

            ItemListingsViewModel result = await this.itemListingsViewModelFactory.CreateAsync(new CurrencyItem(), itemListingsQueryResult);

            Assert.That(result.ListingsUri, Is.EqualTo(itemListingsQueryResult.Uri));
        }
        public async Task CreateAsyncShouldSetItemDescription()
        {
            var itemListingsQueryResult = new ItemListingsQueryResult();
            var item = new EquippableItem(ItemRarity.Rare)
            {
                Name = "Brood Blast",
                Type = "Thicket Bow"
            };

            ItemListingsViewModel result = await this.itemListingsViewModelFactory.CreateAsync(item, itemListingsQueryResult);

            Assert.That(result.ItemDescription, Is.EqualTo(item.DisplayName));
        }
        public async Task ExecuteAdvancedQueryAsyncShouldCallCreateOnItemListingsViewModelFactory()
        {
            var itemListing = new ItemListingsQueryResult();

            this.poeTradeApiClientMock.Setup(x => x.GetListingsAsync(It.IsAny <IQueryRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(itemListing);

            this.itemSearchOverlayViewModel.Item = new EquippableItem(ItemRarity.Unique);

            await this.itemSearchOverlayViewModel.ExecuteAdvancedQueryAsync();

            this.itemListingsViewModelFactoryMock.Verify(x => x.CreateAsync(this.itemSearchOverlayViewModel.Item, itemListing, It.IsAny <CancellationToken>()));
        }
        public async Task GetListingsAsynchWithQueryRequestShouldSetRequestOnSearchQueryResult()
        {
            var queryRequest = new SearchQueryRequest();

            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <SearchQueryResult>(It.IsAny <string>()))
            .Returns(new SearchQueryResult());
            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <ItemListingsQueryResult>(It.IsAny <string>()))
            .Returns(new ItemListingsQueryResult());

            ItemListingsQueryResult result = await this.poeTradeApiClient.GetListingsAsync(queryRequest);

            Assert.That(result.SearchQueryRequest, Is.EqualTo(queryRequest));
        }
        private async Task <ItemListingsQueryResult> GetListingsQueryResult(SearchQueryResult searchQueryResult, CancellationToken cancellationToken)
        {
            ItemListingsQueryResult itemListingsQueryResult = null;

            if (searchQueryResult.Total > 0)
            {
                string url = $"{Resources.PoeTradeApiFetchEndpoint}/{string.Join(",", searchQueryResult.Result.Take(10))}";
                itemListingsQueryResult = await this.GetAsync <ItemListingsQueryResult>(url, cancellationToken).ConfigureAwait(false);
            }

            itemListingsQueryResult ??= new ItemListingsQueryResult();
            itemListingsQueryResult.Uri                = new Uri($"{Resources.PoeTradeBaseUrl}{Resources.PoeTradeApiSearchEndpoint}/{searchQueryResult.Request.League}/{searchQueryResult.Id}");
            itemListingsQueryResult.TotalCount         = searchQueryResult.Total;
            itemListingsQueryResult.SearchQueryRequest = searchQueryResult.Request;

            return(itemListingsQueryResult);
        }
        private async Task GetListingsAsyncShouldReturnResultWithTotalCount(Func <Task <ItemListingsQueryResult> > asyncTestDelegate)
        {
            int expectedCount = 100;

            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <SearchQueryResult>(It.IsAny <string>()))
            .Returns(new SearchQueryResult
            {
                Total = expectedCount
            });

            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <ItemListingsQueryResult>(It.IsAny <string>()))
            .Returns(new ItemListingsQueryResult());

            ItemListingsQueryResult result = await asyncTestDelegate();

            Assert.That(result.TotalCount, Is.EqualTo(expectedCount));
        }
        public async Task SetListingForItemUnderCursorAsyncShouldCallCreateOnItemListingsViewModelFactoryIfTradeClientDoesNotReturnNull()
        {
            // arrange
            var itemListing = new ItemListingsQueryResult();

            this.poeTradeApiClientMock.Setup(x => x.GetListingsAsync(It.IsAny <IQueryRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(itemListing);

            this.itemSearchOverlayViewModel.Item = new EquippableItem(ItemRarity.Unique);

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            // act
            await this.itemSearchOverlayViewModel.SetListingForItemUnderCursorAsync(cancellationToken);

            this.itemListingsViewModelFactoryMock.Verify(x => x.CreateAsync(this.itemSearchOverlayViewModel.Item, itemListing, cancellationToken));
        }
        private async Task GetListingsAsyncShouldReturnResultWithUri(Func <Task <ItemListingsQueryResult> > asyncTestDelegate, SearchQueryRequest queryRequest)
        {
            string expectedId = "abdef";

            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <SearchQueryResult>(It.IsAny <string>()))
            .Returns(new SearchQueryResult
            {
                Id      = expectedId,
                Request = queryRequest
            });

            this.poeTradeApiJsonSerializerMock.Setup(x => x.Deserialize <ItemListingsQueryResult>(It.IsAny <string>()))
            .Returns(new ItemListingsQueryResult());

            Uri expectedUri = new Uri($"{Resources.PoeTradeBaseUrl}{Resources.PoeTradeApiSearchEndpoint}/{queryRequest.League}/{expectedId}");

            ItemListingsQueryResult result = await asyncTestDelegate();

            Assert.That(result.Uri, Is.EqualTo(expectedUri));
        }
        public async Task CreateAsyncShouldCallCreateOnListingViewModelFactory()
        {
            // arrange
            var itemListingsQueryResult = new ItemListingsQueryResult
            {
                Result = new List <ListingResult>
                {
                    new ListingResult(),
                    new ListingResult()
                },
            };
            var item = new CurrencyItem();

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            // act
            ItemListingsViewModel result = await this.itemListingsViewModelFactory.CreateAsync(item, itemListingsQueryResult, cancellationToken);

            // assert
            this.listingViewModelFactoryMock.Verify(x => x.CreateAsync(itemListingsQueryResult.Result[0], item, cancellationToken));
            this.listingViewModelFactoryMock.Verify(x => x.CreateAsync(itemListingsQueryResult.Result[1], item, cancellationToken));
        }
Esempio n. 14
0
        public async Task <ItemListingsViewModel> CreateAsync(Item item, ItemListingsQueryResult itemListingsQueryResult, CancellationToken cancellationToken = default)
        {
            var result = new ItemListingsViewModel
            {
                ListingsUri     = itemListingsQueryResult.Uri,
                ItemDescription = item.DisplayName,
                ItemRarity      = item.Rarity
            };

            foreach (var listingResult in itemListingsQueryResult.Result)
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    break;
                }

                SimpleListingViewModel itemListingViewModel = await this.listingViewModelFactory.CreateAsync(listingResult, item, cancellationToken);

                result.Listings.Add(itemListingViewModel);
            }

            return(result);
        }