diff --git a/src/MixpanelEventForwarder.js b/src/MixpanelEventForwarder.js index 73c8178..567b1c0 100644 --- a/src/MixpanelEventForwarder.js +++ b/src/MixpanelEventForwarder.js @@ -90,9 +90,8 @@ var constructor = function () { reportEvent = true; logEvent(event); } else if (event.EventDataType == MessageType.PageView) { - event.EventName = 'Viewed ' + event.EventName; reportEvent = true; - logEvent(event); + logPageView(event); } else if ( event.EventDataType == MessageType.Commerce && event.ProductAction && @@ -297,6 +296,17 @@ var constructor = function () { } } + function logPageView(event) { + var eventName = 'Viewed ' + event.EventName; + event.EventAttributes = event.EventAttributes || {}; + + try { + mixpanel.mparticle.track(eventName, event.EventAttributes); + } catch (e) { + return 'Cannot log event on forwarder: ' + name + ': ' + e; + } + } + function logEvent(event) { event.EventAttributes = event.EventAttributes || {}; diff --git a/test/src/tests.js b/test/src/tests.js index b538dd7..dc631af 100644 --- a/test/src/tests.js +++ b/test/src/tests.js @@ -275,6 +275,32 @@ describe('Mixpanel Forwarder', function () { done(); }); + + it('should NOT alter the event name when sending a page view to the reporting service', function (done) { + mParticle.forwarder.process({ + EventDataType: MessageType.PageView, + EventName: 'Test Page Event', + }); + + window.mixpanel.mparticle.should.have.property('trackCalled', true); + window.mixpanel.mparticle.data.should.be + .instanceof(Array) + .and.have.lengthOf(2); + + window.mixpanel.mparticle.data[0].should.be.type('string'); + window.mixpanel.mparticle.data[1].should.be.instanceof(Object); + + window.mixpanel.mparticle.data[0].should.be.equal( + 'Viewed Test Page Event' + ); + window.mixpanel.mparticle.data[1].should.be.an + .Object() + .and.be.empty(); + + reportService.event.EventName.should.be.equal('Test Page Event'); + + done(); + }); }); describe('User events', function () {