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); }
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); }
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); }
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 <IActionResult> DeleteCards([FromBody] DeleteCardsRequest request) { try { var user = await userManager.GetUserAsync(HttpContext.User); var appRequest = new DeleteCards.Request(user, request.CardIds); await new DeleteCards(dbContext, localizer).RunAsync(appRequest); return(Ok()); } catch (Exception e) { return(ControllerError.BadRequest(e, this)); } }
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); }