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)); }
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); }