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); }
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); }
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 }); } }