public async Task CreateClassAsync_WithValidationMessages_ReturnsValidationMessages()
        {
            var input = _fixture.Create<CreateClassRequest>();
            var expectedValidationMessages = _fixture.CreateMany<ValidationMessage>();
            _classValidator
                .Setup(x => x.ValidateRules(input))
                .Returns(expectedValidationMessages);

            CreateClassResult result = await _sut.CreateClassAsync(input);

            result.Should().NotBeNull();
            result.ValidationMessages.Should().BeEquivalentTo(expectedValidationMessages);
        }
        public async Task CreateClassAsync_WithValidRequest_CreatesClass()
        {
            var input = _fixture.Create<CreateClassRequest>();
            var validationMessages = _fixture.CreateMany<ValidationMessage>(0);
            _classValidator
                .Setup(x => x.ValidateRules(input))
                .Returns(validationMessages);

            CreateClassResult result = await _sut.CreateClassAsync(input);

            result.ClassId.Should().NotBeEmpty();
            result.ValidationMessages.Should().BeEmpty();

            _classRepository
               .Verify(x => x.CreateAsync(It.Is<Class>(x => x.Name.Value == input.Name)));
        }
        private async Task <Guid> CreateClassFlowAsync()
        {
            Console.WriteLine("What is the name of the class?");
            string className          = Console.ReadLine();
            var    createClassRequest = new CreateClassRequest()
            {
                Name = className
            };
            CreateClassResult createClassResponse = await _classController.CreateClassAsync(createClassRequest);

            Guid classId = createClassResponse.ClassId;

            if (createClassResponse.ValidationMessages.Any())
            {
                SharedConsoleFlows.PrintValidationMessages(createClassResponse.ValidationMessages);
                classId = await CreateClassFlowAsync();
            }
            return(classId);
        }