public IActionResult DetailListPartial(int todoListId, bool doneItemsHidden, bool descendingSortOrder)
        {
            var todoList  = dbContext.SingleTodoList(todoListId);
            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList, descendingSortOrder, doneItemsHidden);

            return(PartialView("_DetailListPartial", viewmodel));
        }
        public IActionResult Detail(int todoListId, bool orderByRank = false)
        {
            var todoList  = dbContext.SingleTodoList(todoListId);
            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList, orderByRank);

            return(View(viewmodel));
        }
示例#3
0
        public IActionResult Detail(int todoListId, string sortOrder)
        {
            var todoList  = dbContext.SingleTodoList(todoListId);
            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList, sortOrder);

            return(View(viewmodel));
        }
        public IActionResult Detail(int todoListId, bool hideDoneItems)
        {
            var todoList  = dbContext.SingleTodoList(todoListId);
            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList, hideDoneItems);

            return(View(viewmodel));
        }
        public IActionResult Detail(int todoListId)
        {
            var userId    = User.Id();
            var todoList  = dbContext.SingleTodoList(todoListId);
            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList, userId);

            return(View(viewmodel));
        }
示例#6
0
        public async Task <TodoListDetailViewmodel> GetTodoListDetailAsync(int todoListId, bool hideDone)
        {
            var todoList = await _dbContext.TodoLists
                           .Include(tl => tl.Owner)
                           .SingleAsync(tl => tl.TodoListId == todoListId);

            return(TodoListDetailViewmodelFactory.Create(todoList));
        }
        public void Create_TodoListMappedByImportance()
        {
            var viewmodel = TodoListDetailViewmodelFactory.Create(srcTodoItem);
            var items     = viewmodel.Items.ToList();

            Assert.Equal(Importance.High, items[0].Importance);
            Assert.Equal(Importance.Medium, items[1].Importance);
            Assert.Equal(Importance.Low, items[2].Importance);
        }
示例#8
0
        public void ShouldOrderByRankIfOrderByRankIsTrue()
        {
            var todoListViewModel = TodoListDetailViewmodelFactory.Create(todoList, true);
            var items             = todoListViewModel.Items.ToList();

            Assert.Equal(1, items[0].Rank);
            Assert.Equal(2, items[1].Rank);
            Assert.Null(items[2].Rank);
        }
示例#9
0
        public void ShouldOrderByImportanceIfOrderByRankIsFalse()
        {
            var todoListViewModel = TodoListDetailViewmodelFactory.Create(todoList, false);
            var items             = todoListViewModel.Items.ToList();

            Assert.Equal(Importance.High, items[0].Importance);
            Assert.Equal(Importance.Medium, items[1].Importance);
            Assert.Equal(Importance.Low, items[2].Importance);
        }
示例#10
0
        public IActionResult Detail(int todoListId, bool showCompleted = true, string sortOrder = "importance")
        {
            ViewData["ShowCompleted"] = showCompleted;
            ViewData["SortOrder"]     = sortOrder;
            var todoList = dbContext.SingleTodoList(todoListId);

            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList, showCompleted, sortOrder);

            return(View(viewmodel));
        }
示例#11
0
        public AndHideCompletedItemsFalse()
        {
            var user = new IdentityUser("*****@*****.**");

            user.Email = user.UserName;
            var todoList = new TestTodoListBuilder(user, "shopping list")
                           .WithItem("Completed Item", Importance.Medium, completed: true)
                           .WithItem("Uncompleted Item", Importance.Medium)
                           .Build();

            resultViewModel = TodoListDetailViewmodelFactory.Create(todoList, false, TodoListSortFields.Default);
        }
示例#12
0
        public WhenTodoListDetailIsCreated()
        {
            srcTodoList = new TestTodoListBuilder(new IdentityUser("*****@*****.**"), "shopping")
                          .WithItem("bread", Importance.High)
                          .WithItem("milk", Importance.High)
                          .WithItem("cheese", Importance.Medium)
                          .WithItem("lettuce", Importance.Low)
                          .WithItem("tomato", Importance.Medium)
                          .Build();

            resultFields = TodoListDetailViewmodelFactory.Create(srcTodoList, false, false);
        }
        public void Create_OrdersByImportance_WhenOrderByRankIsFalse()
        {
            // Act
            var viewmodel = TodoListDetailViewmodelFactory.Create(_todoList, false);

            // Assert
            var items = viewmodel.Items.ToList();

            Assert.Equal(Importance.High, items[0].Importance);
            Assert.Equal(Importance.Medium, items[1].Importance);
            Assert.Equal(Importance.Low, items[2].Importance);
        }
        public AndOrderByFieldRank()
        {
            var user = new IdentityUser("*****@*****.**");

            user.Email = user.UserName;
            var todoList = new TestTodoListBuilder(user, "shopping list")
                           .WithItem("1", Importance.Low, rank: 3)
                           .WithItem("2", Importance.High, rank: 2)
                           .WithItem("3", Importance.Medium, rank: 1)
                           .Build();

            resultViewModel = TodoListDetailViewmodelFactory.Create(todoList, true, TodoListSortFields.Rank);
        }
        public void Create_OrdersByRank_WhenOrderByRankIsTrue()
        {
            // Act
            var viewmodel = TodoListDetailViewmodelFactory.Create(_todoList, true);

            // Assert
            var items = viewmodel.Items.ToList();

            Assert.Equal(1, items[0].Rank);
            Assert.Equal(2, items[1].Rank);
            Assert.Null(items[2].Rank);
            // I'm using Xunit's Assert to do the assertions because the other unit tests do the same
            // but I also quite like using the FluentAssertions nuget package https://fluentassertions.com/introduction
        }
示例#16
0
        public WhenTodoListDetailHidesDone()
        {
            srcTodoList = new TestTodoListBuilder(new IdentityUser("*****@*****.**"), "shopping")
                          .WithItem("bread", Importance.High)
                          .WithItem("milk", Importance.High)
                          .WithItem("cheese", Importance.Medium)
                          .WithItem("lettuce", Importance.Low)
                          .WithItem("tomato", Importance.Medium)
                          .Build();

            srcTodoList.Items.FirstOrDefault().IsDone = true;

            resultFields = TodoListDetailViewmodelFactory.Create(srcTodoList, true, false);
        }
示例#17
0
        public async Task <IActionResult> Detail(int todoListId, bool hideCompletedItems, TodoListSortFields orderByField)
        {
            var todoList  = dbContext.SingleTodoList(todoListId);
            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList, hideCompletedItems, orderByField);

            var userNames = viewmodel.Items
                            .Select(i => i.ResponsibleParty.Email)
                            .Distinct()
                            .ToDictionary(i => i, i => gravatarService.GetUserFullName(i));

            foreach (var todoItem in viewmodel.Items)
            {
                todoItem.ResponsibleParty.FullName = await userNames[todoItem.ResponsibleParty.Email];
            }

            return(View(viewmodel));
        }
        public WhenTodoListDetailOrderedByRank()
        {
            srcTodoList = new TestTodoListBuilder(new IdentityUser("*****@*****.**"), "shopping")
                          .WithItem("bread", Importance.High)
                          .WithItem("milk", Importance.High)
                          .WithItem("cheese", Importance.Medium)
                          .WithItem("lettuce", Importance.Low)
                          .WithItem("tomato", Importance.Medium)
                          .Build();

            srcTodoList.Items.ElementAt(0).Rank = 5;
            srcTodoList.Items.ElementAt(1).Rank = 4;
            srcTodoList.Items.ElementAt(2).Rank = 3;
            srcTodoList.Items.ElementAt(3).Rank = 2;
            srcTodoList.Items.ElementAt(4).Rank = 1;


            resultFields = TodoListDetailViewmodelFactory.Create(srcTodoList, hideDone: false, orderByRank: true);
        }
示例#19
0
        public IActionResult Detail(int todoListId, bool hideDoneItems, string sortOrder)
        {
            var todoList = dbContext.SingleTodoList(todoListId);

            switch (sortOrder)
            {
            case "rank_asc":
                todoList.Items = todoList.Items.OrderBy(item => item.Rank).ToList();
                break;

            default:
                todoList.Items = todoList.Items.OrderBy(item => item.Importance).ToList();
                break;
            }

            if (hideDoneItems)
            {
                todoList.Items = todoList.Items.Where(item => !item.IsDone).ToList();
            }

            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList);

            return(View(viewmodel));
        }
示例#20
0
        public void ShouldNotHaveAlreadySelectedSortOrder(string sortOrder)
        {
            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList, sortOrder);

            Assert.All(viewmodel.SortOrders, so => Assert.True(so != sortOrder));
        }
示例#21
0
        public void ShouldHaveItemsSorted(string sortOrder, ICollection <TodoItemSummaryViewmodel> sortedItems)
        {
            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList, sortOrder);

            Assert.Equal(sortedItems.First().Title, viewmodel.Items.First().Title);
        }
        private TodoListDetailViewmodel CreateDetailsViewModel(int todoListId, bool?hideCompletedItems = null, string orderBy = null)
        {
            var todoList = dbContext.SingleTodoList(todoListId);

            return(TodoListDetailViewmodelFactory.Create(todoList, hideCompletedItems, orderBy));
        }