public async Task Invoke()
        {
            var animals = await _mediator.Send(new GetDeletedAnimalsQuery());

            if (animals.Any())
            {
                foreach (var a in animals)
                {
                    var animalId = a.Id;

                    var qrDeleteCommand = new DeleteQRCodeCommand
                    {
                        AnimalId = animalId
                    };

                    await _mediator.Send(qrDeleteCommand);

                    var animalDeleteCommand = new DeleteAnimalCommand
                    {
                        Id = animalId
                    };

                    await _mediator.Send(animalDeleteCommand);
                }
            }

            _logger.LogInformation($"The clear database job completed successfully. {animals.Count()} marked data has been deleted.");
        }
        public void Handle_GivenInvalidId_ThrowsException()
        {
            var command = new DeleteQRCodeCommand
            {
                AnimalId = 99
            };

            var handler = new DeleteQRCodeCommand.DeleteQRCodeCommandHandler(Context);

            Should.ThrowAsync <NotFoundException>(() => handler.Handle(command, CancellationToken.None));
        }
        public async Task Handle_GivenValidId_ShouldRemovePersistedQRCode()
        {
            var command = new DeleteQRCodeCommand
            {
                AnimalId = 1
            };

            var handler = new DeleteQRCodeCommand.DeleteQRCodeCommandHandler(Context);

            await handler.Handle(command, CancellationToken.None);

            var entity = Context.QRCodes.Find(command.AnimalId);

            entity.ShouldBeNull();
        }