public void BookablePairIdTemplate_GetIdComponents()
        {
            var template = new BookablePairIdTemplate <SessionSeriesComponents>(
                // Opportunity
                new OpportunityIdConfiguration
            {
                OpportunityType       = OpportunityType.Event,
                AssignedFeed          = OpportunityType.Event,
                OpportunityIdTemplate = "{+BaseUrl}api/{EventType}/{SessionSeriesId}/events/{ScheduledSessionId}",
                OfferIdTemplate       = "{+BaseUrl}api/{EventType}/{SessionSeriesId}/events/{ScheduledSessionId}#/offers/{OfferId}",
                Bookable = true
            });

            template.RequiredBaseUrl = new Uri("https://example.com/");

            var components = template.GetIdComponents(
                new Uri("https://example.com/api/session-series/asdf/events/123"),
                new Uri("https://example.com/api/session-series/asdf/events/123#/offers/456")
                );

            Assert.Equal("session-series", components.EventType);
            Assert.Equal("asdf", components.SessionSeriesId);
            Assert.Equal(123, components.ScheduledSessionId);
            Assert.Equal(456, components.OfferId);

            Assert.Throws <BookableOpportunityAndOfferMismatchException>(() => template.GetIdComponents(
                                                                             new Uri("https://example.com/api/session-series/asdf/events/123"),
                                                                             new Uri("https://example.com/api/session-series/asdf/events/124#/offers/456")
                                                                             ));

            Assert.Throws <BookableOpportunityAndOfferMismatchException>(() => template.GetIdComponents(
                                                                             new Uri("https://example.com/api/session-series/asdf/events/123"),
                                                                             new Uri("https://example.com/api/session-series/asdF/events/123#/offers/456")
                                                                             ));

            Assert.Throws <RequiredBaseUrlMismatchException>(() => template.GetIdComponents(
                                                                 new Uri("https://example1.com/api/session-series/asdf/events/123"),
                                                                 new Uri("https://example1.com/api/session-series/asdf/events/123#/offers/456")
                                                                 ));
        }
Пример #2
0
 protected internal void SetConfiguration(BookablePairIdTemplate <TComponents> template, SingleIdTemplate <SellerIdComponents> sellerTemplate)
 {
     this.IdTemplate       = template;
     this.SellerIdTemplate = sellerTemplate;
 }