public async Task CardWithoutPreviousVersion_ToBeNotifiedWithoutVisibility() { var db = GetEmptyTestDB(); var user1 = await UserHelper.CreateInDbAsync(db); var deletedCard = await CreateDeletedCardAsync(db, user1, new DateTime(2020, 11, 2), user1.AsArray()); var user2 = await UserHelper.CreateInDbAsync(db); await CardSubscriptionHelper.CreateAsync(db, user2, deletedCard.Card, new DateTime(2020, 11, 1)); var now = new DateTime(2020, 11, 2); using (var dbContext = new MemCheckDbContext(db)) { var notifier = new UserCardDeletionsNotifier(dbContext.AsCallContext(), now); var versions = await notifier.RunAsync(user2); Assert.AreEqual(1, versions.Length); Assert.IsFalse(versions[0].CardIsViewable); Assert.IsNull(versions[0].FrontSide); Assert.IsNull(versions[0].DeletionDescription); } using (var dbContext = new MemCheckDbContext(db)) Assert.AreEqual(now, dbContext.CardNotifications.Single(cn => cn.CardId == deletedCard.Card && cn.UserId == user2).LastNotificationUtcDate); }
public async Task CardWithoutPreviousVersion_ToBeNotified_UsingApplicationDelete() { var db = GetEmptyTestDB(); var user = await UserHelper.CreateInDbAsync(db); var card = await CardHelper.CreateAsync(db, user, new DateTime(2020, 11, 1)); await CardSubscriptionHelper.CreateAsync(db, user, card.Id, new DateTime(2020, 11, 1)); await DeleteCardAsync(db, user, card.Id, new DateTime(2020, 11, 2)); var now = new DateTime(2020, 11, 3); using (var dbContext = new MemCheckDbContext(db)) { var notifier = new UserCardDeletionsNotifier(dbContext.AsCallContext(), now); var deletions = await notifier.RunAsync(user); Assert.AreEqual(1, deletions.Length); Assert.IsTrue(deletions[0].CardIsViewable); Assert.AreEqual(card.FrontSide, deletions[0].FrontSide); Assert.AreEqual(DeletionDescription, deletions[0].DeletionDescription); } using (var dbContext = new MemCheckDbContext(db)) Assert.AreEqual(now, dbContext.CardNotifications.Single(cn => cn.CardId == card.Id && cn.UserId == user).LastNotificationUtcDate); }
public async Task CardWithoutPreviousVersion_ToBeNotified_UsingApplicationDelete() { var user1 = await CreateUserAsync(); var card = await CreateCardAsync(user1.Id, new DateTime(2020, 11, 1)); await CreateCardNotificationAsync(user1.Id, card.Id, new DateTime(2020, 11, 1)); await DeleteCardAsync(user1.Id, card.Id, new DateTime(2020, 11, 2)); using (var dbContext = new MemCheckDbContext(testDB)) { Assert.IsTrue(dbContext.CardNotifications.Any(cn => cn.CardId == card.Id)); //DeleteCards must not cascade delete the notifications } using (var dbContext = new MemCheckDbContext(testDB)) { var notifier = new UserCardDeletionsNotifier(dbContext); var deletions = notifier.Run(user1); Assert.AreEqual(1, deletions.Length); Assert.IsTrue(deletions[0].CardIsViewable); Assert.AreEqual(card.FrontSide, deletions[0].FrontSide); Assert.AreEqual(DeletionDescription, deletions[0].DeletionDescription); } }
public async Task CardWithoutPreviousVersion_ToBeNotified() { var user1 = await CreateUserAsync(); var user2 = await CreateUserAsync(); var card = await CreateCardAsync(user1.Id, new DateTime(2020, 11, 1), new[] { user1.Id, user2.Id }); await CreateCardNotificationAsync(user1.Id, card.Id, new DateTime(2020, 11, 1)); await CreateCardNotificationAsync(user2.Id, card.Id, new DateTime(2020, 11, 1)); await DeleteCardAsync(user1.Id, card.Id, new DateTime(2020, 11, 2)); using (var dbContext = new MemCheckDbContext(testDB)) { var notifier = new UserCardDeletionsNotifier(dbContext); var user1versions = notifier.Run(user1); Assert.AreEqual(1, user1versions.Length); Assert.IsTrue(user1versions[0].CardIsViewable); Assert.AreEqual(card.FrontSide, user1versions[0].FrontSide); Assert.AreEqual(DeletionDescription, user1versions[0].DeletionDescription); var user2versions = notifier.Run(user2); Assert.AreEqual(1, user2versions.Length); Assert.IsTrue(user2versions[0].CardIsViewable); Assert.AreEqual(card.FrontSide, user2versions[0].FrontSide); Assert.AreEqual(DeletionDescription, user2versions[0].DeletionDescription); } }
public async Task EmptyDB() { var db = GetEmptyTestDB(); var user = await UserHelper.CreateInDbAsync(db); using var dbContext = new MemCheckDbContext(db); var notifier = new UserCardDeletionsNotifier(dbContext.AsCallContext(), DateTime.UtcNow); var versions = await notifier.RunAsync(user); Assert.AreEqual(0, versions.Length); }
public async Task EmptyDB() { var user1 = await CreateUserAsync(); using (var dbContext = new MemCheckDbContext(testDB)) { var notifier = new UserCardDeletionsNotifier(dbContext); var versions = notifier.Run(user1); Assert.AreEqual(0, versions.Length); } }
public async Task CardWithoutPreviousVersion_NotToBeNotified() { var user = await CreateUserAsync(); var card = await CreateCardAsync(user.Id, new DateTime(2020, 11, 1)); await CreateCardNotificationAsync(user.Id, card.Id, new DateTime(2020, 11, 3)); await DeleteCardAsync(user.Id, card.Id, new DateTime(2020, 11, 2)); using (var dbContext = new MemCheckDbContext(testDB)) { var notifier = new UserCardDeletionsNotifier(dbContext); var versions = notifier.Run(user); Assert.AreEqual(0, versions.Length); } }
public async Task CardWithoutPreviousVersion_ToBeNotifiedWithoutVisibility() { var user1 = await CreateUserAsync(); var deletedCard = await CreateDeletedCardAsync(user1.Id, new DateTime(2020, 11, 2), new[] { user1.Id }); var user2 = await CreateUserAsync(); await CreateCardNotificationAsync(user2.Id, deletedCard.Card, new DateTime(2020, 11, 1)); using (var dbContext = new MemCheckDbContext(testDB)) { var notifier = new UserCardDeletionsNotifier(dbContext); var versions = notifier.Run(user2); Assert.AreEqual(1, versions.Length); Assert.IsFalse(versions[0].CardIsViewable); Assert.IsNull(versions[0].FrontSide); Assert.IsNull(versions[0].DeletionDescription); } }
public async Task CardWithoutPreviousVersion_NotToBeNotified() { var db = GetEmptyTestDB(); var user = await UserHelper.CreateInDbAsync(db); var card = await CardHelper.CreateAsync(db, user, new DateTime(2020, 11, 1)); await CardSubscriptionHelper.CreateAsync(db, user, card.Id, new DateTime(2020, 11, 3)); var lastNotificationDate = new DateTime(2020, 11, 3); await DeleteCardAsync(db, user, card.Id, lastNotificationDate); using (var dbContext = new MemCheckDbContext(db)) { var notifier = new UserCardDeletionsNotifier(dbContext.AsCallContext(), new DateTime(2020, 11, 10)); var versions = await notifier.RunAsync(user); Assert.AreEqual(0, versions.Length); } using (var dbContext = new MemCheckDbContext(db)) Assert.IsTrue(dbContext.CardNotifications.Single(cn => cn.CardId == card.Id && cn.UserId == user).LastNotificationUtcDate == lastNotificationDate); }