Exemplo n.º 1
0
        public ISession GetSession()
        {
            var documentClient     = DocumentClientFactory.GetDocumentClientInstance(descriptor.CosmosDbConnectionString, options);
            var cosmosDbEventStore = new CosmosDbEventStore(documentClient, descriptor.DatabaseName, descriptor.CollectionName);

            var eventGridClientContext = EventGridClientFactory.GetEventGridClientContext(descriptor.EventGridConnectionString);
            var eventGridPublisher     = new EventGridEventPublisher(eventGridClientContext.EventGridClient, eventGridClientContext.TopicHostName);

            return(new Session(new Repository(cosmosDbEventStore, eventGridPublisher)));
        }
        public async Task PublishEventsAsync_WithCustomBuilders_Test()
        {
            //Arrange
            var json = await GetEventJsonFromFileAsync("SendGridEvents.json").ConfigureAwait(false);

            var settings = new EventGridEventPublisherSettings(
                j => $"/my/custom/subject/{j["sg_event_id"].Value<string>()}",
                j => $"CustomEventType.{j["event"].Value<string>()}");

            var sut = new EventGridEventPublisher(_eventGridClient, _topicUri, settings);

            //Act
            await sut.PublishEventsAsync(json).ConfigureAwait(false);

            //Assert
            await _eventGridClient.Received()
            .PublishEventsWithHttpMessagesAsync(
                Arg.Is(_topicUri.Host),
                Arg.Is <IList <EventGridEvent> >(events => ValidatePublishedEvents(events, settings)))
            .ConfigureAwait(false);
        }