public void ProcessPersona_ValidInputMasculinePersona_Returns0Values()
        {
            //Arrange
            var personaValidator  = Substitute.For <IValidator>();
            var personaFormatter  = Substitute.For <IPersonaFormatter>();
            var personasProcessor = new PersonasProcessor(personaValidator, personaFormatter);
            var persona           = new Persona
            {
                Nombre   = "Rosa",
                Apellido = "Benitez",
                Sexo     = Sexo.M,
                Edad     = 20
            };

            var personaRequest = new PersonaRequest
            {
                Personas = new List <Persona>
                {
                    persona
                }
            };
            var validationResult = new PersonasResult();

            personaValidator.ValidateInputList(personaRequest).Returns(validationResult);

            //Act
            ProcessResult result = personasProcessor.Process(personaRequest);

            //Assert
            Assert.IsTrue(result.Success);
            Assert.AreEqual(0, result.PersonasMujeresMayoresDe18.Count());
        }
        public void ProcessPersona_NotValidInput_ReturnsErrorStatus()
        {
            //Arrange
            var personaValidator = Substitute.For <IValidator>();
            var personaFormatter = Substitute.For <IPersonaFormatter>();
            var personaProcessor = new PersonasProcessor(personaValidator, personaFormatter);
            var personaRequest   = new PersonaRequest
            {
                Personas = null
            };
            var personasResult = new PersonasResult
            {
                ErrorMessages = new List <string>
                {
                    "Ingresar al menos 1 persona."
                }
            };

            personaValidator.ValidateInputList(personaRequest).Returns(personasResult);

            //Act
            ProcessResult result = personaProcessor.Process(personaRequest);

            //Assert
            Assert.IsFalse(result.Success);
            Assert.AreEqual("El proceso no puede ser completado. Error: Ingresar al menos 1 persona.",
                            result.ErrorMessage);
        }
예제 #3
0
        public PersonasResult ValidateInputList(PersonaRequest persona)
        {
            var result = new PersonasResult();

            if (persona == null || persona.Personas == null || persona.Personas.Count < 1)
            {
                result.ErrorMessages.Add("Ingresar al menos 1 persona.");
            }
            return(result);
        }
예제 #4
0
        public void ValidateInput_NotNullRequestNullListValue_ReturnsError()
        {
            //Arrange
            var personaRequests = new PersonaRequest();
            var validator       = new Validator();

            //Act
            PersonasResult result = validator.ValidateInputList(personaRequests);

            //Assert
            Assert.IsFalse(result.Success);
            Assert.AreEqual(1, result.ErrorMessages.Count());
            Assert.AreEqual("Ingresar al menos 1 persona.", result.ErrorMessages.First());
        }
예제 #5
0
        public ProcessResult Process(PersonaRequest personaRequest)
        {
            var processResult = new ProcessResult();

            PersonasResult validationResult = PersonaValidator.ValidateInputList(personaRequest);

            if (!validationResult.Success)
            {
                string erroresString = String.Join("\n", validationResult.ErrorMessages);
                processResult.ErrorMessage = $"El proceso no puede ser completado. Error: " +
                                             $"{erroresString}";
            }
            else
            {
                string erroresString = null;

                foreach (var persona in personaRequest.Personas)
                {
                    ValidatePersonaResult validatePersonaResult = PersonaValidator.ValidatePersona(persona);

                    if (validatePersonaResult.Success)
                    {
                        if (persona.Sexo == Sexo.F && persona.Edad > 17)
                        {
                            processResult.PersonasMujeresMayoresDe18
                            .Add(PersonaFormatter.FormatPersona(persona));
                        }
                    }
                    else
                    {
                        erroresString = string.Join("\n", validatePersonaResult.ErrorMessages);
                    }
                }

                if (!string.IsNullOrEmpty(erroresString))
                {
                    processResult.ErrorMessage = $"El proceso no puede ser completado. Error: {erroresString}";
                }
            }
            return(processResult);
        }
        public void ProcessPersona_NullNameNullApellido_ReturnsErrors()
        {
            //Arrange
            var personaValidator = Substitute.For <IValidator>();
            var personaFormatter = Substitute.For <IPersonaFormatter>();
            var personaProcessor = new PersonasProcessor(personaValidator, personaFormatter);
            var personaRequest   = new PersonaRequest
            {
                Personas = new List <Persona>
                {
                    new Persona
                    {
                        Edad = 19,
                        Sexo = Sexo.F
                    }
                }
            };
            var personasResult = new PersonasResult
            {
                ErrorMessages = new List <string>
                {
                    "El nombre es requerido.",
                    "El apellido es requerido."
                }
            };

            personaValidator.ValidateInputList(personaRequest).Returns(personasResult);

            //Act
            ProcessResult result = personaProcessor.Process(personaRequest);

            //Assert
            Assert.IsFalse(result.Success);
            Assert.AreEqual("El proceso no puede ser completado. " +
                            "Error: El nombre es requerido.\nEl apellido es requerido.",
                            result.ErrorMessage);
        }