public async void GIVENTurnContext_WHENUpdateActivityInvoked_THENEventTelemetryIsBeingSent( InstrumentationSettings settings, ITurnContext turnContext, IFixture fixture) { // Arrange var instrumentation = new BotInstrumentationMiddleware(this.telemetryClient, settings); var activity = new Activity { Type = ActivityTypes.ConversationUpdate, ChannelId = fixture.Create <string>(), }; Mock.Get(turnContext) .Setup(c => c.OnUpdateActivity(It.IsAny <UpdateActivityHandler>())) .Callback <UpdateActivityHandler>(h => h(null, activity, () => Task.FromResult((ResourceResponse)null))); const int expectedNumberOfTelemetryProperties = 2; const string expectedTelemetryName = EventTypes.ConversationUpdate; // Act await instrumentation.OnTurnAsync(turnContext, null) .ConfigureAwait(false); // Assert this.mockTelemetryChannel.Verify( tc => tc.Send(It.Is <EventTelemetry>(t => t.Name == expectedTelemetryName && t.Properties.Count == expectedNumberOfTelemetryProperties && t.Properties[BotConstants.TypeProperty] == activity.Type && t.Properties[BotConstants.ChannelProperty] == activity.ChannelId)), Times.Once); }
public async void GIVENEmptyTurnContext_WHENOnTurnAsyncIsInvoked_THENExceptionIsBeingThrown( InstrumentationSettings settings) { // Arrange var instrumentation = new BotInstrumentationMiddleware(this.telemetryClient, settings); const ITurnContext emptyTurnContext = null; NextDelegate nextDelegate = Task.FromCanceled; // Act // Assert await Assert.ThrowsAsync <ArgumentNullException>(() => instrumentation.OnTurnAsync(emptyTurnContext, nextDelegate)) .ConfigureAwait(false); }
public async void GIVENNextTurn_WHENOnTurnAsyncIsInvoked_THENNextTurnIsBeingInvoked( InstrumentationSettings settings) { // Arrange var instrumentation = new BotInstrumentationMiddleware(this.telemetryClient, settings); var turnContext = new Mock <ITurnContext>(); var nextTurnInvoked = false; // Act await instrumentation.OnTurnAsync(turnContext.Object, token => Task.Run(() => nextTurnInvoked = true, token)) .ConfigureAwait(false); // Assert nextTurnInvoked.Should().Be(true); }
public async void GIVENTurnContextWithAnyActivity_WHENOnTurnAsyncIsInvoked_THENEventTelemetryIsBeingSent( Activity activity, ITurnContext turnContext, InstrumentationSettings settings) { // Arrange var instrumentation = new BotInstrumentationMiddleware(this.telemetryClient, settings); Mock.Get(turnContext) .SetupGet(c => c.Activity) .Returns(activity); // Act await instrumentation.OnTurnAsync(turnContext, null) .ConfigureAwait(false); // Assert this.mockTelemetryChannel.Verify(tc => tc.Send(It.IsAny <EventTelemetry>()), Times.Once); }