Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        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);
            }
        }
Exemple #8
0
        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);
            }
        }
Exemple #9
0
        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);
        }