コード例 #1
0
        public CreateMovieCommandValidator(IQueryProcessor processor)
        {
            _processor = processor ?? throw new ArgumentNullException(nameof(processor));

            RuleFor(movie => movie.Title)
            .NotEmpty()
            .WithMessage("Title must be set.")
            .NotNull()
            .WithMessage("Title must be set.")
            .MaximumLength(DomainMovie.MaximumTitleLength)
            .WithMessage($"Title exceeded {DomainMovie.MaximumTitleLength} characters.")
            .MustAsync(MovieMustNotAlreadyExist)
            .WithMessage("Movie does already exist.");

            RuleFor(movie => movie.Description)
            .NotEmpty()
            .WithMessage("Description must be set.")
            .NotNull()
            .WithMessage("Description must be set.")
            .MaximumLength(DomainMovie.MaximumDescriptionLength)
            .WithMessage($"Description exceeded {DomainMovie.MaximumDescriptionLength} characters.");

            RuleFor(movie => movie.Genre)
            .NotEmpty()
            .WithMessage("Genre must be set.")
            .NotNull()
            .WithMessage("Genre must be set.")
            .Must(genre => genre != null && DomainGenre.Get(genre).IsValid)
            .WithMessage(movie => $"Genre {movie.Genre} is not a valid value.");

            RuleFor(movie => movie.YearReleased)
            .Must(year => year <= DateTime.UtcNow.Year)
            .WithMessage("Year of release may not be in the future.");
        }
コード例 #2
0
        public UpdateMovieCommandValidator()
        {
            RuleFor(movie => movie.Title)
            .NotEmpty()
            .WithMessage("Title must be set.")
            .NotNull()
            .WithMessage("Title must be set.")
            .MaximumLength(MaximumTitleLength)
            .WithMessage($"Title exceeded {MaximumTitleLength} characters.");

            RuleFor(movie => movie.Description)
            .NotEmpty()
            .WithMessage("Description must be set.")
            .NotNull()
            .WithMessage("Description must be set.");

            RuleFor(movie => movie.Genre)
            .NotEmpty()
            .WithMessage("Genre must be set.")
            .NotNull()
            .WithMessage("Genre must be set.")
            .Must(genre => genre != null && DomainGenre.Get(genre).IsValid)
            .WithMessage(movie => $"Genre {movie.Genre} is not a valid value.");

            RuleFor(movie => movie.YearReleased)
            .Must(year => year <= DateTime.UtcNow.Year)
            .WithMessage("Year of release may not be in the future.");
        }
コード例 #3
0
 public static DomainMovie ConvertToDomain(this CreateMovieCommand movie)
 {
     return(DomainMovie.Create(
                movie.Title,
                movie.Description,
                DomainGenre.Get(movie.Genre),
                movie.YearReleased));
 }
コード例 #4
0
 public DomainMovieCreateTest()
 {
     _validTitle         = RandomGenerator.RandomString(DomainModel.DomainMovie.MaximumTitleLength);
     _invalidTitle       = RandomGenerator.RandomString(DomainModel.DomainMovie.MaximumTitleLength + 10);
     _validDescription   = RandomGenerator.RandomString(DomainModel.DomainMovie.MaximumDescriptionLength);
     _invalidDescription = RandomGenerator.RandomString(DomainModel.DomainMovie.MaximumDescriptionLength + 10);
     _genre               = DomainGenre.Romance;
     _validYearReleased   = RandomGenerator.RandomPositiveNumber(2000);
     _invalidYearReleased = DateTime.Now.Year + 2;
 }
コード例 #5
0
        public Task <object> HandleAsync(GenresQuery query, CancellationToken cancellationToken)
        {
            _logger.LogDebug($"{GetType().Name} entered.");

            var genres = DomainGenre.GetAll()
                         .OrderBy(genre => genre.Key)
                         .Select(genre => genre.Key)
                         .ToList();

            _logger.LogInformation($"{genres.Count()} genres were retrieved from the system.");

            _logger.LogDebug($"{GetType().Name} leaving.");

            return(Task.FromResult(genres as object));
        }