Exemplo n.º 1
0
        public void itShouldReadTransactionId()
        {
            var clientTransactionId = "123";
            var inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT} {BookingParser.XmlTokens.CLIENT_TRANSACTION_ID}='{clientTransactionId}'>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var parser = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(clientTransactionId, parser.BookingAnalysis.TransactionId);

            // Should still work without TransactionId
            inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };
            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.IsTrue(string.IsNullOrEmpty(parser.BookingAnalysis.TransactionId));
        }
Exemplo n.º 2
0
        public void itShouldReadTransactionTimestamp()
        {
            var timestamp = DateTime.Now.ToString();
            var inputs    = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT} {BookingParser.XmlTokens.TIMESTAMP}='{timestamp}'>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var parser = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(timestamp, parser.BookingAnalysis.Timestamp);

            // Should still work without Timestamp
            inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };
            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.IsTrue(string.IsNullOrEmpty(parser.BookingAnalysis.Timestamp));
        }
Exemplo n.º 3
0
        public void itShouldParseBookingWithStartAndEndTagsOnDifferentLines()
        {
            var input1 = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var input2 = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT} test='123'>",
                "<someChildElement />",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var inputs = new string[][] {
                input1,
                input2
            };

            var parser = new BookingParser();

            for (var k = 0; k < inputs.Length; k++)
            {
                for (var j = 0; j < inputs[k].Length; j++)
                {
                    parser.Parse(inputs[k][j]);
                    if (j == 0)
                    {
                        Assert.IsNull(parser.BookingAnalysis);
                    }
                }
                Assert.IsNotNull(parser.BookingAnalysis);
            }
        }
Exemplo n.º 4
0
        public void itShouldReadPrimaryProviderAndCount()
        {
            var primaryProvider = "dummyProvider";
            var providerCount   = 2;
            var inputs          = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<AvailRequestSegments xmlns='{BookingParser.XmlTokens.NS_EVIIVO}'>",
                $"<UTSv_AvailRequestSegment>",
                $"<TPA_Extensions>",
                $"<SearchCriteria>",
                $"<ProviderID_List>",
                $"<ID>{primaryProvider}</ID>",
                $"<ID>dummy</ID>",
                $"</ProviderID_List>",
                $"</SearchCriteria>",
                $"</TPA_Extensions>",
                $"</UTSv_AvailRequestSegment>",
                $"</AvailRequestSegments>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var parser = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(primaryProvider, parser.BookingAnalysis.PrimaryProvider);
            Assert.AreEqual(providerCount, parser.BookingAnalysis.ProviderCount);


            inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<POS>",
                $"<Source>",
                $"<BookingChannel>",
                $"</BookingChannel>",
                $"</Source>",
                $"</POS>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };
            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.PrimaryProvider));
            Assert.AreEqual(0, parser.BookingAnalysis.ProviderCount);
        }
Exemplo n.º 5
0
        public void itShouldReadStartAndEndDates()
        {
            var startDate = DateTime.Now.ToString();
            var endDate   = DateTime.Now.AddDays(2).ToString();
            var inputs    = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<ProductTypeRsrvs xmlns='{BookingParser.XmlTokens.NS_EVIIVO}'>",
                $"<ProductTypeRsrv>",
                $"<ProductType>",
                $"<Name>dummyProduct</Name>",
                $"<TimeSlots>",
                $"<TimeSlot {BookingParser.XmlTokens.START_DATE}='{startDate}' {BookingParser.XmlTokens.END_DATE}='{endDate}'>",
                $"</TimeSlot>",
                $"</TimeSlots>",
                $"</ProductType>",
                $"</ProductTypeRsrv>",
                $"</ProductTypeRsrvs>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var parser = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(startDate, parser.BookingAnalysis.StartDate);
            Assert.AreEqual(endDate, parser.BookingAnalysis.EndDate);


            inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<POS>",
                $"<Source>",
                $"<BookingChannel>",
                $"</BookingChannel>",
                $"</Source>",
                $"</POS>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };
            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.StartDate));
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.EndDate));
        }
Exemplo n.º 6
0
        public void itShouldReadProductTotalAndExtrasTotal()
        {
            var productTotal = "475.50";
            var extrasTotal  = "200.00";
            var inputs       = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<ProductTypeRsrvs xmlns='{BookingParser.XmlTokens.NS_EVIIVO}'>",
                $"<ProductTypeRsrv>",
                $"<ProductType>",
                $"<Name>dummyProduct</Name>",
                $"<TotalRate Amount='{productTotal}' />",
                $"<Supplements TotalRate='{extrasTotal}' />",
                $"</ProductType>",
                $"</ProductTypeRsrv>",
                $"</ProductTypeRsrvs>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var parser = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(productTotal, parser.BookingAnalysis.ProductTotal);
            Assert.AreEqual(extrasTotal, parser.BookingAnalysis.ExtrasTotal);


            inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<POS>",
                $"<Source>",
                $"<BookingChannel>",
                $"</BookingChannel>",
                $"</Source>",
                $"</POS>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };
            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.ProductTotal));
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.ExtrasTotal));
        }
Exemplo n.º 7
0
        public void itShouldParseBookingWithStartAndEndTagsOnSameLine()
        {
            var parser = new BookingParser();
            var inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}></{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}> </{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}><test a1='1'></test></{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"othertextonsameline<{BookingParser.XmlTokens.ROOT_ELEMENT}><test a1='1'></test></{BookingParser.XmlTokens.ROOT_ELEMENT}>othertextonsameline"
            };

            foreach (var input in inputs)
            {
                parser.Parse(input);
                Assert.IsNotNull(parser.BookingAnalysis);
            }
        }
Exemplo n.º 8
0
        public void itShouldParseSelfClosingBookingElement()
        {
            var parser = new BookingParser();
            var inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}/>",
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT} />",
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT} id='1' />",
                $"othertextonsameline<{BookingParser.XmlTokens.ROOT_ELEMENT} id='1' />othertextonsameline"
            };

            foreach (var input in inputs)
            {
                parser.Parse(input);
                Assert.IsNotNull(parser.BookingAnalysis);
            }
        }
Exemplo n.º 9
0
        public void itShouldReadCustomerFirstAndLastNames()
        {
            var firstName = "Julia";
            var lastName  = "Harper";
            var inputs    = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<Customer xmlns='{BookingParser.XmlTokens.NS_EVIIVO}'>",
                $"<PersonName>",
                $"<GivenName>{firstName}</GivenName>",
                $"<Surname>{lastName}</Surname>",
                $"</PersonName>",
                $"</Customer>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var parser = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(firstName, parser.BookingAnalysis.CustomerFirstName);
            Assert.AreEqual(lastName, parser.BookingAnalysis.CustomerLastName);

            inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<POS>",
                $"<Source>",
                $"<BookingChannel>",
                $"</BookingChannel>",
                $"</Source>",
                $"</POS>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };
            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.CustomerFirstName));

            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.CustomerLastName));
        }
Exemplo n.º 10
0
        //[TestMethod]
        public void itShouldReadChannelCommissionAndPaymentOption()
        {
            var channelCommission = "143.44";
            var paymentOption     = "dummyPaymentOption";
            var inputs            = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<ProductTypeRsrvs {BookingParser.XmlTokens.CHANNEL_COMMISSION}='{channelCommission}' {BookingParser.XmlTokens.PAYMENT_OPTION}='{paymentOption}'>",
                $"<ProductTypeRsrv>",
                $"<ProductType>",
                $"<Name>dummyProduct</Name>",
                $"</ProductType>",
                $"</ProductTypeRsrv>",
                $"</ProductTypeRsrvs>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var parser = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(channelCommission, parser.BookingAnalysis.ChannelCommission);
            Assert.AreEqual(paymentOption, parser.BookingAnalysis.PaymentOption);

            inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<POS>",
                $"<Source>",
                $"<BookingChannel>",
                $"</BookingChannel>",
                $"</Source>",
                $"</POS>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };
            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.ChannelCommission));
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.PaymentOption));
        }
Exemplo n.º 11
0
        public void itShouldReadProductIdAndName()
        {
            var productId   = Guid.NewGuid().ToString();
            var productName = "Water Villa - Standard Rate";
            var inputs      = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<ProductTypeRsrvs xmlns='{BookingParser.XmlTokens.NS_EVIIVO}'>",
                $"<ProductTypeRsrv>",
                $"<ProductType {BookingParser.XmlTokens.PRODUCT_ID}='{productId}'>",
                $"<Name>{productName}</Name>",
                $"</ProductType>",
                $"</ProductTypeRsrv>",
                $"</ProductTypeRsrvs>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var parser = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(productName, parser.BookingAnalysis.ProductName);
            Assert.AreEqual(productId, parser.BookingAnalysis.ProductId);

            inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<POS>",
                $"<Source>",
                $"<BookingChannel>",
                $"</BookingChannel>",
                $"</Source>",
                $"</POS>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };
            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.ProductName));
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.ProductId));
        }
Exemplo n.º 12
0
        public void itShouldReadDistributorShortName()
        {
            var distributor = "acme corp";
            var inputs      = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}  xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>",
                $"<POS xmlns='{BookingParser.XmlTokens.NS_EVIIVO}'>",
                $"<Source>",
                $"<BookingChannel>",
                $"<CompanyName {BookingParser.XmlTokens.DISTRIBUTOR}='{distributor}'></CompanyName>",
                $"</BookingChannel>",
                $"</Source>",
                $"</POS>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var parser = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(distributor, parser.BookingAnalysis.DistributorShortName);

            inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<POS>",
                $"<Source>",
                $"<BookingChannel>",
                $"</BookingChannel>",
                $"</Source>",
                $"</POS>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };
            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.IsTrue(string.IsNullOrWhiteSpace(parser.BookingAnalysis.DistributorShortName));
        }
Exemplo n.º 13
0
        public void itShouldReadMultipleBookingsFromSingleInput()
        {
            var clientTransactionId1 = "123";
            var clientTransactionId2 = "456";

            var inputs = new string[] {
                "first unrelated text in input",
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT} {BookingParser.XmlTokens.CLIENT_TRANSACTION_ID}='{clientTransactionId1}'>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                "some unrelated text in input",
                "some more unrelated text in input",
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT} {BookingParser.XmlTokens.CLIENT_TRANSACTION_ID}='{clientTransactionId2}'>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                "last unrelated text in input"
            };

            var outputs = new List <BookingAnalysis>();
            var parser  = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
                if (parser.BookingAnalysis != null)
                {
                    outputs.Add(parser.BookingAnalysis);
                }
            }

            Assert.AreEqual(2, outputs.Count);
            var firstBooking = outputs.FirstOrDefault();

            Assert.AreEqual(clientTransactionId1, firstBooking.TransactionId);
            var secondBooking = outputs.LastOrDefault();

            Assert.AreEqual(clientTransactionId2, secondBooking.TransactionId);
        }
Exemplo n.º 14
0
        public void itShouldReadExtraDetails()
        {
            var extraCode              = "extra1";
            var extraName              = "TestExtra";
            var adultPrice             = "123.44";
            var perAdultPrice          = "4243.55";
            var perAdultPricePerNight  = "89422";
            var childPrice             = "555.32";
            var perChildPrice          = "73233";
            var perChildPricePerNight  = "30992.3";
            var isPerNight             = "true";
            var fixedPrice             = "43222.343";
            var fixedPricePerNight     = "9834.22";
            var isNightSelectable      = "false";
            var isAllowOccupancySelect = "true";
            var selectedNight1         = "2020-01-01";
            var selectedNight2         = "2020-01-01";
            var inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<ProductTypeRsrvs xmlns='{BookingParser.XmlTokens.NS_EVIIVO}'>",
                $"<ProductTypeRsrv>",
                $"<ProductType>",
                $"<Name>dummyProduct</Name>",
                $"<Supplements>",
                $"<Supplement Code='{extraCode}' Name='{extraName}' AdultPrice='{adultPrice}' ChildPrice='{childPrice}'",
                $" FixedPrice='{fixedPrice}' FixedPricePerNight='{fixedPricePerNight}' PricePerUnit='0' PricePerUnitPerNight='0'",
                $" PerAdultPrice='{perAdultPrice}' PerAdultPricePerNight='{perAdultPricePerNight}'",
                $" PerChildPrice='{perChildPrice}' OverRidePrice='0' PerChildPricePerNight='{perChildPricePerNight}'",
                $" IsTaxExempt='true' TaxRate='0' IsAllowOccupancySelect='{isAllowOccupancySelect}' AvailableFromDate='2020-03-01'",
                $" IsOfferOnMondays='true' IsOfferOnTuesdays='true' IsOfferOnWednesdays='true' IsOfferOnThursdays='true'",
                $" IsOfferOnFridays='true' IsOfferOnSaturdays='true' IsOfferOnSundays='true' ",
                $" IsNightsSelectable='{isNightSelectable}' IsPerNight='{isPerNight}'>",
                $" <SelectedNights>",
                $" <SelectedNight SelectedNight='{selectedNight1}' />",
                $" <SelectedNight SelectedNight='{selectedNight2}' />",
                $" </SelectedNights>",
                $"</Supplement>",
                $"</Supplements>",
                $"</ProductType>",
                $"</ProductTypeRsrv>",
                $"</ProductTypeRsrvs>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };

            var parser = new BookingParser();

            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(1, parser.BookingAnalysis.Extras.Count);
            var extra = parser.BookingAnalysis.Extras.FirstOrDefault();

            Assert.IsNotNull(extra);
            Assert.AreEqual(extraCode, extra.Code);
            Assert.AreEqual(extraName, extra.Name);
            Assert.AreEqual(adultPrice, extra.AdultPrice);
            Assert.AreEqual(perAdultPrice, extra.PerAdultPrice);
            Assert.AreEqual(perAdultPricePerNight, extra.PerAdultPricePerNight);
            Assert.AreEqual(childPrice, extra.ChildPrice);
            Assert.AreEqual(perChildPrice, extra.PerChildPrice);
            Assert.AreEqual(perChildPricePerNight, extra.PerChildPricePerNight);
            Assert.AreEqual(isPerNight, extra.IsPerNight);
            Assert.AreEqual(fixedPrice, extra.FixedPrice);
            Assert.AreEqual(fixedPricePerNight, extra.FixedPricePerNight);
            Assert.AreEqual(isNightSelectable, extra.IsNightsSelectable);
            Assert.AreEqual(isAllowOccupancySelect, extra.IsAllowOccupancySelect);
            Assert.AreEqual(2, extra.SelectedNights.Count);
            Assert.AreEqual(selectedNight1, extra.SelectedNights.FirstOrDefault().SelectedNight);
            Assert.AreEqual(selectedNight2, extra.SelectedNights.LastOrDefault().SelectedNight);

            inputs = new string[] {
                $"<{BookingParser.XmlTokens.ROOT_ELEMENT}>",
                $"<POS>",
                $"<Source>",
                $"<BookingChannel>",
                $"</BookingChannel>",
                $"</Source>",
                $"</POS>",
                $"</{BookingParser.XmlTokens.ROOT_ELEMENT}>"
            };
            foreach (var input in inputs)
            {
                parser.Parse(input);
            }

            Assert.IsNotNull(parser.BookingAnalysis);
            Assert.AreEqual(0, parser.BookingAnalysis.Extras.Count);
        }