Exemple #1
0
 public SentimentInstrumentationMiddleware(
     TelemetryClient telemetryClient,
     ISentimentClient sentimentClient,
     InstrumentationSettings instrumentationSettings)
 {
     this.sentimentClient          = sentimentClient ?? throw new ArgumentNullException(nameof(sentimentClient));
     this.sentimentInstrumentation = new SentimentInstrumentation(this.sentimentClient, telemetryClient, instrumentationSettings);
 }
Exemple #2
0
        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));
 }
Exemple #13
0
        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);
        }
Exemple #14
0
 public SentimentPostHandler(ISentimentClient i_SentimentClient)
 {
     m_SentimentClient = i_SentimentClient;
 }
Exemple #15
0
        /// <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);
        }