public void WhenReminderCreated_IfItemExists_ShouldRaiseException()
        {
            using var factory = new ReminderWebApplicationFactory();
            var id      = Guid.NewGuid();
            var storage = factory
                          .WithItems(Create.Reminder.WithId(id))
                          .GetClient();

            Assert.CatchAsync <ReminderItemAllreadyExistException>(() =>
                                                                   storage.AddAsync(Create.Reminder.WithId(id))
                                                                   );
        }
        public async Task WhenReminderFind_IfItemExists_ShouldReturnIt()
        {
            using var factory = new ReminderWebApplicationFactory();
            var id      = Guid.NewGuid();
            var storage = factory
                          .WithItems(Create.Reminder.WithId(id))
                          .GetClient();

            var item = await storage.GetAsync(id);

            Assert.AreEqual(id, item.Id);
        }
        public async Task WhenReminderUpdated_IfItemExists_ShouldUpdateItem()
        {
            using var factory = new ReminderWebApplicationFactory();
            var id      = Guid.NewGuid();
            var storage = factory
                          .WithItems(Create.Reminder.WithId(id).WithMessage("Initial"))
                          .GetClient();

            await storage.UpdateAsync(Create.Reminder.WithId(id).WithMessage("Updated"));

            var item = await storage.GetAsync(id);

            Assert.AreEqual("Updated", item.Message);
        }
        public async Task WhenReminderList_IfDatetimeSpecified_ShouldReturnMatchingItems()
        {
            using var factory = new ReminderWebApplicationFactory();
            var storage = factory
                          .WithItems(
                Create.Reminder.AtDatetime(DateTimeOffset.UtcNow.AddMinutes(-1)),
                Create.Reminder.AtDatetime(DateTimeOffset.UtcNow.AddMinutes(1))
                )
                          .GetClient();

            var items = await storage.FindByAsync(ReminderItemFilter.CreatedAtNow());

            Assert.AreEqual(1, items.Length);
        }
        public async Task WhenReminderList_IfStatusSpecified_ShouldReturnMatchingItems()
        {
            using var factory = new ReminderWebApplicationFactory();
            var storage = factory
                          .WithItems(
                Create.Reminder.WithStatus(ReminderItemStatus.Ready),
                Create.Reminder.WithStatus(ReminderItemStatus.Created))
                          .GetClient();

            var items = await storage.FindByAsync(
                ReminderItemFilter.ByStatus(ReminderItemStatus.Ready)
                );

            Assert.AreEqual(1, items.Length);
        }