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>(); }
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); }
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); }
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); }
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" }; }
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); }
/// <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); }
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); } } }
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(); }
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); }
public string BuildPostDataString(string measurementProtocolVersion, IUniversalAnalyticsEvent analyticsEvent) { var postData = BuildPostData(measurementProtocolVersion, analyticsEvent); return(postData.ToString()); }
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); }
public string BuildPostDataString(string measurementProtocolVersion, IUniversalAnalyticsEvent analyticsEvent, NameValueCollection customPayload = null) { var postData = BuildPostData(measurementProtocolVersion, analyticsEvent, customPayload); return(postData.ToString()); }
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); }
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); }