public void RecordWebViewFromSameReferrerDomainDoesNotRecordsReferrer()
        {
            //arrange
            var       subtextContext = new Mock <ISubtextContext>();
            EntryView recordedView   = null;

            subtextContext.Setup(c => c.Repository.TrackEntry(It.IsAny <EntryView>())).Callback <EntryView>(
                view => recordedView = view);
            subtextContext.Setup(c => c.UrlHelper.BlogUrl()).Returns("/");
            subtextContext.Setup(c => c.Blog).Returns(new Blog {
                Host = "haacked.com"
            });
            subtextContext.Setup(c => c.HttpContext.Request.HttpMethod).Returns("GET");
            subtextContext.Setup(c => c.HttpContext.Request.UrlReferrer).Returns(new Uri("http://www.haacked.com/"));
            var settings = new global::Subtext.Framework.Configuration.Tracking {
                EnableWebStats = true
            };
            var statisticsService = new StatisticsService(subtextContext.Object, settings);

            //act
            statisticsService.RecordWebView(new EntryView {
                EntryId = 66
            });

            //assert
            Assert.IsNull(recordedView.ReferralUrl);
        }
        public void CtorSetsSubtextContextAndSettings()
        {
            //arrange
            var settings = new global::Subtext.Framework.Configuration.Tracking {EnableWebStats = true};
            ISubtextContext subtextContext = new Mock<ISubtextContext>().Object;

            //act
            var statisticsService = new StatisticsService(subtextContext, settings);

            //assert
            Assert.AreEqual(subtextContext, statisticsService.SubtextContext);
            Assert.AreEqual(settings, statisticsService.Settings);
        }
        public void CtorSetsSubtextContextAndSettings()
        {
            //arrange
            var settings = new global::Subtext.Framework.Configuration.Tracking {EnableWebStats = true};
            ISubtextContext subtextContext = new Mock<ISubtextContext>().Object;

            //act
            var statisticsService = new StatisticsService(subtextContext, settings);

            //assert
            Assert.AreEqual(subtextContext, statisticsService.SubtextContext);
            Assert.AreEqual(settings, statisticsService.Settings);
        }
        public void RecordAggViewWithStatsDisabledDoesNotTrackEntry()
        {
            //arrange
            var subtextContext = new Mock<ISubtextContext>();
            bool wasCalled = false;
            subtextContext.Setup(c => c.Repository.TrackEntry(It.IsAny<EntryView>())).Callback(() => wasCalled = true);
            subtextContext.Setup(c => c.HttpContext.Request.HttpMethod).Returns("GET");
            var settings = new global::Subtext.Framework.Configuration.Tracking {EnableAggBugs = false};
            var statisticsService = new StatisticsService(subtextContext.Object, settings);

            //act
            statisticsService.RecordAggregatorView(new EntryView {EntryId = 66});

            //assert
            Assert.IsFalse(wasCalled);
        }
        public void RecordWebViewDoesNotRecordHttpPost()
        {
            //arrange
            var subtextContext = new Mock<ISubtextContext>();
            bool wasCalled = false;
            subtextContext.Setup(c => c.Repository.TrackEntry(It.IsAny<EntryView>())).Callback(() => wasCalled = true);
            subtextContext.Setup(c => c.HttpContext.Request.HttpMethod).Returns("POST");
            var settings = new global::Subtext.Framework.Configuration.Tracking {EnableWebStats = true};
            var statisticsService = new StatisticsService(subtextContext.Object, settings);

            //act
            statisticsService.RecordWebView(new EntryView {EntryId = 66});

            //assert
            Assert.IsFalse(wasCalled);
        }
        public void RecordAggregatorViewRecordsEntry()
        {
            //arrange
            var subtextContext = new Mock<ISubtextContext>();
            EntryView entryView = null;
            subtextContext.Setup(c => c.Repository.TrackEntry(It.IsAny<EntryView>())).Callback<EntryView>(
                e => entryView = e);
            subtextContext.Setup(c => c.HttpContext.Request.HttpMethod).Returns("GET");
            var settings = new global::Subtext.Framework.Configuration.Tracking {EnableAggBugs = true};
            var statisticsService = new StatisticsService(subtextContext.Object, settings);

            //act
            statisticsService.RecordAggregatorView(new EntryView {EntryId = 66});

            //assert
            Assert.AreEqual(66, entryView.EntryId);
        }
        public void RecordAggregatorViewRecordsEntry()
        {
            //arrange
            var subtextContext = new Mock<ISubtextContext>();
            EntryView entryView = null;
            subtextContext.Setup(c => c.Repository.TrackEntry(It.IsAny<EntryView>())).Callback<EntryView>(
                e => entryView = e);
            subtextContext.Setup(c => c.HttpContext.Request.HttpMethod).Returns("GET");
            var settings = new global::Subtext.Framework.Configuration.Tracking {EnableAggBugs = true};
            var statisticsService = new StatisticsService(subtextContext.Object, settings);

            //act
            statisticsService.RecordAggregatorView(new EntryView {EntryId = 66});

            //assert
            Assert.AreEqual(66, entryView.EntryId);
        }
        public void RecordWebViewWithBadReferrerIgnoresReferer()
        {
            //arrange
            var subtextContext = new Mock<ISubtextContext>();
            EntryView recordedView = null;
            subtextContext.Setup(c => c.Repository.TrackEntry(It.IsAny<EntryView>())).Callback<EntryView>(
                view => recordedView = view);
            subtextContext.Setup(c => c.HttpContext.Request.HttpMethod).Returns("GET");
            subtextContext.Setup(c => c.HttpContext.Request.UrlReferrer).Throws(new UriFormatException());
            var settings = new global::Subtext.Framework.Configuration.Tracking {EnableWebStats = true};
            var statisticsService = new StatisticsService(subtextContext.Object, settings);

            //act
            statisticsService.RecordWebView(new EntryView {EntryId = 66});

            //assert
            Assert.IsNull(recordedView.ReferralUrl);
        }
        public void RecordWebViewWithBadReferrerIgnoresReferer()
        {
            //arrange
            var subtextContext = new Mock<ISubtextContext>();
            EntryView recordedView = null;
            subtextContext.Setup(c => c.Repository.TrackEntry(It.IsAny<EntryView>())).Callback<EntryView>(
                view => recordedView = view);
            subtextContext.Setup(c => c.HttpContext.Request.HttpMethod).Returns("GET");
            subtextContext.Setup(c => c.HttpContext.Request.UrlReferrer).Throws(new UriFormatException());
            var settings = new global::Subtext.Framework.Configuration.Tracking {EnableWebStats = true};
            var statisticsService = new StatisticsService(subtextContext.Object, settings);

            //act
            statisticsService.RecordWebView(new EntryView {EntryId = 66});

            //assert
            Assert.IsNull(recordedView.ReferralUrl);
        }
        public void RecordWebViewRecordsReferrer()
        {
            //arrange
            var subtextContext = new Mock<ISubtextContext>();
            EntryView recordedView = null;
            subtextContext.Setup(c => c.Repository.TrackEntry(It.IsAny<EntryView>())).Callback<EntryView>(
                view => recordedView = view);
            subtextContext.Setup(c => c.UrlHelper.BlogUrl()).Returns("/");
            subtextContext.Setup(c => c.Blog).Returns(new Blog {Host = "haacked.com"});
            subtextContext.Setup(c => c.HttpContext.Request.HttpMethod).Returns("GET");
            subtextContext.Setup(c => c.HttpContext.Request.UrlReferrer).Returns(new Uri("http://subtextproject.com/"));
            var settings = new global::Subtext.Framework.Configuration.Tracking {EnableWebStats = true};
            var statisticsService = new StatisticsService(subtextContext.Object, settings);

            //act
            statisticsService.RecordWebView(new EntryView {EntryId = 66});

            //assert
            Assert.AreEqual("http://subtextproject.com/", recordedView.ReferralUrl);
        }