Пример #1
0
        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();
        }
Пример #3
0
 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);
        }
Пример #5
0
        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();
        }