Esempio n. 1
0
        public async Task ReportView_UpdatesLocation()
        {
            var sink = new PiwikSink(defaultOptions);

            mockApi
            .Setup(api => api.ReportViewAsync(It.IsAny <Api.PiwikViewInfo>()))
            .Returns(Task.FromResult(true));

            Assert.IsNull(sink.Location.CurrentUrl);
            Assert.IsNull(sink.Location.ReferrerUrl);

            //  Initial navigation, no referrer.
            await telemetryProvider.Activity.ReportViewAsync(new Core.ViewInfo());

            Assert.IsNotNull(sink.Location.CurrentUrl);
            Assert.AreEqual(sink.BaseAppUrl, sink.Location.CurrentUrl);
            Assert.IsNull(sink.Location.ReferrerUrl);

            //  Navigation after first navigation, referrer must be present.
            var viewInfo = new Core.ViewInfo()
            {
                AbsolutePath = "/some/url"
            };
            await telemetryProvider.Activity.ReportViewAsync(viewInfo);

            Assert.IsNotNull(sink.Location.CurrentUrl);
            Assert.IsNotNull(sink.Location.ReferrerUrl);
            Assert.AreEqual(new Uri(sink.BaseAppUrl, "some/url"), sink.Location.CurrentUrl);
            Assert.AreEqual(sink.BaseAppUrl, sink.Location.ReferrerUrl);
        }
Esempio n. 2
0
        public async Task ReportView_AllInformation()
        {
            var sink = new PiwikSink(defaultOptions);

            Api.PiwikViewInfo calledViewInfo = null;
            mockApi
            .Setup(api => api.ReportViewAsync(It.IsAny <Api.PiwikViewInfo>()))
            .Returns(Task.FromResult(true))
            .Callback <Api.PiwikViewInfo>(vi => calledViewInfo = vi);

            var viewInfo = new Core.ViewInfo()
            {
                AbsolutePath = "/some/url",
                Time         = TimeSpan.FromSeconds(5),
                Title        = "view title"
            };
            await telemetryProvider.Activity.ReportViewAsync(viewInfo);

            Assert.IsNotNull(calledViewInfo);
            Assert.AreEqual(new Uri(sink.BaseAppUrl, "some/url").ToString(), calledViewInfo.Url);
            Assert.AreEqual("view title", calledViewInfo.ViewName);
            Assert.IsNull(calledViewInfo.ReferrerUrl);
            Assert.AreEqual(TimeSpan.FromSeconds(5), calledViewInfo.ViewTime);
            Assert.AreSame(sink.Session, calledViewInfo.Session);
            Assert.AreSame(sink.EnvironmentInfo, calledViewInfo.EnvironmentInfo);
        }
Esempio n. 3
0
        private async Task Activity_OnReportViewAsync(object sender, Core.ViewInfo view)
        {
            using (await padlock.WriterLockAsync())
            {
                var viewUrl = new UriBuilder(BaseAppUrl);
                viewUrl.Path = view.AbsolutePath ?? "/";

                //  Advance user in their journey.
                Location.ReferrerUrl = Location.CurrentUrl;
                Location.CurrentUrl  = viewUrl.Uri;

                await options.Api.ReportViewAsync(new Api.PiwikViewInfo(Location.CurrentUrl.ToString())
                {
                    ViewName        = view.Title,
                    ReferrerUrl     = Location.ReferrerUrl?.ToString(),
                    ViewTime        = view.Time,
                    Session         = Session,
                    EnvironmentInfo = EnvironmentInfo
                });
            }
        }