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") )); }
protected internal void SetConfiguration(BookablePairIdTemplate <TComponents> template, SingleIdTemplate <SellerIdComponents> sellerTemplate) { this.IdTemplate = template; this.SellerIdTemplate = sellerTemplate; }