public async Task DoesValidatorPreventFromCreatingDuplicateClass()
        {
            var context   = new FakeDbContext();
            var validator = new CreateClassCommandValidator(context);
            var request   = new CreateClassCommand(1, "a");

            var result = await validator.ValidateAsync(request);

            result.IsValid.Should().BeFalse();
            result.Errors.Should().HaveCount(1).And.ContainSingle(x => x.ErrorMessage == "Mentioned class must be unique." && x.ErrorCode == "AsyncPredicateValidator");
        }
        public async Task DoesValidatorPreventFromCreatingClassWithTooLongSectionName()
        {
            var context   = new FakeDbContext();
            var validator = new CreateClassCommandValidator(context);
            var request   = new CreateClassCommand(3, new string(Enumerable.Repeat('a', 300).ToArray()));

            var result = await validator.ValidateAsync(request);

            result.IsValid.Should().BeFalse();
            result.Errors.Should().HaveCount(1).And.ContainSingle(x => x.ErrorCode == "MaximumLengthValidator");
        }
        public async Task DoesValidatorPreventFromCreatingClassWithNoYearAndSection()
        {
            var context   = new FakeDbContext();
            var validator = new CreateClassCommandValidator(context);
            var request   = new CreateClassCommand(0, null);

            var result = await validator.ValidateAsync(request);

            result.IsValid.Should().BeFalse();
            result.Errors.Should().HaveCount(2).And.Contain(x => x.ErrorCode == "NotEmptyValidator");
        }
        public async Task DoesValidatorAllowCorrectCreateClassCommand()
        {
            var context   = new FakeDbContext();
            var validator = new CreateClassCommandValidator(context);
            var request   = new CreateClassCommand(3, "f");

            var result = await validator.ValidateAsync(request);

            result.IsValid.Should().BeTrue();
            result.Errors.Should().HaveCount(0);
        }