Beispiel #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));
        }
        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);
                }
            }
        }
Beispiel #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()));
     }
 }
Beispiel #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());
            }
        }
Beispiel #5
0
 public void CreateNew_WhenNameIsNull_IsBroken()
 {
     AssertBrokenRule <NameCanNotBeNullOrEmptyRule>(() =>
     {
         TodoListItem.CreateNew(null, string.Empty);
     });
 }
        public void AddTodoItem(string title, string description, DateTime date)
        {
            TodoListItem newItem = new TodoListItem(title, description, date);

            this.allItems.Add(newItem);
            newItem.change_property();
        }
Beispiel #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));
        }
Beispiel #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);
        }
Beispiel #10
0
            void When(AddedNewItemToTodoList @event)
            {
                var item = new TodoListItem(Apply);

                item.Play(@event);
                _items.Add(item);
            }
Beispiel #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;
 }
 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));
     });
 }
Beispiel #13
0
 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.");
     });
 }
Beispiel #14
0
            void When(AddedNewItemToTodoList @event)
            {
                var item = new TodoListItem(ApplyChange);

                item.Route(@event);
                _items.Add(item);
            }
Beispiel #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());
            }
        }
        public async Task <IHttpActionResult> PostAsync([FromBody] TodoListItem newItem)
        {
            var storedItem = await _repository.AddNewItemAsync(newItem);

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

            return(Created(location, storedItem));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            TodoListItem todoListItem = db.TodoListItems.Find(id);

            db.TodoListItems.Remove(todoListItem);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        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();
        }
Beispiel #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));
        }
Beispiel #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);
 }
        public async Task AddItem_AssignsIdToItem()
        {
            var item = new TodoListItem();

            var newItem = await _repository.AddItemAsync(item);

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

            return(_todoRepository.Add(item));
        }
Beispiel #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);
            }
        }
        public void UpdateItem_ThrowsExceptionIfItemCannotBeFound()
        {
            var item = new TodoListItem
            {
                Id = new Guid("99999999999999999999999999999999")
            };

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

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

            _items.Add(item);

            return(Task.FromResult(item));
        }
        public void Delete(Guid id)
        {
            TodoListItem itemInList = todoListItems.FirstOrDefault(x => x.Id == id);

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

            todoListItems.Remove(itemInList);
        }
        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;
        }
Beispiel #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);
        }
        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();
        }