Beispiel #1
0
        public void SetUp()
        {
            postDataBuilderMock  = MockRepository.GenerateMock <IPostDataBuilder>();
            googleDataSenderMock = MockRepository.GenerateMock <IGoogleDataSender>();
            eventTracker         = new EventTracker(postDataBuilderMock, googleDataSenderMock);

            analyticsEvent = MockRepository.GenerateMock <IUniversalAnalyticsEvent>();
        }
        public void SetUp()
        {
            postDataBuilderMock = MockRepository.GenerateMock<IPostDataBuilder>();
            googleDataSenderMock = MockRepository.GenerateMock<IGoogleDataSender>();
            eventTracker = new EventTracker(postDataBuilderMock, googleDataSenderMock);

            analyticsEvent = MockRepository.GenerateMock<IUniversalAnalyticsEvent>();
        }
Beispiel #3
0
        public IEnumerable <KeyValuePair <string, string> > BuildPostDataCollection(
            string measurementProtocolVersion, IUniversalAnalyticsEvent analyticsEvent)
        {
            var postData   = BuildPostData(measurementProtocolVersion, analyticsEvent);
            var collection = postData.AllKeys.SelectMany(
                postData.GetValues,
                (key, value) => new KeyValuePair <string, string>(key, value));

            return(collection);
        }
        public void TrackGamingGroupCreation(TransactionSource registrationSource)
        {
            IUniversalAnalyticsEvent universalAnalyticsEvent = eventFactory.MakeUniversalAnalyticsEvent(
                DEFAULT_ANONYMOUS_CLIENT_ID,
                EventCategoryEnum.GamingGroups.ToString(),
                EventActionEnum.Created.ToString(),
                registrationSource.ToString());

            eventTracker.TrackEvent(universalAnalyticsEvent);
        }
        public void TrackGamingGroupUpdate(ApplicationUser currentUser)
        {
            IUniversalAnalyticsEvent universalAnalyticsEvent = eventFactory.MakeUniversalAnalyticsEvent(
                currentUser.AnonymousClientId,
                EventCategoryEnum.GamingGroups.ToString(),
                EventActionEnum.Updated.ToString(),
                DEFAULT_EVENT_LABEL);

            eventTracker.TrackEvent(universalAnalyticsEvent);
        }
        public void TrackGameDefinitionCreation(ApplicationUser currentUser, string gameDefinitionName)
        {
            IUniversalAnalyticsEvent universalAnalyticsEvent = eventFactory.MakeUniversalAnalyticsEvent(
                currentUser.AnonymousClientId,
                EventCategoryEnum.GameDefinitions.ToString(),
                EventActionEnum.Created.ToString(),
                gameDefinitionName);

            eventTracker.TrackEvent(universalAnalyticsEvent);
        }
        public void TrackPlayedGame(ApplicationUser currentUser, TransactionSource transactionSource)
        {
            IUniversalAnalyticsEvent universalAnalyticsEvent = eventFactory.MakeUniversalAnalyticsEvent(
                currentUser.AnonymousClientId,
                EventCategoryEnum.PlayedGames.ToString(),
                EventActionEnum.Created.ToString(),
                transactionSource.ToString());

            eventTracker.TrackEvent(universalAnalyticsEvent);
        }
Beispiel #8
0
        public void TrackUserRegistration(TransactionSource registrationSource)
        {
            IUniversalAnalyticsEvent universalAnalyticsEvent = eventFactory.MakeUniversalAnalyticsEvent(
                DEFAULT_ANONYMOUS_CLIENT_ID,
                EventCategoryEnum.Users.ToString(),
                EventActionEnum.Created.ToString(),
                registrationSource.ToString(),
                nonInteractionEvent: IsNonInteractionEvent(TransactionSource.RestApi));

            eventTracker.TrackEvent(universalAnalyticsEvent);
        }
Beispiel #9
0
        public void TrackPlayerCreation(ApplicationUser currentUser)
        {
            IUniversalAnalyticsEvent universalAnalyticsEvent = eventFactory.MakeUniversalAnalyticsEvent(
                currentUser.AnonymousClientId,
                EventCategoryEnum.Players.ToString(),
                EventActionEnum.Created.ToString(),
                DEFAULT_EVENT_LABEL,
                nonInteractionEvent: IsNonInteractionEvent(TransactionSource.RestApi));

            eventTracker.TrackEvent(universalAnalyticsEvent);
        }
Beispiel #10
0
        public void SetUp()
        {
            _autoMocker = new RhinoAutoMocker <UniversalAnalyticsNemeStatsEventTracker>();
            _autoMocker.PartialMockTheClassUnderTest();

            analyticsEvent = MockRepository.GenerateMock <IUniversalAnalyticsEvent>();

            currentUser = new ApplicationUser
            {
                AnonymousClientId = "anonymous id"
            };
        }
        public void SetUp()
        {
            eventTrackerMock = MockRepository.GenerateMock<IEventTracker>();
            eventFactoryMock = MockRepository.GenerateMock<IUniversalAnalyticsEventFactory>();
            analyticsEvent = MockRepository.GenerateMock<IUniversalAnalyticsEvent>();

            tracker = new UniversalAnalyticsNemeStatsEventTracker(eventTrackerMock, eventFactoryMock);
            currentUser = new ApplicationUser()
            {
                AnonymousClientId = "anonymous id"
            };
        }
Beispiel #12
0
        public void SetUp()
        {
            eventTrackerMock = MockRepository.GenerateMock <IEventTracker>();
            eventFactoryMock = MockRepository.GenerateMock <IUniversalAnalyticsEventFactory>();
            analyticsEvent   = MockRepository.GenerateMock <IUniversalAnalyticsEvent>();

            tracker     = new UniversalAnalyticsNemeStatsEventTracker(eventTrackerMock, eventFactoryMock);
            currentUser = new ApplicationUser()
            {
                AnonymousClientId = "anonymous id"
            };
        }
        /// <summary>
        /// Tracks the event and puts the result in a container object.
        /// </summary>
        /// <param name="analyticsEvent"></param>
        /// <returns>The result of the tracking operation</returns>
        public async Task <TrackingResult> TrackEventAsync(IUniversalAnalyticsEvent analyticsEvent)
        {
            var result = new TrackingResult();

            try
            {
                var postData = this._postDataBuilder.BuildPostDataCollection(MEASUREMENT_PROTOCOL_VERSION, analyticsEvent);
                await this._googleDataSender.SendDataAsync(GOOGLE_COLLECTION_URI, postData);
            }
            catch (Exception e)
            {
                result.Exception = e;
            }

            return(result);
        }
        /// <summary>
        /// Tracks the event and puts the result in a container object.
        /// </summary>
        /// <param name="analyticsEvent"></param>
        /// <returns>The result of the tracking operation</returns>
        public TrackingResult TrackEvent(IUniversalAnalyticsEvent analyticsEvent)
        {
            var result = new TrackingResult();

            try
            {
                string postData = this._postDataBuilder.BuildPostDataString(MEASUREMENT_PROTOCOL_VERSION, analyticsEvent);
                this._googleDataSender.SendData(GOOGLE_COLLECTION_URI, postData);
            }
            catch (Exception e)
            {
                result.Exception = e;
            }

            return(result);
        }
Beispiel #15
0
        /// <summary>
        /// Validates current event (and existing payload data) and puts the result in a container object
        /// </summary>
        /// <param name="analyticsEvent">Events to track</param>
        /// <returns>The result of the hit validation operation</returns>
        public TrackingResult ValidateHit(IUniversalAnalyticsEvent analyticsEvent)
        {
            var result = new TrackingResult();

            try
            {
                string postData = this._postDataBuilder.BuildPostDataString(MEASUREMENT_PROTOCOL_VERSION, analyticsEvent, _customPayload);
                result.ValidationResult = _googleDataSender.SendData(GOOGLE_COLLECTION_URI_DEBUG, postData, /*bReadResponse*/ true);
            }
            catch (Exception e)
            {
                result.Exception = e;
            }

            return(result);
        }
        public void ItReturnsANewUniversalAnalyticsEvent()
        {
            SetupMockForGettingTrackingIdFromConfig(true);
            IUniversalAnalyticsEvent analyticsEvent = factory.MakeUniversalAnalyticsEvent(
                anonymousClientId,
                eventCategory,
                eventAction,
                eventLabel,
                eventValue);

            //generally prefer to have a separate test for each case but this will do just fine.
            Assert.AreEqual(trackingId, analyticsEvent.TrackingId);
            Assert.AreEqual(anonymousClientId, analyticsEvent.AnonymousClientId);
            Assert.AreEqual(eventCategory, analyticsEvent.EventCategory);
            Assert.AreEqual(eventAction, analyticsEvent.EventAction);
            Assert.AreEqual(eventLabel, analyticsEvent.EventLabel);
            Assert.AreEqual(eventValue, analyticsEvent.EventValue);
        }
        public void SetUp()
        {
            postDataBuilder = new PostDataBuilder();

            analyticsEvent = MockRepository.GenerateMock <IUniversalAnalyticsEvent>();
            analyticsEvent.Expect(mock => mock.TrackingId)
            .Return(trackingId);
            analyticsEvent.Expect(mock => mock.AnonymousClientId)
            .Return(anonymousClientId);
            analyticsEvent.Expect(mock => mock.EventAction)
            .Return(eventAction);
            analyticsEvent.Expect(mock => mock.EventCategory)
            .Return(eventCategory);
            analyticsEvent.Expect(mock => mock.EventLabel)
            .Return(eventLabel);
            analyticsEvent.Expect(mock => mock.EventValue)
            .Return(eventValue);
        }
Beispiel #18
0
        public void Send100EventsAsQuicklyAsPossibleAndARateLimitStillWontOccur()
        {
            EventTracker eventTracker = new EventTracker();

            for (int i = 1; i <= 100; i++)
            {
                try
                {
                    IUniversalAnalyticsEvent analyticsEvent = eventFactory.MakeUniversalAnalyticsEvent(
                        "rate limit test user",
                        "rate limit test category",
                        "rate limit test action",
                        "rate limit test label",
                        i.ToString());
                    eventTracker.TrackEvent(analyticsEvent);
                }catch (Exception e)
                {
                    Assert.Fail("failed after " + i + " transmissions with the following exeption: " + e.Message);
                }
            }
        }
Beispiel #19
0
        public void SendingEventsFromTwoDifferentUsersShowsUpAsTwoActiveSessionsInUniversalAnalytics()
        {
            //you actually have to watch the analytics property to see this one happening. No assertion necessary.
            EventTracker eventTracker = new EventTracker();

            IUniversalAnalyticsEvent analyticsEventForUser1 = eventFactory.MakeUniversalAnalyticsEvent(
                "test user 1",
                "rate limit test category",
                "rate limit test action",
                "rate limit test lable");

            eventTracker.TrackEvent(analyticsEventForUser1);

            IUniversalAnalyticsEvent analyticsEventForUser2 = eventFactory.MakeUniversalAnalyticsEvent(
                "test user 2",
                "test category",
                "test action",
                "test label");

            eventTracker.TrackEvent(analyticsEventForUser2);
        }
        public void SetUp()
        {
            _postDataBuilder = new PostDataBuilder();

            _analyticsEvent = MockRepository.GenerateMock <IUniversalAnalyticsEvent>();
            _analyticsEvent.Expect(mock => mock.TrackingId)
            .Return(_trackingId);
            _analyticsEvent.Expect(mock => mock.AnonymousClientId)
            .Return(_anonymousClientId);
            _analyticsEvent.Expect(mock => mock.EventAction)
            .Return(_eventAction);
            _analyticsEvent.Expect(mock => mock.EventCategory)
            .Return(_eventCategory);
            _analyticsEvent.Expect(mock => mock.EventLabel)
            .Return(_eventLabel);
            _analyticsEvent.Expect(mock => mock.EventValue)
            .Return(_eventValue);
            _analyticsEvent.Expect(m => m.UserId)
            .Return(_userId);
            _analyticsEvent.Expect(mock => mock.NonInteractionHit)
            .Return(_nonInteractionHit);
        }
        public string BuildPostDataString(string measurementProtocolVersion, IUniversalAnalyticsEvent analyticsEvent)
        {
            NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(string.Empty);
            nameValueCollection[PARAMETER_KEY_VERSION] = measurementProtocolVersion;
            nameValueCollection[PARAMETER_KEY_TRACKING_ID] = analyticsEvent.TrackingId;
            nameValueCollection[PARAMETER_KEY_ANONYMOUS_CLIENT_ID] = analyticsEvent.AnonymousClientId;
            nameValueCollection[PARAMETER_KEY_HIT_TYPE] = [email protected]();
            nameValueCollection[PARAMETER_KEY_EVENT_ACTION] = analyticsEvent.EventAction;
            nameValueCollection[PARAMETER_KEY_EVENT_CATEGORY] = analyticsEvent.EventCategory;

            if(analyticsEvent.EventLabel != null)
            {
                nameValueCollection[PARAMETER_KEY_EVENT_LABEL] = analyticsEvent.EventLabel;
            }

            if(analyticsEvent.EventValue != null)
            {
                nameValueCollection[PARAMETER_KEY_EVENT_VALUE] = analyticsEvent.EventValue;
            }

            return nameValueCollection.ToString();
        }
Beispiel #22
0
        public void SampleCodeForGitHubReadMeUsingFactoryToGetEventObject()
        {
            //create a new EventTracker
            IEventTracker eventTracker = new EventTracker();
            //create a new event to pass to the event tracker
            IUniversalAnalyticsEvent analyticsEvent = eventFactory.MakeUniversalAnalyticsEvent(
                //Required. Anonymous client id.
                //See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#cid for details.
                "developer",
                //Required. The event category for the event.
                // See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#ec for details.
                "test category",
                //Required. The event action for the event.
                //See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#ea for details.
                "test action",
                //Optional. The event label for the event.
                // See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#el for details.
                "test label",
                //Optional. The event value for the event.
                // See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#ev for details.
                "10");

            eventTracker.TrackEvent(analyticsEvent);
        }
Beispiel #23
0
        public string BuildPostDataString(string measurementProtocolVersion, IUniversalAnalyticsEvent analyticsEvent)
        {
            var postData = BuildPostData(measurementProtocolVersion, analyticsEvent);

            return(postData.ToString());
        }
Beispiel #24
0
        internal NameValueCollection BuildPostData(string measurementProtocolVersion, IUniversalAnalyticsEvent analyticsEvent)
        {
            NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(string.Empty);

            nameValueCollection[PARAMETER_KEY_VERSION]             = measurementProtocolVersion;
            nameValueCollection[PARAMETER_KEY_TRACKING_ID]         = analyticsEvent.TrackingId;
            nameValueCollection[PARAMETER_KEY_ANONYMOUS_CLIENT_ID] = analyticsEvent.AnonymousClientId;
            nameValueCollection[PARAMETER_KEY_HIT_TYPE]            = [email protected]();
            nameValueCollection[PARAMETER_KEY_EVENT_ACTION]        = analyticsEvent.EventAction;
            nameValueCollection[PARAMETER_KEY_EVENT_CATEGORY]      = analyticsEvent.EventCategory;

            if (analyticsEvent.EventLabel != null)
            {
                nameValueCollection[PARAMETER_KEY_EVENT_LABEL] = analyticsEvent.EventLabel;
            }

            if (analyticsEvent.EventValue != null)
            {
                nameValueCollection[PARAMETER_KEY_EVENT_VALUE] = analyticsEvent.EventValue;
            }

            return(nameValueCollection);
        }
Beispiel #25
0
        public string BuildPostDataString(string measurementProtocolVersion, IUniversalAnalyticsEvent analyticsEvent, NameValueCollection customPayload = null)
        {
            var postData = BuildPostData(measurementProtocolVersion, analyticsEvent, customPayload);

            return(postData.ToString());
        }
Beispiel #26
0
        internal NameValueCollection BuildPostData(string measurementProtocolVersion, IUniversalAnalyticsEvent analyticsEvent, NameValueCollection customPayload = null)
        {
            NameValueCollection nameValueCollection = HttpUtility.ParseQueryString(string.Empty);

            nameValueCollection[PARAMETER_KEY_VERSION]     = measurementProtocolVersion;
            nameValueCollection[PARAMETER_KEY_TRACKING_ID] = analyticsEvent.TrackingId;

            if (!string.IsNullOrWhiteSpace(analyticsEvent.UserId))
            {
                nameValueCollection[PARAMETER_KEY_USER_ID] = analyticsEvent.UserId;
            }

            if (!string.IsNullOrWhiteSpace(analyticsEvent.AnonymousClientId))
            {
                nameValueCollection[PARAMETER_KEY_ANONYMOUS_CLIENT_ID] = analyticsEvent.AnonymousClientId;
            }

            nameValueCollection[PARAMETER_KEY_HIT_TYPE]       = [email protected]();
            nameValueCollection[PARAMETER_KEY_EVENT_ACTION]   = analyticsEvent.EventAction;
            nameValueCollection[PARAMETER_KEY_EVENT_CATEGORY] = analyticsEvent.EventCategory;

            if (analyticsEvent.EventLabel != null)
            {
                nameValueCollection[PARAMETER_KEY_EVENT_LABEL] = analyticsEvent.EventLabel;
            }

            if (analyticsEvent.EventValue != null)
            {
                nameValueCollection[PARAMETER_KEY_EVENT_VALUE] = analyticsEvent.EventValue;
            }

            if (analyticsEvent.NonInteractionHit)
            {
                nameValueCollection[PARAMETER_KEY_NON_INTERACTION_HIT] = "1";
            }

            //adding custom/externally specified parameters
            if (customPayload != null)
            {
                foreach (string parameter in customPayload)
                {
                    if (nameValueCollection[parameter] == null) //do not override supported parameters with user ones
                    {
                        nameValueCollection[parameter] = customPayload[parameter];
                    }
                }
            }

            return(nameValueCollection);
        }
        /// <summary>
        /// Pushes an event up to the Universal Analytics web property specified in the .config file.
        /// </summary>
        /// <param name="analyticsEvent">The event to be logged.</param>
        public void TrackEvent(IUniversalAnalyticsEvent analyticsEvent)
        {
            string postData = postDataBuilder.BuildPostDataString(MEASUREMENT_PROTOCOL_VERSION, analyticsEvent);

            googleDataSender.SendData(GOOGLE_COLLECTION_URI, postData);
        }
        /// <summary>
        /// Pushes an event up to the Universal Analytics web property specified in the .config file.
        /// </summary>
        /// <param name="analyticsEvent">The event to be logged.</param>
        public async Task TrackEventAsync(IUniversalAnalyticsEvent analyticsEvent)
        {
            var postData = postDataBuilder.BuildPostDataCollection(MEASUREMENT_PROTOCOL_VERSION, analyticsEvent);

            await googleDataSender.SendDataAsync(GOOGLE_COLLECTION_URI, postData);
        }
        /// <summary>
        /// Pushes an event up to the Universal Analytics web property specified in the .config file.
        /// </summary>
        /// <param name="analyticsEvent">The event to be logged.</param>
        public void TrackEvent(IUniversalAnalyticsEvent analyticsEvent)
        {
            string postData = postDataBuilder.BuildPostDataString(MEASUREMENT_PROTOCOL_VERSION, analyticsEvent);

            googleDataSender.SendData(GOOGLE_COLLECTION_URI, postData);
        }
        public void SetUp()
        {
            postDataBuilder = new PostDataBuilder();

            analyticsEvent = MockRepository.GenerateMock<IUniversalAnalyticsEvent>();
            analyticsEvent.Expect(mock => mock.TrackingId)
                .Return(trackingId);
            analyticsEvent.Expect(mock => mock.AnonymousClientId)
                .Return(anonymousClientId);
            analyticsEvent.Expect(mock => mock.EventAction)
                .Return(eventAction);
            analyticsEvent.Expect(mock => mock.EventCategory)
                .Return(eventCategory);
            analyticsEvent.Expect(mock => mock.EventLabel)
                .Return(eventLabel);
            analyticsEvent.Expect(mock => mock.EventValue)
                .Return(eventValue);
        }