예제 #1
0
        public void CalendarViewWithNoDateRange()
        {
            var board = new ActivityBoard();

            board.InBox.ViewModes.CalendarView.Enable();
            Assert.That(() => board.InBox.ViewItems.Any(), Throws.TypeOf <InvalidOperationException>());
        }
        public void CanCreateContext()
        {
            var board = new ActivityBoard();

            board.AddNewContext("Context Name");
            Assert.That(board.Contexts, Is.Not.Empty);
        }
예제 #3
0
        public void CalendarViewWithIncludedHistoryItemBeforeStartDate()
        {
            var      board         = new ActivityBoard();
            DateTime startDate     = new DateTime(2017, 2, 28);
            DateTime endDate       = startDate.AddDays(5);
            DateTime dueDate       = startDate.AddDays(1);
            DateTime completedDate = startDate.AddDays(-1);
            Activity activity      = Activity.FluentNew("New Activity")
                                     .ActiveDueDate(dueDate)
                                     .Recurrence(ERecurFromType.FromCompletedDate, x => x.Daily(2))
                                     .AddToBoard(board);

            activity.SignalCompleted(completedDate);
            board.InBox.ViewModes.CalendarView
            .DateRange(startDate, endDate)
            .IncludeHistory()
            .Enable();

            DateTime expectedActiveDueDate = completedDate.AddDays(2);

            Assert.That(board.InBox.ViewItems, Is.Not.Empty);
            Assert.That(board.InBox.ViewItems.Count(), Is.EqualTo(1));
            Assert.That(board.InBox.ViewItems.FirstOrDefault(x => x.Date == expectedActiveDueDate), Is.Not.Null);
            Assert.That(board.InBox.ViewItems.FirstOrDefault(x => x.Date == expectedActiveDueDate), Is.TypeOf <ActivityViewItem>());
        }
예제 #4
0
        public void CalendarViewWithIncludedFutureOnEndDate()
        {
            var      board     = new ActivityBoard();
            DateTime startDate = new DateTime(2017, 3, 1);
            DateTime endDate   = startDate.AddDays(3);
            DateTime dueDate   = startDate.AddDays(-1);
            Activity activity  = Activity.FluentNew("New Activity")
                                 .ActiveDueDate(dueDate)
                                 .Recurrence(ERecurFromType.FromCompletedDate, x => x.Daily(2))
                                 .AddToBoard(board);

            board.InBox.ViewModes.CalendarView
            .DateRange(startDate, endDate)
            .IncludeFuture()
            .Enable();

            DateTime recur1DueDate = dueDate.AddDays(2);
            DateTime recur2DueDate = recur1DueDate.AddDays(2);

            Assert.That(recur2DueDate, Is.EqualTo(endDate));
            Assert.That(board.InBox.ViewItems, Is.Not.Empty);
            Assert.That(board.InBox.ViewItems.Count(), Is.EqualTo(2));
            Assert.That(board.InBox.ViewItems.FirstOrDefault(x => x.Date == recur1DueDate), Is.Not.Null);
            Assert.That(board.InBox.ViewItems.FirstOrDefault(x => x.Date == recur1DueDate), Is.TypeOf <ProjectionViewItem>());
            Assert.That(board.InBox.ViewItems.FirstOrDefault(x => x.Date == recur2DueDate), Is.Not.Null);
            Assert.That(board.InBox.ViewItems.FirstOrDefault(x => x.Date == recur2DueDate), Is.TypeOf <ProjectionViewItem>());
        }
        public void ContainsReturnsTrueWhenActivityGuidMatches()
        {
            var      activityBoard = new ActivityBoard();
            Activity activity      = Activity.FluentNew("First New Activity").AddToBoard(activityBoard);

            Activity.FluentNew("Second New Activity").AddToBoard(activityBoard);
            Assert.That(activityBoard.ContainsActivity(activity), Is.True);
        }
        public void CanAddActivity()
        {
            var activityBoard = new ActivityBoard();

            Activity.FluentNew("New Activity").AddToBoard(activityBoard);
            Assert.That(activityBoard.UnfilteredActivities.Any(), Is.True);
            Assert.That(activityBoard.UnfilteredActivities.Count(), Is.EqualTo(1));
        }
        public void CanRemoveContext()
        {
            var             board   = new ActivityBoard();
            ActivityContext context = board.AddNewContext("Context Name");

            board.RemoveContext(context);
            Assert.That(board.Contexts, Is.Empty);
        }
        public void NamePropertyIsReadWrite()
        {
            var    activityBoard = new ActivityBoard();
            string testName      = "Test Name";

            activityBoard.Name = testName;
            Assert.That(activityBoard.Name, Is.EqualTo(testName));
        }
        public void CanRemoveGoal()
        {
            var          board = new ActivityBoard();
            ActivityGoal goal  = board.AddNewGoal("New Goal");

            board.RemoveGoal(goal);
            Assert.That(board.Goals, Is.Empty);
        }
예제 #10
0
        public void CanRemoveActivityList()
        {
            var          board            = new ActivityBoard();
            string       activityListName = "Doing";
            ActivityList list             = board.AddNewList(activityListName);

            board.RemoveList(list);
            Assert.That(board.ActivityLists, Is.Empty);
        }
예제 #11
0
        public void GetGoalFromActivityWhenNoGoalIsAssigned()
        {
            var      board    = new ActivityBoard();
            Activity activity = Activity.FluentNew("An Activity")
                                .AddToBoard(board);
            ActivityGoal foundGoal = board.GetGoalFromActivity(activity);

            Assert.That(foundGoal, Is.Null);
        }
예제 #12
0
        public void CannotMoveActivityToGoalNotBelongingToBoard()
        {
            var      board    = new ActivityBoard();
            Activity activity = Activity.FluentNew("An Activity")
                                .AddToBoard(board);
            ActivityGoal goal = new ActivityGoal("Bad Goal");

            Assert.That(() => board.MoveActivity(activity).ToGoal(goal), Throws.TypeOf <ArgumentException>());
        }
예제 #13
0
        public void CanCreateActivityList()
        {
            var          board            = new ActivityBoard();
            string       activityListName = "Doing";
            ActivityList list             = board.AddNewList(activityListName);

            Assert.That(list.Name, Is.EqualTo(activityListName));
            Assert.That(board.ActivityLists, Has.Member(list));
        }
예제 #14
0
        public void GetGoalFromActivityWhenGoalGuidIsInvalid()
        {
            var      board    = new ActivityBoard();
            Activity activity = Activity.FluentNew("An Activity")
                                .AddToBoard(board);

            activity.GoalGuid = Guid.NewGuid();
            Assert.That(() => board.GetGoalFromActivity(activity), Throws.TypeOf <InvalidOperationException>());
        }
예제 #15
0
        public void ViewItemsContainsAddedActivities()
        {
            var      board    = new ActivityBoard();
            Activity activity = Activity.FluentNew("New Activity")
                                .AddToBoard(board);

            Assert.That(board.InBox.ViewItems, Is.Not.Empty);
            Assert.That(board.InBox.ViewItems.Count(), Is.EqualTo(1));
        }
 public FluentlyMoveActivity(ActivityBoard board, Activity activityToMove)
 {
     if (!board.ContainsActivity(activityToMove))
     {
         throw new ArgumentException($"Cannot move an {nameof(Activity)} that is not owned by the referenced {nameof(ActivityBoard)}.");
     }
     this._board          = board;
     this._activityToMove = activityToMove;
 }
예제 #17
0
        public void RemoveRemovesOneActivityIfGuidMatches()
        {
            var      activityBoard = new ActivityBoard();
            Activity activity      = Activity.FluentNew("First New Activity").AddToBoard(activityBoard);

            Activity.FluentNew("Second New Activity").AddToBoard(activityBoard);
            activityBoard.RemoveActivity(activity);
            Assert.That(activityBoard.UnfilteredActivities.Any(), Is.True);
            Assert.That(activityBoard.UnfilteredActivities.Count(), Is.EqualTo(1));
        }
예제 #18
0
        public void CalendarViewWithEndDateBeforeStartDate()
        {
            var      board = new ActivityBoard();
            DateTime now   = DateTime.Now;

            board.InBox.ViewModes.CalendarView
            .DateRange(now, now.AddDays(-1))
            .Enable();
            Assert.That(() => board.InBox.ViewItems.Any(), Throws.TypeOf <InvalidOperationException>());
        }
예제 #19
0
        public void ClearRemovesAllActivities()
        {
            var activityBoard = new ActivityBoard();

            Activity.FluentNew("First New Activity").AddToBoard(activityBoard);
            Activity.FluentNew("Second New Activity").AddToBoard(activityBoard);
            activityBoard.RemoveAllActivities();
            Assert.That(activityBoard.UnfilteredActivities.Any(), Is.False);
            Assert.That(activityBoard.UnfilteredActivities.Count(), Is.EqualTo(0));
        }
예제 #20
0
        public void RemovingActivityListMovesRelatedActivitiesToInBox()
        {
            var          board            = new ActivityBoard();
            string       activityListName = "Doing";
            ActivityList list             = board.AddNewList(activityListName);
            Activity     activity         = Activity.FluentNew("New Activity").AddToBoard(board);

            board.MoveActivity(activity).ToList(list);
            board.RemoveList(list);
            Assert.That(board.InBox.Activities, Is.Not.Empty);
        }
예제 #21
0
        public void CanCreateGoal()
        {
            var          board    = new ActivityBoard();
            string       goalName = "New Goal";
            ActivityGoal goal     = board.AddNewGoal(goalName);

            Assert.That(goal, Is.Not.Null);
            Assert.That(goal.Name, Is.EqualTo(goalName));
            Assert.That(board.Goals, Is.Not.Null);
            Assert.That(board.Goals.Count(), Is.EqualTo(1));
            Assert.That(board.Goals, Has.Member(goal));
        }
예제 #22
0
        public void GetGoalFromActivity()
        {
            var      board    = new ActivityBoard();
            Activity activity = Activity.FluentNew("An Activity")
                                .AddToBoard(board);
            ActivityGoal newGoal = board.AddNewGoal("New Goal");

            board.MoveActivity(activity).ToGoal(newGoal);
            ActivityGoal foundGoal = board.GetGoalFromActivity(activity);

            Assert.That(foundGoal, Is.EqualTo(newGoal));
        }
예제 #23
0
        public void ActivityAddedToInBoxListByDefault()
        {
            var      board    = new ActivityBoard();
            Activity activity = Activity.FluentNew("An Activity")
                                .ActiveDueDate(new DateTime(2017, 2, 28))
                                .DailyLeadTime(3)
                                .Recurrence(ERecurFromType.FromActiveDueDate, x => x.Daily(14))
                                .AddToBoard(board)
                                .ToActivity;

            Assert.That(board.InBox.Activities, Has.Member(activity));
        }
예제 #24
0
        public void ContainsReturnsFalseWhenActivityGuidDoesntMatch()
        {
            var activityBoard = new ActivityBoard();
            var activity      = new Activity()
            {
                Name = "Activity to not find"
            };

            Activity.FluentNew("First New Activity").AddToBoard(activityBoard);
            Activity.FluentNew("Second New Activity").AddToBoard(activityBoard);
            Assert.That(activityBoard.ContainsActivity(activity), Is.False);
        }
예제 #25
0
        public void CannotMoveActivityNotBelongingToBoard()
        {
            var      board    = new ActivityBoard();
            Activity activity = Activity.FluentNew("An Activity")
                                .ActiveDueDate(new DateTime(2017, 2, 28))
                                .DailyLeadTime(3)
                                .Recurrence(ERecurFromType.FromActiveDueDate, x => x.Daily(14))
                                .ToActivity;
            ActivityList list = board.AddNewList("Doing");

            Assert.That(() => board.MoveActivity(activity).ToList(list), Throws.TypeOf <ArgumentException>());
        }
예제 #26
0
        public void RemovingGoalClearsGoalFromActivities()
        {
            var          board    = new ActivityBoard();
            ActivityGoal goal     = board.AddNewGoal("New Goal");
            Activity     activity = Activity.FluentNew("New Activity")
                                    .AddToBoard(board);

            board.MoveActivity(activity)
            .ToGoal(goal);
            board.RemoveGoal(goal);

            Assert.That(activity.GoalGuid, Is.Null);
        }
예제 #27
0
        public void CanAssignActivityToGoal()
        {
            var          board    = new ActivityBoard();
            ActivityGoal goal     = board.AddNewGoal("New Goal");
            Activity     activity = Activity.FluentNew("New Activity")
                                    .AddToBoard(board);

            board.MoveActivity(activity)
            .ToGoal(goal);

            Assert.That(activity.GoalGuid, Is.Not.Null);
            Assert.That(activity.GoalGuid, Is.EqualTo(goal.Guid));
        }
예제 #28
0
        public void FocusDateViewWithFocusDateBeforeActiveDueDate()
        {
            var      board         = new ActivityBoard();
            DateTime focusDateTime = new DateTime(2017, 2, 28);
            Activity activity      = Activity.FluentNew("New Activity")
                                     .ActiveDueDate(focusDateTime.AddDays(1))
                                     .AddToBoard(board);

            board.InBox.ViewModes.FocusDateView
            .FocusDateTime(focusDateTime)
            .Enable();

            Assert.That(board.InBox.ViewItems, Is.Empty);
        }
예제 #29
0
        public void FocusDateViewWithFocusDateSameAsActiveDueDate()
        {
            var      board         = new ActivityBoard();
            DateTime focusDateTime = new DateTime(2017, 2, 28);
            Activity activity      = Activity.FluentNew("New Activity")
                                     .ActiveDueDate(focusDateTime).AddToBoard(board);

            board.InBox.ViewModes.FocusDateView
            .FocusDateTime(focusDateTime)
            .Enable();

            Assert.That(board.InBox.ViewItems, Is.Not.Empty);
            Assert.That(board.InBox.ViewItems.Count(), Is.EqualTo(1));
        }
예제 #30
0
        public void FocusDateViewWithInactiveActivitiesWithViewDelayNotExpired()
        {
            var      board     = new ActivityBoard();
            Activity activity1 = Activity.FluentNew("New Activity 1").AddToBoard(board);
            Activity activity2 = Activity.FluentNew("New Activity 2").AddToBoard(board);

            activity1.SignalCompleted(new DateTime(2017, 2, 28));
            board.InBox.ViewModes.FocusDateView
            .CompletedFilterDelay(TimeSpan.FromHours(4))
            .Enable();

            Assert.That(board.InBox.ViewItems, Is.Not.Empty);
            Assert.That(board.InBox.ViewItems.Count(), Is.EqualTo(2));
        }