public void Reprioritize_Task_Updates_Grid_Read_Model()
        {
            string taskId      = Fixture.Create <string>();
            string oldPriority = TaskPriority.Low.DisplayName;
            var    projectId   = Fixture.Create <string>();

            using (var session = DocumentStore.OpenSession())
            {
                var taskInGridView = new TaskInGridView(taskId, projectId, Fixture.Create <string>(), Fixture.Create <TaskDeadline>(), oldPriority, false);
                session.Store(taskInGridView);
                session.SaveChanges();
            }

            var eventHandler      = new TaskReprioritizedEventHandler(DocumentStore);
            var newPriority       = TaskPriority.High.DisplayName;
            var taskReprioritized = new TaskReprioritized(taskId, oldPriority, newPriority);

            eventHandler.Handle(taskReprioritized);

            var taskInGridViewQueryHandler = new TaskInGridViewQueryHandler();
            var allTasksInProjectQuery     = new AllTasksInProjectQuery(projectId);
            var tasksInProject             = taskInGridViewQueryHandler.Handle(allTasksInProjectQuery);

            var reprioritizedTask = tasksInProject.First(x => x.Id == taskId);

            Assert.That(reprioritizedTask.Priority, Is.EqualTo(newPriority));
        }
        public void Can_Retrieve_All_Tasks_In_Project()
        {
            string projectId      = Fixture.Create <string>();
            string otherProjectId = Fixture.Create <string>();

            using (var session = DocumentStore.OpenSession())
            {
                string id1             = Fixture.Create <string>();
                var    taskInGridView1 = new TaskInGridView(id1, projectId, Fixture.Create <string>(),
                                                            Fixture.Create <DateTime>().ToShortDateString(), TaskPriority.Lowest.DisplayName, true);

                string id2             = Fixture.Create <string>();
                var    taskInGridView2 = new TaskInGridView(id2, projectId, Fixture.Create <string>(),
                                                            Fixture.Create <DateTime>().ToShortDateString(), TaskPriority.Highest.DisplayName, false);

                string id3 = Fixture.Create <string>();
                var    taskInOtherProject = new TaskInGridView(id3, otherProjectId, Fixture.Create <string>(),
                                                               Fixture.Create <DateTime>().ToShortDateString(), TaskPriority.Highest.DisplayName, false);

                session.Store(taskInGridView1);
                session.Store(taskInGridView2);
                session.Store(taskInOtherProject);
                session.SaveChanges();
            }

            var taskGridViewQueryHandler          = new TaskInGridViewQueryHandler();
            var allTasksInProjectQuery            = new AllTasksInProjectQuery(projectId);
            List <TaskInGridView> tasksInGridView = taskGridViewQueryHandler.Handle(allTasksInProjectQuery);

            Assert.That(tasksInGridView.Count, Is.EqualTo(2));
            Assert.That(tasksInGridView.TrueForAll(x => x.ProjectId == projectId));
        }
Example #3
0
        private void AddTaskToGridView(string projectId, string title, string priority, DateTime?deadline)
        {
            var    taskId           = TaskId.Create(new ProjectId(projectId), title);
            string possibleDeadline = deadline.HasValue ? deadline.Value.ToShortDateString() : null;
            var    newTask          = new TaskInGridView(taskId, projectId, title, possibleDeadline, priority, false);

            AddTaskToGridView(newTask);
        }
Example #4
0
        private void InsertTaskRightAboveTasksThatAreDone(TaskInGridView task)
        {
            var firstDoneTask = _allTasksInProject.FirstOrDefault(x => x.Id != task.Id && x.IsDone);

            if (firstDoneTask == null)
            {
                _allTasksInProject.Add(task);
            }
            else
            {
                int indexOfFirstDoneTask = _allTasksInProject.IndexOf(firstDoneTask);
                _allTasksInProject.Insert(indexOfFirstDoneTask, task);
            }
        }
Example #5
0
        private void AddTaskToGridView(TaskInGridView newTask)
        {
            if (!_allTasks.Contains(newTask))
            {
                _allTasks.Add(newTask);
            }

            InsertTaskRightAboveTasksThatAreDone(newTask);

            int priorityColumn = taskGrid.Columns["Priority"].Index;
            int indexOfNewRow  = _allTasksInProject.IndexOf(newTask);
            var newRow         = taskGrid.Rows[indexOfNewRow];

            newRow.Cells[priorityColumn].Value = newTask.Priority;
            newRow.Selected      = true;
            taskGrid.CurrentCell = newRow.Cells[0];
        }
Example #6
0
        private void taskGrid_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
        {
            var selectedRow = taskGrid.CurrentRow;

            if (selectedRow == null)
            {
                return;
            }

            if (_gridUtils.TouchesColumn("Done", e.ColumnIndex, e.RowIndex))
            {
                bool isTaskDone;
                if (Boolean.TryParse(selectedRow.Cells["Done"].Value.ToString(), out isTaskDone))
                {
                    var            task           = (TaskInGridView)(taskGrid.SelectedCells[0].OwningRow.DataBoundItem);
                    TaskInGridView taskInGridView = _allTasks.First(x => x.Id == task.Id);
                    if (isTaskDone)
                    {
                        var markTaskAsDone = new MarkTaskAsDone(task.Id);
                        _commandDispatcher.Send(markTaskAsDone);
                        // Fake in UI to increase user experience
                        taskInGridView.IsDone = true;

                        _allTasksInProject.Remove(taskInGridView);
                        AddTaskToGridView(taskInGridView);
                        int indexOfAddedTask = _allTasksInProject.IndexOf(taskInGridView);
                        _gridUtils.FadeOut(indexOfAddedTask);
                    }
                    else
                    {
                        var reopenTask = new ReopenTask(task.Id);
                        _commandDispatcher.Send(reopenTask);
                        // Fake in UI to increase user experience
                        taskInGridView.IsDone = false;

                        _allTasksInProject.Remove(taskInGridView);
                        AddTaskToGridView(taskInGridView);
                        int indexOfAddedTask = _allTasksInProject.IndexOf(taskInGridView);
                        _gridUtils.FadeIn(indexOfAddedTask);
                    }
                }
            }
        }
Example #7
0
        public void Note_Is_Retrieved_Together_With_Task()
        {
            string projectId = Fixture.Create <string>();
            string note      = Fixture.Create <string>();

            using (var session = DocumentStore.OpenSession())
            {
                string id             = Fixture.Create <string>();
                var    taskInGridView = new TaskInGridView(id, projectId, Fixture.Create <string>(),
                                                           Fixture.Create <DateTime>().ToShortDateString(), TaskPriority.Lowest.DisplayName, true, note);

                session.Store(taskInGridView);
                session.SaveChanges();
            }

            var taskGridViewQueryHandler          = new TaskInGridViewQueryHandler();
            var allTasksInProjectQuery            = new AllTasksInProjectQuery(projectId);
            List <TaskInGridView> tasksInGridView = taskGridViewQueryHandler.Handle(allTasksInProjectQuery);

            Assert.That(tasksInGridView[0].Note, Is.EqualTo(note));
        }
Example #8
0
        public void Task_With_Same_Title_Does_Already_Exist_In_Project()
        {
            var fixture   = new Fixture();
            var title     = fixture.Create <Title>();
            var projectId = fixture.Create <ProjectId>();

            using (var session = DocumentStore.OpenSession())
            {
                string id             = fixture.Create <string>();
                var    taskInGridView = new TaskInGridView(id, projectId, title,
                                                           fixture.Create <DateTime>().ToShortDateString(), ProjectPriority.Low.DisplayName, true);
                session.Store(taskInGridView);
                session.SaveChanges();
            }

            var  doesTaskWithTitleAlreadyExistUnderSameProjectQuery = new DoesTaskWithTitleAlreadyExistUnderSameProjectQuery(title, projectId);
            var  taskQueryHandler = new TaskQueryService();
            bool doesTaskExist    = taskQueryHandler.Handle(doesTaskWithTitleAlreadyExistUnderSameProjectQuery);

            Assert.That(doesTaskExist, Is.True);
        }
Example #9
0
        public void When_Task_Is_Done_The_Grid_Read_Model_Is_Updated()
        {
            var taskId    = Fixture.Create <string>();
            var projectId = Fixture.Create <string>();

            using (var session = DocumentStore.OpenSession())
            {
                var taskInGridView = new TaskInGridView(taskId, projectId,
                                                        Fixture.Create <string>(), Fixture.Create <TaskDeadline>(), TaskPriority.Low.DisplayName, false);
                session.Store(taskInGridView);
                session.SaveChanges();
            }

            var eventHandler = new TaskDoneEventHandler(DocumentStore);
            var taskDone     = new TaskDone(taskId, projectId);

            eventHandler.Handle(taskDone);

            var allTasksInProjectQuery     = new AllTasksInProjectQuery(projectId);
            var taskInGridViewQueryHandler = new TaskInGridViewQueryHandler();
            var task = taskInGridViewQueryHandler.Handle(allTasksInProjectQuery)[0];

            Assert.That(task.IsDone, Is.True);
        }
Example #10
0
        public void Can_Insert_Into_RavenDb()
        {
            var            fixture       = new Fixture();
            var            title         = fixture.Create <string>();
            IDocumentStore documentStore = new RavenDbStore().Instance;
            string         id            = fixture.Create <string>();

            using (var session = documentStore.OpenSession())
            {
                string projectId      = fixture.Create <string>();
                var    taskInGridView = new TaskInGridView(id, projectId, title,
                                                           fixture.Create <DateTime>().ToShortDateString(), ProjectPriority.Low.DisplayName, true);
                session.Store(taskInGridView);
                session.SaveChanges();
            }

            using (var session = documentStore.OpenSession())
            {
                var taskInGridView = session.Load <TaskInGridView>(id);
                // WaitForUserToContinueTheTest(documentStore, true, 8079);
                Assert.That(taskInGridView, Is.Not.Null);
            }
            documentStore.Dispose();
        }