public async Task NothingToReportBecauseDbEmpty() { var db = DbHelper.GetEmptyTestDB(); var user = await UserHelper.CreateInDbAsync(db); var subscription = await SearchSubscriptionHelper.CreateAsync(db, user, lastNotificationDate : new DateTime(2050, 04, 01)); var runDate = new DateTime(2050, 05, 01); using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 100, runDate).RunAsync(subscription.Id); 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(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); } using (var dbContext = new MemCheckDbContext(db)) Assert.AreEqual(runDate, dbContext.SearchSubscriptions.Single(s => s.Id == subscription.Id).LastRunUtcDate); }
public async Task TestGetRightSearchesPerUser() { var testDB = DbHelper.GetEmptyTestDB(); var user1Id = await UserHelper.CreateInDbAsync(testDB); await SearchSubscriptionHelper.CreateAsync(testDB, user1Id); await SearchSubscriptionHelper.CreateAsync(testDB, user1Id); var user2Id = await UserHelper.CreateInDbAsync(testDB); await SearchSubscriptionHelper.CreateAsync(testDB, user2Id); await SearchSubscriptionHelper.CreateAsync(testDB, user2Id); await SearchSubscriptionHelper.CreateAsync(testDB, user2Id); using var dbContext = new MemCheckDbContext(testDB); var user1Request = new GetSearchSubscriptions.Request(user1Id); var user1Subscriptions = await new GetSearchSubscriptions(dbContext.AsCallContext()).RunAsync(user1Request); Assert.AreEqual(2, user1Subscriptions.Count()); var user2Request = new GetSearchSubscriptions.Request(user2Id); var user2Subscriptions = await new GetSearchSubscriptions(dbContext.AsCallContext()).RunAsync(user2Request); Assert.AreEqual(3, user2Subscriptions.Count()); }
public async Task TestCardCountOnLastRun() { var testDB = DbHelper.GetEmptyTestDB(); var userId = await UserHelper.CreateInDbAsync(testDB); var subscription = await SearchSubscriptionHelper.CreateAsync(testDB, userId); using (var dbContext = new MemCheckDbContext(testDB)) await new UserSearchNotifier(dbContext.AsCallContext(), 100, new DateTime(2050, 05, 01)).RunAsync(subscription.Id); using (var dbContext = new MemCheckDbContext(testDB)) { var request = new GetSearchSubscriptions.Request(userId); var s = (await new GetSearchSubscriptions(dbContext.AsCallContext()).RunAsync(request)).Single(); Assert.AreEqual(0, s.CardCountOnLastRun); } await CardHelper.CreateAsync(testDB, userId); await CardHelper.CreateAsync(testDB, userId); await CardHelper.CreateAsync(testDB, userId); await CardHelper.CreateAsync(testDB, userId); using (var dbContext = new MemCheckDbContext(testDB)) await new UserSearchNotifier(dbContext.AsCallContext(), 100, new DateTime(2050, 05, 02)).RunAsync(subscription.Id); using (var dbContext = new MemCheckDbContext(testDB)) { var request = new GetSearchSubscriptions.Request(userId); var s = (await new GetSearchSubscriptions(dbContext.AsCallContext()).RunAsync(request)).Single(); Assert.AreEqual(4, s.CardCountOnLastRun); } }
public async Task CorrectDeletion_OtherSubscriptionsExist() { var testDB = DbHelper.GetEmptyTestDB(); var userId = await UserHelper.CreateInDbAsync(testDB); await SearchSubscriptionHelper.CreateAsync(testDB, userId); var subscription = await SearchSubscriptionHelper.CreateAsync(testDB, userId); await SearchSubscriptionHelper.CreateAsync(testDB, userId); using (var dbContext = new MemCheckDbContext(testDB)) { var request = new DeleteSearchSubscription.Request(userId, subscription.Id); await new DeleteSearchSubscription(dbContext.AsCallContext()).RunAsync(request); } using (var dbContext = new MemCheckDbContext(testDB)) { var request = new GetSearchSubscriptions.Request(userId); var subscriptions = await new GetSearchSubscriptions(dbContext.AsCallContext()).RunAsync(request); Assert.AreEqual(2, subscriptions.Count()); Assert.IsFalse(subscriptions.Any(s => s.Id == subscription.Id)); } }
public async Task TestUsersWithSubscriptions() { var testDB = DbHelper.GetEmptyTestDB(); var user1 = await UserHelper.CreateInDbAsync(testDB); var user2 = await UserHelper.CreateInDbAsync(testDB); await SearchSubscriptionHelper.CreateAsync(testDB, user2); var user3 = await UserHelper.CreateInDbAsync(testDB); await SearchSubscriptionHelper.CreateAsync(testDB, user3); await SearchSubscriptionHelper.CreateAsync(testDB, user3); await SearchSubscriptionHelper.CreateAsync(testDB, user3); using var dbContext = new MemCheckDbContext(testDB); var counter = new UserSearchSubscriptionLister(dbContext.AsCallContext()); var user1Subscriptions = await counter.RunAsync(user1); Assert.AreEqual(0, user1Subscriptions.Length); var user2Subscriptions = await counter.RunAsync(user2); Assert.AreEqual(1, user2Subscriptions.Length); var user3Subscriptions = await counter.RunAsync(user3); Assert.AreEqual(3, user3Subscriptions.Length); }
public async Task CardToReportBecauseFirstRun() { var db = DbHelper.GetEmptyTestDB(); var user = await UserHelper.CreateInDbAsync(db); var card = await CardHelper.CreateAsync(db, user, versionDate : new DateTime(2050, 03, 01), userWithViewIds : user.AsArray()); var subscription = await SearchSubscriptionHelper.CreateAsync(db, user); var runDate = new DateTime(2050, 05, 01); using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 100, runDate).RunAsync(subscription.Id); Assert.AreEqual(1, searchResult.TotalNewlyFoundCardCount); Assert.AreEqual(1, 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 foundCard = searchResult.NewlyFoundCards.Single(); Assert.AreEqual(card.Id, foundCard.CardId); Assert.AreEqual(card.FrontSide, foundCard.FrontSide); Assert.AreEqual(card.VersionDescription, foundCard.VersionDescription); Assert.AreEqual(card.VersionUtcDate, foundCard.VersionUtcDate); } using (var dbContext = new MemCheckDbContext(db)) Assert.AreEqual(runDate, dbContext.SearchSubscriptions.Single(s => s.Id == subscription.Id).LastRunUtcDate); }
public async Task NewlyFoundToReport() { var db = DbHelper.GetEmptyTestDB(); var user = await UserHelper.CreateInDbAsync(db); var language = await CardLanguagHelper.CreateAsync(db); var card1 = await CardHelper.CreateAsync(db, user, versionDate : new DateTime(2050, 03, 01), language : language); var card2 = await CardHelper.CreateAsync(db, user, versionDate : new DateTime(2050, 04, 02), language : language); var someText = RandomHelper.String(); var subscriptionName = RandomHelper.String(); var subscription = await SearchSubscriptionHelper.CreateAsync(db, user, subscriptionName, someText); using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 10, new DateTime(2050, 05, 01)).RunAsync(subscription.Id); Assert.AreEqual(subscriptionName, searchResult.SubscriptionName); 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(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); } using (var dbContext = new MemCheckDbContext(db)) { UpdateCard.Request updateRequest = new(card1.Id, user, someText, Array.Empty <Guid>(), RandomHelper.String(), Array.Empty <Guid>(), RandomHelper.String(), Array.Empty <Guid>(), language, Array.Empty <Guid>(), Array.Empty <Guid>(), RandomHelper.String()); await new UpdateCard(dbContext.AsCallContext(), new DateTime(2050, 05, 02)).RunAsync(updateRequest); } var runDate = new DateTime(2050, 05, 03); using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 100, runDate).RunAsync(subscription.Id); Assert.AreEqual(subscriptionName, searchResult.SubscriptionName); Assert.AreEqual(1, searchResult.TotalNewlyFoundCardCount); Assert.AreEqual(1, 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); Assert.AreEqual(card1.Id, searchResult.NewlyFoundCards.Single().CardId); } using (var dbContext = new MemCheckDbContext(db)) Assert.AreEqual(runDate, dbContext.SearchSubscriptions.Single(s => s.Id == subscription.Id).LastRunUtcDate); }
public async Task TestNoUser() { var testDB = DbHelper.GetEmptyTestDB(); var userId = await UserHelper.CreateInDbAsync(testDB); var subscription = await SearchSubscriptionHelper.CreateAsync(testDB, userId); using var dbContext = new MemCheckDbContext(testDB); var request = new SetSearchSubscriptionName.Request(Guid.Empty, subscription.Id, RandomHelper.String()); await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => await new SetSearchSubscriptionName(dbContext.AsCallContext()).RunAsync(request)); }
public async Task TestTooLongName() { var testDB = DbHelper.GetEmptyTestDB(); var userId = await UserHelper.CreateInDbAsync(testDB); var subscription = await SearchSubscriptionHelper.CreateAsync(testDB, userId); using var dbContext = new MemCheckDbContext(testDB); var request = new SetSearchSubscriptionName.Request(userId, subscription.Id, RandomHelper.String(SetSearchSubscriptionName.Request.MaxNameLength + 1)); await Assert.ThrowsExceptionAsync <RequestInputException>(async() => await new SetSearchSubscriptionName(dbContext.AsCallContext()).RunAsync(request)); }
public async Task NameWithMaxLengthDoesNotThrow() { var testDB = DbHelper.GetEmptyTestDB(); var userId = await UserHelper.CreateInDbAsync(testDB); var subscription = await SearchSubscriptionHelper.CreateAsync(testDB, userId); using var dbContext = new MemCheckDbContext(testDB); var request = new SetSearchSubscriptionName.Request(userId, subscription.Id, " " + RandomHelper.String(SetSearchSubscriptionName.Request.MaxNameLength) + "\t\t"); await new SetSearchSubscriptionName(dbContext.AsCallContext()).RunAsync(request); }
public async Task CorrectDeletion_OnlySubscription() { var testDB = DbHelper.GetEmptyTestDB(); var userId = await UserHelper.CreateInDbAsync(testDB); var subscription = await SearchSubscriptionHelper.CreateAsync(testDB, userId); using (var dbContext = new MemCheckDbContext(testDB)) await new DeleteSearchSubscription(dbContext.AsCallContext()).RunAsync(new DeleteSearchSubscription.Request(userId, subscription.Id)); using (var dbContext = new MemCheckDbContext(testDB)) Assert.AreEqual(0, (await new GetSearchSubscriptions(dbContext.AsCallContext()).RunAsync(new GetSearchSubscriptions.Request(userId))).Count()); }
public async Task TestSimplestSearch() { var testDB = DbHelper.GetEmptyTestDB(); var userId = await UserHelper.CreateInDbAsync(testDB); await SearchSubscriptionHelper.CreateAsync(testDB, userId); using var dbContext = new MemCheckDbContext(testDB); var request = new GetSearchSubscriptions.Request(userId); var subscriptions = await new GetSearchSubscriptions(dbContext.AsCallContext()).RunAsync(request); Assert.AreEqual(1, subscriptions.Count()); }
public async Task UserNotOwnerOfSubscription() { var testDB = DbHelper.GetEmptyTestDB(); var subscriptionOwnerId = await UserHelper.CreateInDbAsync(testDB); var subscription = await SearchSubscriptionHelper.CreateAsync(testDB, subscriptionOwnerId); var userId = await UserHelper.CreateInDbAsync(testDB); using var dbContext = new MemCheckDbContext(testDB); var request = new DeleteSearchSubscription.Request(userId, subscription.Id); await Assert.ThrowsExceptionAsync <RequestInputException>(async() => await new DeleteSearchSubscription(dbContext.AsCallContext()).RunAsync(request)); }
public async Task CardsNotFoundAnymore_Deleted_UserAllowedToView() { var db = DbHelper.GetEmptyTestDB(); var cardCreatorUserName = RandomHelper.String(); var cardCreator = await UserHelper.CreateInDbAsync(db, userName : cardCreatorUserName); var language = await CardLanguagHelper.CreateAsync(db); var card = await CardHelper.CreateAsync(db, cardCreator, versionDate : new DateTime(2050, 03, 01), language : language); var subscriber = await UserHelper.CreateInDbAsync(db); var subscription = await SearchSubscriptionHelper.CreateAsync(db, subscriber); using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 100, new DateTime(2050, 05, 01)).RunAsync(subscription.Id); Assert.AreEqual(1, searchResult.TotalNewlyFoundCardCount); } using (var dbContext = new MemCheckDbContext(db)) { var deletionRequest = new DeleteCards.Request(cardCreator, card.Id.AsArray()); await new DeleteCards(dbContext.AsCallContext()).RunAsync(deletionRequest); } var runDate = new DateTime(2050, 05, 03); using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 100, runDate).RunAsync(subscription.Id); 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.IsTrue(deletedCard.CardIsViewable); Assert.AreEqual(card.FrontSide, deletedCard.FrontSide); Assert.AreEqual(cardCreatorUserName, deletedCard.DeletionAuthor); 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 == subscription.Id).LastRunUtcDate); }
public async Task CountOfCardsNotFoundAnymore_StillExists_UserNotAllowedToView() { var db = DbHelper.GetEmptyTestDB(); var cardCreator = await UserHelper.CreateInDbAsync(db); var language = await CardLanguagHelper.CreateAsync(db); var card = await CardHelper.CreateAsync(db, cardCreator, versionDate : new DateTime(2050, 03, 01), language : language); var subscriber = await UserHelper.CreateInDbAsync(db); var subscription = await SearchSubscriptionHelper.CreateAsync(db, subscriber); using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 100, new DateTime(2050, 05, 01)).RunAsync(subscription.Id); Assert.AreEqual(1, searchResult.TotalNewlyFoundCardCount); } using (var dbContext = new MemCheckDbContext(db)) { var updateRequest = UpdateCardHelper.RequestForVisibilityChange(card, cardCreator.AsArray()); await new UpdateCard(dbContext.AsCallContext(), new DateTime(2050, 05, 02)).RunAsync(updateRequest); } var runDate = new DateTime(2050, 05, 03); using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 100, runDate).RunAsync(subscription.Id); 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(0, searchResult.CountOfCardsNotFoundAnymore_Deleted_UserAllowedToView); Assert.AreEqual(0, searchResult.CardsNotFoundAnymore_Deleted_UserAllowedToView.Length); Assert.AreEqual(1, 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 == subscription.Id).LastRunUtcDate); }
public async Task TestCorrectRenaming() { var testDB = DbHelper.GetEmptyTestDB(); var userId = await UserHelper.CreateInDbAsync(testDB); var subscription = await SearchSubscriptionHelper.CreateAsync(testDB, userId); var newName = RandomHelper.String(); using (var dbContext = new MemCheckDbContext(testDB)) { var request = new SetSearchSubscriptionName.Request(userId, subscription.Id, " " + newName + "\t\t"); await new SetSearchSubscriptionName(dbContext.AsCallContext()).RunAsync(request); } using (var dbContext = new MemCheckDbContext(testDB)) { var request = new GetSearchSubscriptions.Request(userId); var subscriptions = await new GetSearchSubscriptions(dbContext.AsCallContext()).RunAsync(request); Assert.AreEqual(1, subscriptions.Count()); Assert.AreEqual(newName, subscriptions.Single().Name); } }
public async Task TestRightData() { var testDB = DbHelper.GetEmptyTestDB(); var userId = await UserHelper.CreateInDbAsync(testDB); var deckDescription = RandomHelper.String(); var deck = await DeckHelper.CreateAsync(testDB, userId, deckDescription); var name = RandomHelper.String(); var requiredText = RandomHelper.String(); var lastNotifDate = new DateTime(2032, 1, 8); var savedSubscription = await SearchSubscriptionHelper.CreateAsync(testDB, userId, name : name, requiredText : requiredText, excludedDeckId : deck, lastNotificationDate : lastNotifDate); using var dbContext = new MemCheckDbContext(testDB); var request = new GetSearchSubscriptions.Request(userId); var subscription = (await new GetSearchSubscriptions(dbContext.AsCallContext()).RunAsync(request)).Single(); Assert.AreEqual(savedSubscription.Id, subscription.Id); Assert.AreEqual(name, subscription.Name); Assert.AreEqual(requiredText, subscription.RequiredText); Assert.AreEqual(deckDescription, subscription.ExcludedDeck); Assert.AreEqual(lastNotifDate, subscription.LastRunUtcDate); Assert.AreEqual(lastNotifDate, subscription.RegistrationUtcDate); }
public async Task CountOfCardsNotFoundAnymore_Deleted_UserNotAllowedToView() { var db = DbHelper.GetEmptyTestDB(); var cardCreator = await UserHelper.CreateInDbAsync(db); var language = await CardLanguagHelper.CreateAsync(db); var card = await CardHelper.CreateAsync(db, cardCreator, versionDate : new DateTime(2050, 03, 01), language : language); var subscriber = await UserHelper.CreateInDbAsync(db); var subscription = await SearchSubscriptionHelper.CreateAsync(db, subscriber); using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 100, new DateTime(2050, 05, 01)).RunAsync(subscription.Id); Assert.AreEqual(1, searchResult.TotalNewlyFoundCardCount); } //Create a previous version on which subscriber can see the card using (var dbContext = new MemCheckDbContext(db)) { var updateRequest = UpdateCardHelper.RequestForFrontSideChange(card, RandomHelper.String()); await new UpdateCard(dbContext.AsCallContext(), new DateTime(2050, 05, 02)).RunAsync(updateRequest); } //So this version does not appear as new in a search using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 100, new DateTime(2050, 05, 03)).RunAsync(subscription.Id); 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(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); } //Create a previous version which prevents subscriber from seing the card using (var dbContext = new MemCheckDbContext(db)) { var updateRequest = UpdateCardHelper.RequestForVisibilityChange(card, cardCreator.AsArray()); await new UpdateCard(dbContext.AsCallContext(), new DateTime(2050, 05, 02)).RunAsync(updateRequest); } //Delete the card using (var dbContext = new MemCheckDbContext(db)) { var deletionRequest = new DeleteCards.Request(cardCreator, card.Id.AsArray()); await new DeleteCards(dbContext.AsCallContext()).RunAsync(deletionRequest); } var runDate = new DateTime(2050, 05, 03); //Now the card must be reported as disappeard using (var dbContext = new MemCheckDbContext(db)) { var searchResult = await new UserSearchNotifier(dbContext.AsCallContext(), 100, runDate).RunAsync(subscription.Id); 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(0, searchResult.CountOfCardsNotFoundAnymore_Deleted_UserAllowedToView); Assert.AreEqual(0, searchResult.CardsNotFoundAnymore_Deleted_UserAllowedToView.Length); Assert.AreEqual(0, searchResult.CountOfCardsNotFoundAnymore_StillExists_UserNotAllowedToView); Assert.AreEqual(1, searchResult.CountOfCardsNotFoundAnymore_Deleted_UserNotAllowedToView); } using (var dbContext = new MemCheckDbContext(db)) Assert.AreEqual(runDate, dbContext.SearchSubscriptions.Single(s => s.Id == subscription.Id).LastRunUtcDate); }