public async Task ValidateAsync_VisitorExists_DoesNothing()
        {
            // Arrange
            var visitorContainer = new Mock <IVisitorContainer>();

            var visitor            = new Visitor();
            var loyaltycardService = new Mock <ILoyaltyCardService>();
            var visitorDAL         = new Mock <IVisitorDAL>();
            var visitorIdentity    = new Mock <IVisitorIdentity>();

            visitorDAL.Setup(x => x.GetAsync(visitorIdentity.Object)).ReturnsAsync(visitor);

            var visitorGetService = new VisitorService(visitorDAL.Object, loyaltycardService.Object);

            // Act
            var action = new Func <Task>(() => visitorGetService.ValidateAsync(visitorContainer.Object));

            // Assert
            await action.Should().NotThrowAsync <Exception>();
        }
        public async Task ValidateAsync_VisitorNotExists_ThrowsError()
        {
            // Arrange
            var fixture = new Fixture();
            var id      = fixture.Create <int>();

            var visitorContainer = new Mock <IVisitorContainer>();

            visitorContainer.Setup(x => x.VisitorId).Returns(id);
            var visitorIdentity    = new Mock <IVisitorIdentity>();
            var loyaltycardService = new Mock <ILoyaltyCardService>();
            var visitor            = new Visitor();
            var visitorDAL         = new Mock <IVisitorDAL>();

            visitorDAL.Setup(x => x.GetAsync(visitorIdentity.Object)).ReturnsAsync((Visitor)null);

            var visitorGetService = new VisitorService(visitorDAL.Object, loyaltycardService.Object);

            // Act
            var action = new Func <Task>(() => visitorGetService.ValidateAsync(visitorContainer.Object));
            // Assert
            await action.Should().ThrowAsync <InvalidOperationException>($"Visitor not found by id {id}");
        }