public async Task ValidateAsync_should_succeed_when_command_valid()
        {
            var student = new Student(Guid.NewGuid(), "existing", "Student");

            var studentsRepository = NSubstitute.Substitute.For <IStudentsRepository>();

            studentsRepository.FindByIdAsync(Arg.Any <Guid>(), Arg.Any <CancellationToken>())
            .ReturnsForAnyArgs(student);

            var course = new Course(Guid.NewGuid(), "existing course");

            var coursesRepository = NSubstitute.Substitute.For <ICoursesRepository>();

            coursesRepository.FindByIdAsync(Arg.Any <Guid>(), Arg.Any <CancellationToken>())
            .ReturnsForAnyArgs(course);

            var unitOfWork = NSubstitute.Substitute.For <ISchoolUnitOfWork>();

            unitOfWork.StudentsRepository.ReturnsForAnyArgs(studentsRepository);
            unitOfWork.CoursesRepository.ReturnsForAnyArgs(coursesRepository);
            var sut = new EnrollValidator(unitOfWork);

            var command = new Enroll(course.Id, student.Id);
            var result  = await sut.ValidateAsync(command, CancellationToken.None);

            result.Should().NotBeNull();
            result.Success.Should().BeTrue();
            result.Errors.Should().BeEmpty();
        }
        public async Task ValidateAsync_should_fail_when_Course_does_not_exists()
        {
            var unitOfWork = NSubstitute.Substitute.For <ISchoolUnitOfWork>();
            var sut        = new EnrollValidator(unitOfWork);

            var command = new Enroll(Guid.NewGuid(), Guid.NewGuid());
            var result  = await sut.ValidateAsync(command, CancellationToken.None);

            result.Should().NotBeNull();
            result.Success.Should().BeFalse();
            result.Errors.Should().Contain(e =>
                                           e.Context == nameof(Enroll.CourseId) && e.Message.Contains(command.CourseId.ToString()));
        }
Esempio n. 3
0
        public async Task Validate_Should_Fail_When_Student_Does_Not_Exists()
        {
            var repo       = Substitute.For <IStudentsRepository>();
            var unitOfWork = Substitute.For <ISchoolUnitOfWork>();

            unitOfWork.StudentsRepository.ReturnsForAnyArgs(repo);
            var sut = new EnrollValidator(unitOfWork);

            var command = new Enroll(Guid.NewGuid(), Guid.NewGuid());
            var result  = await sut.ValidateAsync(command, CancellationToken.None);

            result.Should().NotBeNull();
            result.Success.Should().BeFalse();
            result.Errors.Should().Contain(e =>
                                           e.Context == nameof(Enroll.StudentId) && e.Message.Contains(command.StudentId.ToString()));
        }