public SentimentInstrumentationMiddleware( TelemetryClient telemetryClient, ISentimentClient sentimentClient, InstrumentationSettings instrumentationSettings) { this.sentimentClient = sentimentClient ?? throw new ArgumentNullException(nameof(sentimentClient)); this.sentimentInstrumentation = new SentimentInstrumentation(this.sentimentClient, telemetryClient, instrumentationSettings); }
public void GIVENEmptySentimentClient_WHENSentimentInstrumentationIsConstructed_THENExceptionIsBeingThrown( InstrumentationSettings settings) { // Arrange const ISentimentClient emptySentimentClient = null; // Act // Assert Assert.Throws <ArgumentNullException>(() => new SentimentInstrumentation(settings, this.telemetryClient, emptySentimentClient)); }
public void GIVENAnyTelemetryClientEmptySettingsAndAnySentimentClient_WHENSentimentInstrumentationMiddlewareIsConstructed_THENExceptionIsBeingThrown( ISentimentClient sentimentClient) { // Arrange const InstrumentationSettings emptySettings = null; // Act // Assert Assert.Throws <ArgumentNullException>(() => new SentimentInstrumentationMiddleware(this.telemetryClient, sentimentClient, emptySettings)); }
public void GivenAnyTelemetryClientAnySettingsAndEmptySentimentClient_WhenSentimentInstrumentationMiddlewareIsConstructed_ThenExceptionIsBeingThrown( InstrumentationSettings settings) { // Arrange const ISentimentClient emptySentimentClient = null; // Act // Assert Assert.Throws <ArgumentNullException>(() => new SentimentInstrumentationMiddleware(this.telemetryClient, emptySentimentClient, settings)); }
public void GivenEmptySettings_WhenSentimentInstrumentationIsConstructed_ThenExceptionIsBeingThrown( ISentimentClient sentimentClient) { // Arrange const InstrumentationSettings emptySettings = null; // Act // Assert Assert.Throws <ArgumentNullException>(() => new SentimentInstrumentation(sentimentClient, this.telemetryClient, emptySettings)); }
public async void GIVENEmptyActivity_WHENTrackMessageSentimentIsInvoked_THENExceptionIsBeingThrown( ISentimentClient sentimentClient, InstrumentationSettings settings) { // Arrange const IActivityAdapter emptyActivity = null; // Act // Assert await Assert.ThrowsAsync <ArgumentNullException>(() => emptyActivity.TrackMessageSentiment(this.telemetryClient, settings, sentimentClient)) .ConfigureAwait(false); }
public void GIVENSentimentInstrumentationMiddleware_WHENDisposeIsInvoked_THENOtherResourcesAreBeingDisposedAsWell( InstrumentationSettings settings, ISentimentClient sentimentClient) { // Arrange var instrumentation = new SentimentInstrumentationMiddleware(this.telemetryClient, sentimentClient, settings); // Act instrumentation.Dispose(); // Assert Mock.Get(sentimentClient).Verify(sc => sc.Dispose(), Times.Once); }
public async void GivenEmptyActivity_WhenTrackMessageSentimentIsInvoked_ThenExceptionIsBeingThrown( ISentimentClient sentimentClient, InstrumentationSettings settings) { // Arrange const IMessageActivity emptyActivity = null; var instrumentation = new SentimentInstrumentation(sentimentClient, this.telemetryClient, settings); // Act // Assert await Assert.ThrowsAsync <ArgumentNullException>(() => instrumentation.TrackMessageSentiment(emptyActivity)) .ConfigureAwait(false); }
/// <summary> /// Initialize posts user control asynchronously /// </summary> /// <param name="i_GiffyClient">Retrieves a random gif which suites your phrase</param> /// <param name="i_SentimentClient">Analyzes the sentiment context of your post, and can help you keep positive</param> /// <returns></returns> public async Task Initialize(IGiphyClient i_GiffyClient, ISentimentClient i_SentimentClient) { m_PostsHandlersChain = intializePostsPublishChain(i_GiffyClient, i_SentimentClient); // Load my picture and detials string url = await FacebookApiClient.Instance.GetLoggedInUserPictureUrlAsync(); picture_myPictureBox.LoadAsync(url); label_MyName.Text = await FacebookApiClient.Instance.GetLoggedInUserNameAsync(); label_FriendsCount.Text = (await FacebookApiClient.Instance.GetFriendsAsync()).Count.ToString(); label_EventsCount.Text = (await FacebookApiClient.Instance.GetEventsAsync()).Count.ToString(); // Load my post await loadMyPosts(); // Load my active friends await setActiveFriendsAsync(); // load events await loadEventsTextAsync(); }
public async void GIVENAnyActivity_WHENTrackMessageSentimentIsInvoked_THENEventTelemetryIsBeingSent( double sentimentScore, IActivityAdapter activity, ISentimentClient sentimentClient, InstrumentationSettings settings) { // Arrange Mock.Get(sentimentClient) .Setup(s => s.GetSentiment(activity)) .Returns(Task.FromResult <double?>(sentimentScore)); // Act await activity.TrackMessageSentiment(this.telemetryClient, settings, sentimentClient) .ConfigureAwait(false); // Assert this.mockTelemetryChannel.Verify( tc => tc.Send(It.Is <EventTelemetry>(t => t.Name == EventTypes.MessageSentiment && t.Properties[SentimentConstants.Score] == sentimentScore.ToString(CultureInfo.InvariantCulture))), Times.Once); }
public async void GIVENTurnContextWithAnyActivity_WHENOnTurnAsyncIsInvoked_THENSentimentRetrievedEventTelemetryIsBeingSent( string activityType, int expectedNumberOfInvocations, Activity activity, ITurnContext turnContext, ISentimentClient sentimentClient, InstrumentationSettings settings) { // Arrange activity.Type = activityType; activity.ReplyToId = null; Mock.Get(turnContext) .SetupGet(c => c.Activity) .Returns(activity); var middleware = new SentimentInstrumentationMiddleware(this.telemetryClient, sentimentClient, settings); // Act await middleware.OnTurnAsync(turnContext, null) .ConfigureAwait(false); // Assert Mock.Get(sentimentClient).Verify(sc => sc.GetSentiment(It.IsAny <IActivityAdapter>()), Times.Exactly(expectedNumberOfInvocations)); this.mockTelemetryChannel.Verify(tc => tc.Send(It.IsAny <EventTelemetry>()), Times.Exactly(expectedNumberOfInvocations)); }
public SentimentInstrumentation(ISentimentClient sentimentClient, TelemetryClient telemetryClient, InstrumentationSettings settings) { this.sentimentClient = sentimentClient ?? throw new ArgumentNullException(nameof(sentimentClient)); this.telemetryClient = telemetryClient ?? throw new ArgumentNullException(nameof(telemetryClient)); this.settings = settings ?? throw new ArgumentNullException(nameof(settings)); }
public static async Task TrackMessageSentiment(this IActivityAdapter activity, TelemetryClient telemetryClient, InstrumentationSettings settings, ISentimentClient sentimentClient) { if (telemetryClient is null) { throw new ArgumentNullException(nameof(telemetryClient)); } if (sentimentClient is null) { throw new ArgumentNullException(nameof(sentimentClient)); } var score = await sentimentClient.GetSentiment(activity) .ConfigureAwait(false); var properties = new Dictionary <string, string> { { SentimentConstants.Score, score.Value.ToString(CultureInfo.InvariantCulture) }, }; activity.TrackCustomEvent(telemetryClient, settings, EventTypes.MessageSentiment, properties); }
public SentimentPostHandler(ISentimentClient i_SentimentClient) { m_SentimentClient = i_SentimentClient; }
/// <summary> /// Initialize post handlers (chain of responsibility) /// </summary> /// <returns></returns> private PostHandlerBase intializePostsPublishChain(IGiphyClient i_GiffyClient, ISentimentClient i_SentimentClient) { SentimentPostHandler sentimentHandler = new SentimentPostHandler(i_SentimentClient); GiphyPostHandler giffyHandler = new GiphyPostHandler(i_GiffyClient, pictureBox_PostSentPhoto); PublishPostHandler publishPostHandler = new PublishPostHandler(); sentimentHandler.SetSuccessor(giffyHandler); giffyHandler.SetSuccessor(publishPostHandler); return(sentimentHandler); }