Ejemplo n.º 1
0
        public void TestToInterchangeWithEnvelopeSchemaValidation()
        {
            // ARRANGE
            const string sample      = "EdiFabric.Tests.Edi.X12_810_00204.txt";
            const string envelopeXsd = "EdiFabric.Tests.Xsd.X12Envelope.xsd";

            // ACT
            var interchange = Interchange.LoadFrom(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample));
            var xml         = TestHelper.Serialize(interchange, TargetNamespaceX12);

            var schemas = new XmlSchemaSet();
            var stream  = Assembly.GetExecutingAssembly().GetManifestResourceStream(envelopeXsd);

            if (stream != null)
            {
                var schema = XmlSchema.Read(stream, null);
                schemas.Add(schema);
            }
            var doc    = new XDocument(xml);
            var errors = false;

            doc.Validate(schemas, (o, e) => { errors = true; });

            // ASSERT
            Assert.IsFalse(errors);
        }
Ejemplo n.º 2
0
        public void TestToEdiWithSegmentList()
        {
            // ARRANGE
            const string sample         = "EdiFabric.Tests.Xml.X12_810_00204_SegmentList.xml";
            const string expectedResult = "EdiFabric.Tests.Edi.X12_810_00204.txt";

            var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(expectedResult);

            Debug.Assert(stream != null, "stream != null");

            var reader      = new StreamReader(stream);
            var expectedEdi = new List <string>();

            while (reader.Peek() >= 0)
            {
                expectedEdi.Add(reader.ReadLine());
            }
            var interchangeContext = new InterchangeContext
            {
                RepetitionSeparator = "|"
            };

            // ACT
            var parsedEdi =
                Interchange.LoadFrom(XElement.Load(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample))).ToEdi(interchangeContext);

            // ASSERT
            Assert.AreEqual(expectedEdi.Count, parsedEdi.Count);
            for (int i = 0; i < parsedEdi.Count; i++)
            {
                Assert.IsTrue(parsedEdi[i] == expectedEdi[i]);
            }
        }
Ejemplo n.º 3
0
        public void TestToEdiWithTrailingSeparator()
        {
            // ARRANGE
            const string sample         = "EdiFabric.Tests.Xml.Edifact_INVOIC_D00A_TrailingSeparator.xml";
            const string expectedResult = "EdiFabric.Tests.Edi.Edifact_INVOIC_D00A_TrailingSeparator.txt";

            var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(expectedResult);

            Debug.Assert(stream != null, "stream != null");

            var reader      = new StreamReader(stream);
            var expectedEdi = new List <string>();

            while (reader.Peek() >= 0)
            {
                expectedEdi.Add(reader.ReadLine());
            }

            // ACT
            var parsedEdi = Interchange.LoadFrom(XElement.Load(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample))).ToEdi();

            // ASSERT
            Assert.AreEqual(expectedEdi.Count, parsedEdi.Count);
            for (int i = 0; i < parsedEdi.Count; i++)
            {
                Assert.IsTrue(parsedEdi[i] == expectedEdi[i]);
            }
        }
Ejemplo n.º 4
0
        public void TestToInterchangeWithInvalidEnum()
        {
            // ARRANGE
            const string sample = "EdiFabric.Tests.Edi.Hipaa_837P_00401_BadSegment.txt";
            const string expectedErrorMessage = "Instance validation error: 'CL' is not a valid value for S_BHT_BeginningOfHierarchicalTransaction_TS837Q1D_BHT06_ClaimOrEncounterIdentifier.";

            // ACT
            try
            {
                var interchange = Interchange.LoadFrom(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample));
                var message     = interchange.Groups[0].Messages[0];

                if (message.Context.Tag == "837" && message.Context.Origin == "X098")
                {
                    message.DeserializeItem <M_837>();

                    // ASSERT
                    Assert.Fail();
                }
                else
                {
                    Assert.Fail();
                }
            }
            catch (Exception ex)
            {
                // ASSERT
                Assert.IsTrue(ex.InnerException.Message == expectedErrorMessage);
            }
        }
Ejemplo n.º 5
0
        public void TestMessageContextFromType()
        {
            // ARRANGE
            const string sample = "EdiFabric.Tests.Edi.Hipaa_837P_00401.txt";

            // ACT
            var interchange = Interchange.LoadFrom(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample));
            var systemType  = (new MessageContext(interchange.Groups[0].Messages[0].Context.SystemType)).SystemType;

            // ASSERT
            Assert.IsNotNull(systemType);
        }
Ejemplo n.º 6
0
        public void TestToInterchangeWithFriendlyException()
        {
            // ARRANGE
            const string sample = "EdiFabric.Tests.Edi.X12_810_00204_BadSegment.txt";

            // ACT
            try
            {
                Interchange.LoadFrom(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample));
            }
            catch (Exception ex)
            {
                // ASSERT
                Assert.IsInstanceOfType(ex, typeof(ParserException));
            }
        }
Ejemplo n.º 7
0
        public void TestToInterchangeWithNonDefaultSeparators()
        {
            // ARRANGE
            const string sample         = "EdiFabric.Tests.Edi.X12_810_00204_NonDefaultSeparators.txt";
            const string expectedResult = "EdiFabric.Tests.Xml.X12_810_00204.xml";

            var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(expectedResult);

            Debug.Assert(stream != null, "stream != null");
            var expectedXml = XElement.Load(stream, LoadOptions.PreserveWhitespace);

            // ACT
            var interchange = Interchange.LoadFrom(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample));
            var parsedXml   = TestHelper.Serialize(interchange, TargetNamespaceX12);

            // ASSERT
            Assert.AreEqual(parsedXml.ToString(), expectedXml.ToString());
        }
Ejemplo n.º 8
0
        public void TestToInterchangeWithXmlComparison()
        {
            // ARRANGE
            const string sample         = "EdiFabric.Tests.Edi.Edifact_INVOIC_D00A.txt";
            const string expectedResult = "EdiFabric.Tests.Xml.Edifact_INVOIC_D00A.xml";

            var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(expectedResult);

            Debug.Assert(stream != null, "stream != null");
            var expectedXml = XElement.Load(stream);

            // ACT
            var interchange = Interchange.LoadFrom(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample));
            var parsedXml   = TestHelper.Serialize(interchange, TargetNamespaceEdifact);

            // ASSERT
            Assert.AreEqual(parsedXml.ToString(), expectedXml.ToString());
        }
Ejemplo n.º 9
0
        public void TestToInterchangeWithSecondaryValueOnly()
        {
            // ARRANGE
            const string sample         = "EdiFabric.Tests.Edi.Hipaa_837P_00401_SecondaryValue2.txt";
            const string expectedResult = "EdiFabric.Tests.Xml.Hipaa_837P_00401_Secondary2.xml";

            var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(expectedResult);

            Debug.Assert(stream != null, "stream != null");
            var expectedXml = XElement.Load(stream, LoadOptions.PreserveWhitespace);

            // ACT
            var interchange = Interchange.LoadFrom(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample), "EdiFabric.Tests");
            var parsedXml   = TestHelper.Serialize(interchange, TargetNamespaceX12);

            // ASSERT
            Assert.AreEqual(parsedXml.ToString(), expectedXml.ToString());
        }
Ejemplo n.º 10
0
        public void TestToInterchangeWithInvalidMessage()
        {
            // ARRANGE
            const string sample = "EdiFabric.Tests.Edi.Hipaa_837P_00401_Invalid.txt";
            const string expectedErrorMessage      = "Failed at line: BHP*0019*00*1*20110406*085755*CH";
            const string expectedInnerErrorMessage = "Can't find a match for segment Name = BHP FirstValue = 0019 SecondValue = 00 ParentId = . Message is invalid.";

            // ACT
            try
            {
                Interchange.LoadFrom(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample));
                Assert.Fail();
            }
            catch (Exception ex)
            {
                // ASSERT
                Assert.IsTrue(ex.Message == expectedErrorMessage);
                Assert.IsTrue(ex.InnerException.Message == expectedInnerErrorMessage);
            }
        }
Ejemplo n.º 11
0
        public void TestToInterchangeWithValidation()
        {
            // ARRANGE
            const string sample = "EdiFabric.Tests.Edi.X12_810_00204.txt";

            // ACT
            var interchange = Interchange.LoadFrom(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample));

            var brokenRules = new List <string>();

            foreach (var group in interchange.Groups)
            {
                foreach (var message in group.Messages)
                {
                    brokenRules.AddRange(message.Validate());
                }
            }

            // ASSERT
            Assert.IsTrue(brokenRules.Any());
        }
Ejemplo n.º 12
0
        public void TestMessageDeserialization()
        {
            // ARRANGE
            const string sample = "EdiFabric.Tests.Edi.X12_810_00204Deserialize.txt";

            // ACT
            var interchange = Interchange.LoadFrom(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample));
            var message     = interchange.Groups[0].Messages[0];

            if (message.Context.Tag == "810")
            {
                var typedMessage = message.DeserializeItem <M_810>();

                // ASSERT
                Assert.IsNotNull(typedMessage);
            }
            else
            {
                Assert.Fail();
            }
        }
Ejemplo n.º 13
0
        public void TestToEdiWithInvalidContext()
        {
            // ARRANGE
            const string sample             = "EdiFabric.Tests.Xml.X12_810_00204.xml";
            var          interchangeContext = new InterchangeContext
            {
                DataElementSeparator          = "*",
                ComponentDataElementSeparator = "*"
            };

            // ACT
            try
            {
                Interchange.LoadFrom(
                    XElement.Load(Assembly.GetExecutingAssembly().GetManifestResourceStream(sample))).ToEdi(interchangeContext);
            }
            catch (Exception ex)
            {
                // ASSERT
                Assert.IsInstanceOfType(ex, typeof(ParserException));
                Assert.IsTrue(ex.Message.StartsWith("Invalid interchange context"));
            }
        }