예제 #1
0
 public static async Task DeleteCardAsync(DbContextOptions <MemCheckDbContext> db, Guid userId, Guid cardId, DateTime?deletionDate = null)
 {
     using var dbContext = new MemCheckDbContext(db);
     var deleter         = new DeleteCards(dbContext.AsCallContext(), deletionDate);
     var deletionRequest = new DeleteCards.Request(userId, cardId.AsArray());
     await deleter.RunAsync(deletionRequest);
 }
예제 #2
0
 private async Task DeleteCardAsync(DbContextOptions <MemCheckDbContext> db, Guid userId, Guid cardId, DateTime deletionDate)
 {
     using var dbContext = new MemCheckDbContext(db);
     var deleter         = new DeleteCards(dbContext, new EmptyLocalizer());
     var deletionRequest = new DeleteCards.Request(dbContext.Users.Where(u => u.Id == userId).Single(), new[] { cardId });
     await deleter.RunAsync(deletionRequest, deletionDate);
 }
예제 #3
0
 private static async Task DeleteCardAsync(DbContextOptions <MemCheckDbContext> testDB, Guid userId, Guid cardId, DateTime deletionDate)
 {
     using var dbContext = new MemCheckDbContext(testDB);
     var deleter         = new DeleteCards(dbContext.AsCallContext(new TestLocalizer(new KeyValuePair <string, string>("Deletion", DeletionDescription).AsArray())), deletionDate);
     var deletionRequest = new DeleteCards.Request(userId, cardId.AsArray());
     await deleter.RunAsync(deletionRequest);
 }
예제 #4
0
        public async Task MoreNewFoundThanMaxReported()
        {
            var db = DbHelper.GetEmptyTestDB();

            var userName = RandomHelper.String();
            var user     = await UserHelper.CreateInDbAsync(db, userName : userName);

            var language = await CardLanguagHelper.CreateAsync(db);

            for (int i = 0; i < SearchCards.Request.MaxPageSize * 2; i++)
            {
                await CardHelper.CreateAsync(db, user, language : language);
            }
            var card = await CardHelper.CreateAsync(db, user, language : language);

            Guid subscriptionId;

            using (var dbContext = new MemCheckDbContext(db))
            {
                var subscriberRequest = new SubscribeToSearch.Request(user, Guid.Empty, RandomHelper.String(), "", Array.Empty <Guid>(), Array.Empty <Guid>());
                subscriptionId = (await new SubscribeToSearch(dbContext.AsCallContext()).RunAsync(subscriberRequest)).SearchId;
            }

            using (var dbContext = new MemCheckDbContext(db))
            {
                var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 2, new DateTime(2050, 05, 01)).RunAsync(subscriptionId);
                Assert.AreEqual(SearchCards.Request.MaxPageSize * 2 + 1, searchResult.TotalNewlyFoundCardCount);
                Assert.AreEqual(2, searchResult.NewlyFoundCards.Length);
                Assert.AreEqual(0, searchResult.CountOfCardsNotFoundAnymore_StillExists_UserAllowedToView);
                Assert.AreEqual(0, searchResult.CardsNotFoundAnymore_StillExists_UserAllowedToView.Length);
                Assert.AreEqual(0, searchResult.CountOfCardsNotFoundAnymore_Deleted_UserAllowedToView);
                Assert.AreEqual(0, searchResult.CardsNotFoundAnymore_Deleted_UserAllowedToView.Length);
                Assert.AreEqual(0, searchResult.CountOfCardsNotFoundAnymore_StillExists_UserNotAllowedToView);
                Assert.AreEqual(0, searchResult.CountOfCardsNotFoundAnymore_Deleted_UserNotAllowedToView);
            }

            var deletionDate = new DateTime(2050, 05, 02);

            using (var dbContext = new MemCheckDbContext(db))
            {
                var deleter = new DeleteCards(dbContext.AsCallContext(), deletionDate);
                await deleter.RunAsync(new DeleteCards.Request(user, card.Id.AsArray()));
            }

            var runDate = new DateTime(2050, 05, 04);

            using (var dbContext = new MemCheckDbContext(db))
            {
                var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 2, runDate).RunAsync(subscriptionId);
                Assert.AreEqual(0, searchResult.TotalNewlyFoundCardCount);
                Assert.AreEqual(0, searchResult.NewlyFoundCards.Length);
                Assert.AreEqual(0, searchResult.CountOfCardsNotFoundAnymore_StillExists_UserAllowedToView);
                Assert.AreEqual(0, searchResult.CardsNotFoundAnymore_StillExists_UserAllowedToView.Length);
                Assert.AreEqual(1, searchResult.CountOfCardsNotFoundAnymore_Deleted_UserAllowedToView);
                Assert.AreEqual(1, searchResult.CardsNotFoundAnymore_Deleted_UserAllowedToView.Length);
                var deletedCard = searchResult.CardsNotFoundAnymore_Deleted_UserAllowedToView.Single();
                Assert.IsNotNull(deletedCard.FrontSide);
                Assert.AreEqual(card.FrontSide, deletedCard.FrontSide !);
                Assert.AreEqual(userName, deletedCard.DeletionAuthor);
                Assert.IsTrue(deletedCard.CardIsViewable);
                Assert.AreEqual(deletionDate, deletedCard.DeletionUtcDate);
                Assert.AreEqual(0, searchResult.CountOfCardsNotFoundAnymore_StillExists_UserNotAllowedToView);
                Assert.AreEqual(0, searchResult.CountOfCardsNotFoundAnymore_Deleted_UserNotAllowedToView);
            }

            using (var dbContext = new MemCheckDbContext(db))
                Assert.AreEqual(runDate, dbContext.SearchSubscriptions.Single(s => s.Id == subscriptionId).LastRunUtcDate);
        }