public async Task GetNotificationTest()
        {
            var id     = Guid.NewGuid();
            var record = new NotificationRecord
            {
                OwnerUserId = Guid.NewGuid().ToString(),
                Id          = id,
                Parameters  = new Dictionary <string, object>
                {
                    { "testKey", "testValue" }
                },
                Created = DateTimeOffset.UtcNow,
                Event   = NotificationEvent.ArticleCreated
            };

            var store = new Mock <INotificationHistoryDataStore>();

            store.Setup(x => x.FindAsync(It.Is <Guid>(guid => guid == id)))
            .ReturnsAsync(record);

            var service = new NotificationHistoryService(store.Object, DefaultMapper);
            var result  = await service.GetAsync(new GetNotificationRequest(record.OwnerUserId, id));

            ValidateRecords(record, result);
        }
        public async Task GetNotificationValidationFailedTest()
        {
            var store = new Mock <INotificationHistoryDataStore>();

            var service = new NotificationHistoryService(store.Object, DefaultMapper);
            await Assert.ThrowsAsync <ArgumentNullException>(() => service.GetAsync(null));

            store.Verify(x => x.FindAsync(It.IsAny <Guid>()), Times.Never);
        }
        public async Task GetMissingNotificationFailedTest()
        {
            var store = new Mock <INotificationHistoryDataStore>();

            store.Setup(x => x.FindAsync(It.IsAny <Guid>()))
            .ReturnsAsync((NotificationRecord)null);

            var id      = Guid.NewGuid();
            var service = new NotificationHistoryService(store.Object, DefaultMapper);
            await Assert.ThrowsAsync <NotFoundException>(() => service.GetAsync(new GetNotificationRequest(Guid.NewGuid().ToString(), id)));

            store.Verify(x => x.FindAsync(id), Times.Once);
        }
        public async Task GetInvalidOwnerNotificationFailedTest()
        {
            var id     = Guid.NewGuid();
            var record = new NotificationRecord
            {
                OwnerUserId = Guid.NewGuid().ToString(),
                Id          = id
            };

            var store = new Mock <INotificationHistoryDataStore>();

            store.Setup(x => x.FindAsync(It.Is <Guid>(guid => guid == id)))
            .ReturnsAsync(record);

            var service = new NotificationHistoryService(store.Object, DefaultMapper);
            await Assert.ThrowsAsync <NotFoundException>(() => service.GetAsync(new GetNotificationRequest(Guid.NewGuid().ToString(), id)));

            store.Verify(x => x.FindAsync(id), Times.Once);
        }