コード例 #1
0
        public async Task GetAll_AllParameters()
        {
            // Arrange
            var expectedOffset       = 5;
            var expectedCount        = 17;
            var expectedFilter       = "My filter";
            var expectedIncludeTasks = true;
            var todoList             = new TodoListItem
            {
                Id          = Guid.NewGuid(),
                Name        = "Item #1",
                Description = "Item #1 description"
            };

            _listService.Setup(s => s.GetTodoListsAsync(It.IsAny <GetTodoListQuery>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new[] { todoList }.AsEnumerable()));

            // Act
            var response = await _testController.GetAll(expectedFilter, expectedOffset, expectedCount, expectedIncludeTasks);

            // Assert
            var actionResult = Assert.IsType <OkObjectResult>(response.Result);
            var items        = Assert.IsAssignableFrom <IEnumerable <TodoListItem> >(actionResult.Value);

            Assert.Single(items);
            Assert.Equal(todoList, items.First());

            _listService.Verify(s => s.GetTodoListsAsync(It.Is <GetTodoListQuery>(q =>
                                                                                  q.Filter == expectedFilter &&
                                                                                  q.Offset == expectedOffset &&
                                                                                  q.Count == expectedCount &&
                                                                                  q.IncludeTasks == expectedIncludeTasks),
                                                         _testController.HttpContext.RequestAborted));
        }
コード例 #2
0
        public async Task AddTodoListAsync(TodoListItem list, CancellationToken cancelationToken)
        {
            var dseList = _mapper.Map <Dse.TodoListItem>(list);

            await _storageContext.TodoLists.Add(dseList, cancelationToken);

            try
            {
                var dseTasks = _mapper.Map <List <Dse.TodoListTask> >(list.Tasks);
                dseTasks.ForEach(t => t.ListId = list.Id);

                await _storageContext.Tasks.AddRange(dseTasks, cancelationToken);
            }
            catch (ItemExistsException ex)
            {
                try
                {
                    await _storageContext.TodoLists.Remove(list.Id, cancelationToken);

                    throw;
                }
                catch (ItemExistsException)
                {
                    throw;
                }
                catch (Exception removeEx)
                {
                    throw new DataCorruptedException($"List with id '{list.Id}' was created, but tasl were not created. Because task with id '{ex.Id}' already exists.", removeEx);
                }
            }
        }
コード例 #3
0
 public IActionResult CreateUpdate(TodoListViewModel viewModel)
 {
     if (ModelState.IsValid)
     {
         using (var db = DbHelper.GetConnection())
         {
             if (viewModel.EditableItem.Id <= 0)
             {
                 viewModel.EditableItem.AddDate = DateTime.Now;
                 db.Insert <TodoListItem>(viewModel.EditableItem);
             }
             else
             {
                 TodoListItem dbItem = db.Get <TodoListItem>(viewModel.EditableItem.Id);
                 var          result = TryUpdateModelAsync <TodoListItem>(dbItem, "EditableItem");
                 db.Update <TodoListItem>(dbItem);
             }
         }
         return(RedirectToAction("Index"));
     }
     else
     {
         return(View("Index", new TodoListViewModel()));
     }
 }
コード例 #4
0
        public async Task <ActionResult <TodoListItem> > Put(TodoListItem todoListItem)
        {
            try
            {
                var u = await _context.Users.SingleOrDefaultAsync(u => u.Email == TokenUtil.GetUserEmail(Request.Headers["Authorization"], _jwtSettings));

                if (u == null)
                {
                    return(Unauthorized());
                }

                TodoListItem tdi = await _context.TodoListItems.FirstOrDefaultAsync(t => t.Id == todoListItem.Id && t.TodoList.User == u);

                if (tdi == null)
                {
                    return(NotFound());
                }

                tdi.Name        = todoListItem.Name;
                tdi.Description = todoListItem.Description;
                tdi.Completed   = todoListItem.Completed;
                await _context.SaveChangesAsync();

                return(tdi);
            }
            catch
            {
                return(BadRequest());
            }
        }
コード例 #5
0
ファイル: TodoListItemTests.cs プロジェクト: s30n4/TodoList
 public void CreateNew_WhenNameIsNull_IsBroken()
 {
     AssertBrokenRule <NameCanNotBeNullOrEmptyRule>(() =>
     {
         TodoListItem.CreateNew(null, string.Empty);
     });
 }
コード例 #6
0
        public void AddTodoItem(string title, string description, DateTime date)
        {
            TodoListItem newItem = new TodoListItem(title, description, date);

            this.allItems.Add(newItem);
            newItem.change_property();
        }
コード例 #7
0
        public async Task Get_ValidId()
        {
            // Arrange
            var id       = Guid.NewGuid();
            var todoList = new TodoListItem
            {
                Id          = id,
                Name        = "Item #1",
                Description = "Item #1 description"
            };

            _listService.Setup(s => s.GetTodoListAsync(It.IsAny <Guid>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(todoList));

            // Act && Assert
            var response = await _testController.GetById(todoList.Id);

            // Assert
            var actionResult = Assert.IsType <OkObjectResult>(response.Result);
            var item         = Assert.IsAssignableFrom <TodoListItem>(actionResult.Value);

            Assert.Equal(todoList, item);

            _listService.Verify(s => s.GetTodoListAsync(It.Is <Guid>(guid => guid == id), _testController.HttpContext.RequestAborted));
        }
コード例 #8
0
        /// <summary>
        /// Executes the command
        /// </summary>
        public async Task Execute(int id)
        {
            // Check access rights: User
            await accessRightChecker.CheckUserAuthToken();

            // gets the current user
            User currentUser = await userRepository.Where(e => e.Email == userInfoProvider.UserName).AsNoTracking().FirstOrDefaultAsync();

            if (currentUser is null)
            {
                throw new BusinessException("User does not exist");
            }

            // gets the todo-list item to remove
            TodoListItem removingTodoListItem = await todoListItemRepository.GetById(id).Include(e => e.TodoList.User).FirstOrDefaultAsync();

            if (removingTodoListItem is null)
            {
                throw new BusinessException("Removing todo-list item does not exist");
            }
            if (!currentUser.IsAdmin && removingTodoListItem.TodoList.UserId != currentUser.Id)
            {
                throw new BusinessException("User cannot delete the todo-list item not belonging to his todo-list");
            }

            // removes the todo-list item
            await todoListItemRepository.RemoveAsync(removingTodoListItem.Id);

            // saves made changes
            await changesSaver.SaveChangesAsync();
        }
        public void SetsIsDoneTrue()
        {
            var todoListItem = new TodoListItem();

            todoListItem.ChangeStatus(true);
            Assert.True(todoListItem.IsDone);
        }
コード例 #10
0
            void When(AddedNewItemToTodoList @event)
            {
                var item = new TodoListItem(Apply);

                item.Play(@event);
                _items.Add(item);
            }
コード例 #11
0
 /// <summary>
 /// Initializes a new <see cref="TodoListItemViewModel"/> instance.
 /// </summary>
 /// <param name="todoListItem">The model from which the view model is to be generated.</param>
 public TodoListItemViewModel(TodoListItem todoListItem)
 {
     this.Id                = todoListItem.Id;
     this.Title.Value       = todoListItem.Title;
     this.Description.Value = todoListItem.Description;
     this.IsFinished.Value  = todoListItem.IsFinished;
 }
コード例 #12
0
 private void Save(object obj)
 {
     Helper.InvokeAction(() => {
         DateTime now = Helper.DateParse(this.ToDoListItem.Deadline);
         int id       = this.ToDoListItem.Id;
         var temp     = service.FirstOrDefault(x => x.Id == id);
         if (temp == null)
         {
             temp = new TodoListItem();
         }
         temp.Name        = this.ToDoListItem.Name;
         temp.Deadline    = now;
         temp.Status      = this.ToDoListItem.Status;
         temp.Description = this.ToDoListItem.Description;
         temp.ToDoListId  = _todoList.Id;
         if (id == 0)
         {
             temp.CreateDate = DateTime.Now;
             service.Add(temp);
         }
         service.SaveChanges();
         ToDoListItems.Clear();
         ToDoListItem = new ToDoListItemModel();
         ToDoListItems.AddRange(GetAll(_todoList.Id));
     });
 }
コード例 #13
0
ファイル: TodoListItemTests.cs プロジェクト: s30n4/TodoList
 public void CreateNew_WhenNameDescriptionLengthCanNotBeMoreThan500CharacterRule_IsBroken()
 {
     AssertBrokenRule <DescriptionLengthCanNotBeMoreThan500CharacterRule>(() =>
     {
         TodoListItem.CreateNew("Test", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ornare nec elit et pretium. Cras aliquet sed metus et facilisis. Suspendisse augue nisi, efficitur at rutrum eget, dapibus et quam. Nullam magna sem, rhoncus eget lorem eget, varius pulvinar quam. Nulla hendrerit a orci nec mattis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam non erat in magna lacinia dapibus. Sed at dignissim magna, eget interdum mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin condimentum velit ac elit vehicula accumsan. Vestibulum at urna finibus, blandit sem a, lobortis quam. Morbi sodales fringilla est elementum dignissim. Duis accumsan fringilla risus non rhoncus. Integer et congue odio. Sed tempus fermentum mi.");
     });
 }
コード例 #14
0
            void When(AddedNewItemToTodoList @event)
            {
                var item = new TodoListItem(ApplyChange);

                item.Route(@event);
                _items.Add(item);
            }
コード例 #15
0
        public async Task <ActionResult <TodoListItem> > Delete(int id)
        {
            try
            {
                var u = await _context.Users.SingleOrDefaultAsync(u => u.Email == TokenUtil.GetUserEmail(Request.Headers["Authorization"], _jwtSettings));

                if (u == null)
                {
                    return(Unauthorized());
                }

                TodoListItem tdi = await _context.TodoListItems.FirstOrDefaultAsync(tdi => tdi.Id == id);

                if (tdi != null)
                {
                    var t = _context.Remove(tdi);
                    await _context.SaveChangesAsync();

                    return(t.Entity);
                }

                return(NotFound());
            }
            catch
            {
                return(BadRequest());
            }
        }
コード例 #16
0
        public async Task <IHttpActionResult> PostAsync([FromBody] TodoListItem newItem)
        {
            var storedItem = await _repository.AddNewItemAsync(newItem);

            var location = _urlLocator.GetListItemUrl(storedItem.Id);

            return(Created(location, storedItem));
        }
コード例 #17
0
        public ActionResult DeleteConfirmed(int id)
        {
            TodoListItem todoListItem = db.TodoListItems.Find(id);

            db.TodoListItems.Remove(todoListItem);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #18
0
        public void Remove([FromRoute] string token, [FromBody] TodoListItem item)
        {
            var foundList = TodoContext.ListItems.First(t => t.TodoList.Token == token);

            TodoContext.ListItems.Remove(foundList);

            TodoContext.SaveChanges();
        }
コード例 #19
0
        public static TodoListItem CreateTodoListItemTestData(bool hasName = true, bool hasDescription = true, bool hasDueDate = true, string postfix = "1")
        {
            var name        = hasName ? $"Test TodoListItem {postfix}" : null;
            var description = hasDescription ? $"Test Description TodoListItem {postfix}" : null;
            var dueDate     = hasDueDate ? DateTime.Now : (DateTime?)null;

            return(TodoListItem.CreateNew(name, description, dueDate));
        }
コード例 #20
0
 // POST: api/TodoList
 /// <summary>
 /// Create a item
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 public TodoListItem Post([FromBody] TodoListItem item)
 {
     if (_db.Create <TodoListItem>(item))
     {
         return(item);
     }
     return(null);
 }
コード例 #21
0
        public async Task AddItem_AssignsIdToItem()
        {
            var item = new TodoListItem();

            var newItem = await _repository.AddItemAsync(item);

            Assert.IsNotNull(newItem.Id);
        }
コード例 #22
0
        public TodoListItem Add(TodoListItem item)
        {
            //Filling Defaults
            item.Id          = Guid.NewGuid();
            item.Status      = false;
            item.DateCreated = DateTimeOffset.Now;

            return(_todoRepository.Add(item));
        }
コード例 #23
0
        // DELETE: api/TodoList/5
        /// <summary>
        /// Delete item by id
        /// </summary>
        /// <param name="id"></param>
        public void Delete(string id)
        {
            TodoListItem item = _db.Read <TodoListItem>().SingleOrDefault(x => x.id == id);

            if (item != null)
            {
                _db.Delete <TodoListItem>(item);
            }
        }
コード例 #24
0
        public void UpdateItem_ThrowsExceptionIfItemCannotBeFound()
        {
            var item = new TodoListItem
            {
                Id = new Guid("99999999999999999999999999999999")
            };

            Assert.Throws <InvalidOperationException>(() => _repository.UpdateItemAsync(item));
        }
コード例 #25
0
        public TodoListItem Add(TodoListItem item)
        {
            if (item == null || item.Id != Guid.Empty)
            {
                items.Add(item);

                return(item);
            }
            return(null);
        }
コード例 #26
0
 public static TodoListItemDto ToDto(this TodoListItem dbObject)
 {
     return(new TodoListItemDto()
     {
         Done = dbObject.Done,
         Color = dbObject.Color,
         Name = dbObject.Name,
         Id = dbObject.Id
     });
 }
コード例 #27
0
        public Task <TodoListItem> AddItemAsync(TodoListItem item)
        {
            item.Id          = Guid.NewGuid();
            item.IsCompleted = false;
            item.IsDeleted   = false;

            _items.Add(item);

            return(Task.FromResult(item));
        }
コード例 #28
0
        public void Delete(Guid id)
        {
            TodoListItem itemInList = todoListItems.FirstOrDefault(x => x.Id == id);

            if (itemInList == null)
            {
                throw new KeyNotFoundException();
            }

            todoListItems.Remove(itemInList);
        }
コード例 #29
0
        public void Update(Guid id, string item)
        {
            TodoListItem itemInList = todoListItems.FirstOrDefault(x => x.Id == id);

            if (itemInList == null)
            {
                throw new KeyNotFoundException();
            }

            todoListItems[todoListItems.IndexOf(itemInList)].Item = item;
        }
コード例 #30
0
        /// <summary>
        /// Adds a new item to the todo list.
        /// </summary>
        /// <param name="title">The title of the new todo list item.</param>
        /// <param name="description">The description of the new todo list item.</param>
        /// <returns>Returns the created todo list item.</returns>
        public TodoListItem CreateTodoListItem(string title, string description)
        {
            TodoListItem todoListItem = new TodoListItem
            {
                Title       = title,
                Description = description
            };

            TodoListItemsRepository.todoListItems.Add(todoListItem);
            return(todoListItem);
        }
コード例 #31
0
        static void Main()
        {
            #if DI
            var repository = WithDI.CreateTodoListRepository();
            #else
            var repository = WithoutDI.CreateTodoListRepository();
            #endif
            var createDIandIoCdemo = new TodoListItem { Description = "Create DI & IoC Demo", DoBy = DateTime.Now };
            var learnRuby = new TodoListItem { Description = "Learn Ruby", DoBy = new DateTime(2012, 1, 1) };

            repository.Add(createDIandIoCdemo);
            repository.Add(learnRuby);

            var allItems = repository.GetAll().ToList();

            allItems.ForEach(item => Console.WriteLine("{0} by {1}", item.Description, item.DoBy.ToShortDateString()));

            Console.ReadKey();
        }