public async Task AddToCartAsync_Returns_CreatedResult() { var id = "123"; var req = TestHelper.CreateHttpRequest($"https://nzb.mtighe.dev/api/cart/add/{id}"); var wishTable = new MockCloudTable(); var wishResult = new WishResult { Category = "Cat", DetailsUrl = "https://no.where/details/123", Title = "wish result", NzbUrl = "https://no.where/nzb/123", PubDate = DateTime.UtcNow.AddDays(-10) }; wishTable.SetupOperation(TableOperationType.Retrieve, () => wishResult); _cartTable.SetupOperation <CartEntry>(TableOperationType.Insert); _authService.Setup(s => s.IsAuthenticated(req)).ReturnsAsync(true); var result = await _function.AddToCartAsync(req, wishTable.Object, _cartTable.Object, _log.Object, id); wishTable.VerifyOperation(TableOperationType.Retrieve); _cartTable.VerifyOperation(TableOperationType.Insert); var created = Assert.IsType <CreatedResult>(result); Assert.Equal("https://nzb.mtighe.dev:443/api/cart/rss", created.Location); var vm = Assert.IsType <CartEntryViewModel>(created.Value); Assert.Equal(wishResult.Category, vm.Category); Assert.Equal(wishResult.DetailsUrl, vm.DetailsUrl); Assert.Equal(wishResult.Title, vm.Title); Assert.Equal($"https://nzb.mtighe.dev:443/api/cart/nzb/{vm.Id}", vm.GrabUrl); Assert.Equal(wishResult.PubDate, vm.PublishDate); Assert.Equal("", vm.Description); }
public async Task SearchOrchestrationAsync_Persists_WishResults_And_Sends_A_Notification() { var wish = new Wish { Name = "wish", Query = "query", LastSearchDate = DateTime.UtcNow.AddDays(-2) }; var wishResult = new WishResult(); wishResult.BelongsTo(wish); var searchContext = new SearchContext { Providers = new[] { new Provider { ApiKey = "key", ApiUrl = "https://no.where" } }, Wishes = new[] { wish } }; var context = new Mock <DurableOrchestrationContextBase>(MockBehavior.Strict); var notifications = new Mock <IAsyncCollector <PushoverNotification> >(MockBehavior.Strict); context.Setup(c => c.GetInput <SearchContext>()).Returns(searchContext); context.Setup(c => c.CallSubOrchestratorAsync <IEnumerable <WishResult> >("ProviderOrchestration", It.IsAny <object>())) .ReturnsAsync(new[] { wishResult }); notifications.Setup(n => n.AddAsync(It.IsAny <PushoverNotification>(), CancellationToken.None)) .Returns(Task.CompletedTask); _wishTable.SetupBatch(); await _function.SearchOrchestrationAsync(context.Object, _wishTable.Object, notifications.Object); context.Verify(c => c.GetInput <SearchContext>(), Times.Once()); context.Verify(c => c.CallSubOrchestratorAsync <IEnumerable <WishResult> >("ProviderOrchestration", It.IsAny <object>()), Times.Once()); notifications.Verify(n => n.AddAsync(It.IsAny <PushoverNotification>(), CancellationToken.None), Times.Once()); _wishTable.VerifyBatch(); }
public static WishResultViewModel ToViewModel(this WishResult wishResult) => new WishResultViewModel { DetailsUrl = wishResult.DetailsUrl, Id = wishResult.Id, NzbUrl = wishResult.NzbUrl, PreviewUrl = wishResult.PreviewUrl, PubDate = wishResult.PubDate, Size = wishResult.Size, Title = wishResult.Title };
public async Task ExecuteAsync_Returns_The_Specified_Wish_Result() { var wr = new WishResult { RowKey = "000_123" }; _table.SetupOperation(TableOperationType.Retrieve, () => wr); var query = new GetWishResultQuery(wr.RowKey); var result = await query.ExecuteAsync(_table.Object); _table.VerifyOperation(TableOperationType.Retrieve); Assert.Equal(wr.RowKey, result.RowKey); }
public static CartEntry ToCartEntry(this WishResult wishResult, Func <string, string> grabUrlGenerator) { var entry = new CartEntry { Category = wishResult.Category, Description = "", DetailsUrl = wishResult.DetailsUrl, PublishDate = wishResult.PubDate, Title = wishResult.Title, NzbUrl = wishResult.NzbUrl }; entry.GrabUrl = grabUrlGenerator(entry.RowKey); return(entry); }
public async Task ExecuteAsync_Persists_Results_In_Batches() { _table.SetupBatch(); var w = new Wish() { Name = "I Wish" }; var wr = new WishResult(); wr.BelongsTo(w); var results = new[] { wr }; var cmd = new AddWishResultsCommand(results); await cmd.ExecuteAsync(_table.Object); _table.VerifyBatch(); }