public void Should_validate_command_and_update_site()
        {
            var command = new UpdateSiteDetails
            {
                SiteId          = Guid.NewGuid(),
                Url             = "url",
                Title           = "Title",
                MetaDescription = "Meta Description",
                MetaKeywords    = "Meta Keywords"
            };

            var repositoryMock = new Mock <ISiteRepository>();

            repositoryMock.Setup(x => x.GetById(command.SiteId)).Returns(new Site());

            var validatorMock = new Mock <IValidator <UpdateSiteDetails> >();

            validatorMock.Setup(x => x.Validate(command)).Returns(new ValidationResult());

            var createSiteHandler = new UpdateSiteDetailsHandler(repositoryMock.Object, validatorMock.Object);

            createSiteHandler.Handle(command);

            validatorMock.Verify(x => x.Validate(command));
            repositoryMock.Verify(x => x.Update(It.IsAny <Site>()));
        }
        public void Should_throw_validation_exception_when_validation_fails()
        {
            var command = new UpdateSiteDetails
            {
                SiteId          = Guid.NewGuid(),
                Url             = string.Empty,
                Title           = "Title",
                MetaDescription = "Meta Description",
                MetaKeywords    = "Meta Keywords"
            };

            var repositoryMock = new Mock <ISiteRepository>();

            repositoryMock.Setup(x => x.GetById(command.SiteId)).Returns(new Site());

            var validatorMock = new Mock <IValidator <UpdateSiteDetails> >();

            validatorMock.Setup(x => x.Validate(command)).Returns(new ValidationResult(new List <ValidationFailure> {
                new ValidationFailure("Url", "Url Error")
            }));

            var createSiteHandler = new UpdateSiteDetailsHandler(repositoryMock.Object, validatorMock.Object);

            Assert.Throws <ValidationException>(() => createSiteHandler.Handle(command));
        }