public void IdentificaElMensajeTransaccional()
        {
            var transaccional1 = new MensajeTransaccional
                {
                    Id = 1,
                    CampoId = 1,
                    Valor = "TRANSACCIONAL1"
                };
            var transaccional2 = new MensajeTransaccional
                {
                    Id = 2,
                    CampoId = 2,
                    Valor = "TRANSACCIONAL2"
                };
            var mensaje = new Mensaje();
            mensaje.Transaccionales = new List<MensajeTransaccional>
                {
                    transaccional1,transaccional2
                };

            var fields = new List<FieldData> { new FieldData { CampoId = 1, Data = "TRANSACCIONAL1" }, new FieldData { CampoId = 2, Data = "xxxxxxxxxxx" } };
            var identificadorTransaccional = new IdentificadorTransaccional();
            var transaccional = identificadorTransaccional.Identificar(mensaje, fields);
            Assert.AreEqual(transaccional1, transaccional);

            fields = new List<FieldData> { new FieldData { CampoId = 1, Data = "xxxxxxxxxxx" }, new FieldData { CampoId = 2, Data = "TRANSACCIONAL2" } };
            identificadorTransaccional = new IdentificadorTransaccional();
            transaccional = identificadorTransaccional.Identificar(mensaje, fields);
            Assert.AreEqual(transaccional2, transaccional);
        }
        public void IdentificaElMensajeSegunValorSelector()
        {
            var mensaje1 = new Mensaje();
            var mensaje2 = new Mensaje();
            var valoresSelectores = new List<ValorSelector>
                {
                    new ValorSelector
                        {
                            Posicion = 0, Longitud = 9, Valor = "SELECTOR1", Mensaje = mensaje1
                        },
                    new ValorSelector
                        {
                            Posicion = 1, Longitud = 9, Valor = "SELECTOR2", Mensaje = mensaje2
                        },
                };

            var rawMessage = "SELECTOR1xxxxxxxxxx";
            var identificadorMensaje = new IdentificadorMensaje();
            var mensaje = identificadorMensaje.Identificar(rawMessage, valoresSelectores);
            Assert.AreEqual(mensaje1, mensaje);

            rawMessage = "xSELECTOR2xxxxxxxxx";
            identificadorMensaje = new IdentificadorMensaje();
            mensaje = identificadorMensaje.Identificar(rawMessage, valoresSelectores);
            Assert.AreEqual(mensaje2, mensaje);
        }
 public List<FieldData> Parse(string rawData, Mensaje mensaje)
 {
     return new List<FieldData>
         {
             new FieldData
                 {
                     CampoId = 1,
                     Data = "TRANSACCIONAL"
                 }
         };
 }
 public MensajeTransaccional Identificar(Mensaje mensaje, List<FieldData> fields)
 {
     foreach (var transaccional in mensaje.Transaccionales)
     {
         var field = fields.SingleOrDefault(x => x.CampoId == transaccional.CampoId);
         if (field.Data == transaccional.Valor)
         {
             return transaccional;
         }
     }
     throw new TransaccionalNoIdentificadoException();
 }
 public void LanzaExcepcionSiNoIdentificaElTransaccional()
 {
     var identificadorTransaccional = new IdentificadorTransaccional();
     var mensaje = new Mensaje
         {
             Transaccionales = new List<MensajeTransaccional>
                 {
                     new MensajeTransaccional
                         {
                             CampoId = 1, Valor = "VALOR"
                         }
                 }
         };
     var fields = new List<FieldData>
         {
             new FieldData
                 {
                     CampoId = 1,
                     Data = "VALOR_INCORRECTO"
                 }
         };
     identificadorTransaccional.Identificar(mensaje, fields);
 }