Exemplo n.º 1
0
        public void TestShortActivityThenIdleLoggingInEmptyLog()
        {
            // | Short Activity, Idle
            var settings             = GetActivityTrackingSettingsFake();
            var activitiesRepository = GetActivitiesRepositoryFake();
            var userInputTracker     = GetUserInputTrackerFake();

            var records = new List <ActivityRecord>();
            var activityRecordsRepository = GetActivityRecordsRepositoryFake(records);

            var tracker = new UserActivityTracker(
                activityRecordsRepository,
                activitiesRepository,
                settings,
                userInputTracker);

            tracker.Start();

            DateTime timeStamp = DateTime.Now;

            userInputTracker.RaiseUserInputDetectedEvent(timeStamp);
            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.GetShortActivityDuration());
            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.MinimumIdleDuration);

            records.Should().HaveCount(1);

            ActivityRecord idleRecord = records[0];

            idleRecord.Idle.Should().Be(true);
            idleRecord.Duration.Should().Be(settings.MinimumIdleDuration + settings.GetShortActivityDuration());
            idleRecord.Activity.Should().Be(BreakActivity);

            tracker.Stop();
        }
Exemplo n.º 2
0
        public void TestIdleThenActivityThenIdleLoggingWithLastRecordIndicatingActivityInLog()
        {
            // Activity | Idle, Activity, Idle
            var settings             = GetActivityTrackingSettingsFake();
            var activitiesRepository = GetActivitiesRepositoryFake();
            var userInputTracker     = GetUserInputTrackerFake();

            var records = new List <ActivityRecord>();
            var activityRecordsRepository = GetActivityRecordsRepositoryFake(records);

            var tracker = new UserActivityTracker(
                activityRecordsRepository,
                activitiesRepository,
                settings,
                userInputTracker);

            tracker.Start();

            DateTime timeStamp = DateTime.Now;

            records.Add(
                new ActivityRecord(1)
            {
                Activity  = WorkActivity,
                Idle      = false,
                StartTime = timeStamp - settings.MinimumActivityDuration,
                EndTime   = timeStamp
            });

            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.MinimumIdleDuration);
            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.MinimumActivityDuration);
            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.MinimumIdleDuration);

            records.Should().HaveCount(4);

            ActivityRecord initialRecord = records[0];

            initialRecord.Idle.Should().Be(false);
            initialRecord.Duration.Should().Be(settings.MinimumActivityDuration);

            ActivityRecord idleRecord = records[1];

            idleRecord.Idle.Should().Be(true);
            idleRecord.Duration.Should().Be(settings.MinimumIdleDuration);
            idleRecord.StartTime.Should().Be(initialRecord.EndTime);

            ActivityRecord activityRecord = records[2];

            activityRecord.Idle.Should().Be(false);
            activityRecord.Duration.Should().Be(settings.MinimumActivityDuration);
            activityRecord.StartTime.Should().Be(idleRecord.EndTime);

            ActivityRecord lastIdleRecord = records[3];

            lastIdleRecord.Idle.Should().Be(true);
            lastIdleRecord.Duration.Should().Be(settings.MinimumIdleDuration);
            lastIdleRecord.StartTime.Should().Be(activityRecord.EndTime);

            tracker.Stop();
        }
Exemplo n.º 3
0
        public void TestActivityThenForceLogThenIdleThenActivityThenIdleLoggingInEmptyLog()
        {
            // | Activity, Force Log, Idle, Activity, Idle
            var settings             = GetActivityTrackingSettingsFake();
            var activitiesRepository = GetActivitiesRepositoryFake();
            var userInputTracker     = GetUserInputTrackerFake();

            var records = new List <ActivityRecord>();
            var activityRecordsRepository = GetActivityRecordsRepositoryFake(records);

            var tracker = new UserActivityTracker(
                activityRecordsRepository,
                activitiesRepository,
                settings,
                userInputTracker);

            tracker.Start();

            DateTime timeStamp = DateTime.Now;

            userInputTracker.RaiseUserInputDetectedEvent(timeStamp);
            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.MinimumActivityDuration);

            tracker.LogUserActivity(false, true, timeStamp);

            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.MinimumIdleDuration);
            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.MinimumActivityDuration);
            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.MinimumIdleDuration);

            records.Should().HaveCount(4);

            ActivityRecord activityRecord = records[0];

            activityRecord.Idle.Should().Be(false);
            activityRecord.Duration.Should().Be(settings.MinimumActivityDuration);
            activityRecord.Activity.Should().Be(WorkActivity);

            ActivityRecord idleRecord = records[1];

            idleRecord.Idle.Should().Be(true);
            idleRecord.Duration.Should().Be(settings.MinimumIdleDuration);
            idleRecord.Activity.Should().Be(BreakActivity);
            idleRecord.StartTime.Should().Be(activityRecord.EndTime);

            activityRecord = records[2];
            activityRecord.Idle.Should().Be(false);
            activityRecord.Duration.Should().Be(settings.MinimumActivityDuration);
            activityRecord.Activity.Should().Be(WorkActivity);
            activityRecord.StartTime.Should().Be(idleRecord.EndTime);

            idleRecord = records[3];
            idleRecord.Idle.Should().Be(true);
            idleRecord.Duration.Should().Be(settings.MinimumIdleDuration);
            idleRecord.Activity.Should().Be(BreakActivity);
            idleRecord.StartTime.Should().Be(activityRecord.EndTime);

            tracker.Stop();
        }
Exemplo n.º 4
0
        public void AppendPageIdIfNotPreviouslyViewed_ShouldAddPageIdToEmptyCookie()
        {
            // Arrange
            var expected    = "1000";
            var cookieValue = string.Empty;
            var pageId      = 1000;

            // Act
            var actual = UserActivityTracker.AppendPageIdIfNotPreviouslyViewed(cookieValue, pageId);

            // Assert
            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 5
0
        public void AppendPageIdIfNotPreviouslyViewed_ShouldIgnoreInvalidCookieAndAddPageId()
        {
            // Arrange
            var expected    = "1000";
            var cookieValue = "ThisIsABadCookie";
            var pageId      = 1000;

            // Act
            var actual = UserActivityTracker.AppendPageIdIfNotPreviouslyViewed(cookieValue, pageId);

            // Assert
            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 6
0
        public void AppendPageIdIfNotPreviouslyViewed_ShouldRemoveInvalidValuesAndAddPageIdToCookie()
        {
            // Arrange
            var expected    = "1,2,3,4,1000";
            var cookieValue = "1,invalid,2,3,####,4,@!@!";
            var pageId      = 1000;

            // Act
            var actual = UserActivityTracker.AppendPageIdIfNotPreviouslyViewed(cookieValue, pageId);

            // Assert
            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 7
0
        public void TestShortActivityThenIdleWithLastRecordIndicatingInactivityInLog()
        {
            // Idle | Short Activity, Idle
            var settings             = GetActivityTrackingSettingsFake();
            var activitiesRepository = GetActivitiesRepositoryFake();
            var userInputTracker     = GetUserInputTrackerFake();

            var records = new List <ActivityRecord>();
            var activityRecordsRepository = GetActivityRecordsRepositoryFake(records);

            var tracker = new UserActivityTracker(
                activityRecordsRepository,
                activitiesRepository,
                settings,
                userInputTracker);

            tracker.Start();

            DateTime timeStamp = DateTime.Now;

            records.Add(
                new ActivityRecord(1)
            {
                Activity  = BreakActivity,
                Idle      = true,
                StartTime = timeStamp - settings.MinimumIdleDuration,
                EndTime   = timeStamp
            });

            userInputTracker.RaiseUserInputDetectedEvent(timeStamp);
            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.GetShortActivityDuration());
            userInputTracker.RaiseUserInputDetectedEvent(ref timeStamp, settings.MinimumIdleDuration);

            records.Should().HaveCount(1);

            ActivityRecord idleRecord = records[0];

            idleRecord.Idle.Should().Be(true);
            idleRecord.Duration.Should()
            .Be(settings.MinimumIdleDuration + settings.GetShortActivityDuration() + settings.MinimumIdleDuration);

            tracker.Stop();
        }