public void GetItemsReturnsListOfValidToDoItemViewModel() { var toDoItemEntityList = new List <EntityModel.ToDoItem> { new EntityModel.ToDoItem { ItemId = 1, Title = "Item 1", DueDate = DateTime.Now, IsCompleted = false }, new EntityModel.ToDoItem { ItemId = 2, Title = "Item 2", DueDate = DateTime.Now, IsCompleted = true } }; var mockToDoDbSet = GetMockedDbSet(toDoItemEntityList); var mockContext = new Mock <IToDoContext>(); mockContext.Setup(context => context.ToDoItems).Returns(mockToDoDbSet); var repository = new ToDoItemsRepository(mockContext.Object); var result = repository.GetItems().Result; Assert.IsNotNull(result); Assert.AreEqual(toDoItemEntityList[0].Title, result.FirstOrDefault()?.Title); Assert.AreEqual(toDoItemEntityList[0].ItemId, result.FirstOrDefault()?.ItemId); Assert.AreEqual(toDoItemEntityList[0].DueDate, result.FirstOrDefault()?.DueDate); }
public void UpdateItemSavesItemAndReturnsValidModel() { var itemToUpdate = new ToDoItem { ItemId = 1, Title = "Updated Item", DueDate = DateTime.Now, IsDone = false }; var existingEntityItem = new EntityModel.ToDoItem { ItemId = itemToUpdate.ItemId, Title = "Old Title", DueDate = itemToUpdate.DueDate, IsCompleted = itemToUpdate.IsDone }; var mockToDoDbSet = GetMockedDbSet(new [] { existingEntityItem }); var mockContext = new Mock <IToDoContext>(); mockContext.Setup(context => context.ToDoItems).Returns(mockToDoDbSet); var repository = new ToDoItemsRepository(mockContext.Object); var result = repository.UpdateItem(itemToUpdate).Result; mockContext.Verify(context => context.SaveChangesAsync(), Times.Once); Assert.AreEqual(itemToUpdate.Title, result.Title); Assert.AreEqual(itemToUpdate.DueDate, result.DueDate); Assert.AreEqual(itemToUpdate.IsDone, result.IsDone); }
public virtual async Task <ToDoItemDto> UpdateToDoItem(Guid key, ToDoItemDto toDoItem, CancellationToken cancellationToken) { if (toDoItem == null) { throw new BadRequestException("ToDoItemCouldNotBeNull"); } Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId()); ToDoItem toDoItemToBeModified = await ToDoItemsRepository.GetByIdAsync(cancellationToken, key); if (toDoItemToBeModified == null) { throw new ResourceNotFoundException("ToDoItemCouldNotBeFound"); } ToDoItemOptions toDoItemOptionsToBeModified = await ToDoItemOptionsListRepository.GetAll() .FirstAsync(tdio => tdio.UserId == userId && tdio.ToDoItemId == key, cancellationToken); if (toDoItemOptionsToBeModified == null) { throw new ResourceNotFoundException("ToDoItemCouldNotBeFound"); } if (toDoItem.ToDoGroupId != toDoItemToBeModified.ToDoGroupId) { throw new BadRequestException("ChangingToDoGroupIdIsNotSupportedAtTheMoment"); } toDoItemToBeModified.Title = toDoItem.Title; toDoItemToBeModified.IsImportant = toDoItem.IsImportant; toDoItemToBeModified.Notes = toDoItem.Notes; toDoItemToBeModified.DueDate = toDoItem.DueDate; toDoItemToBeModified.ModifiedOn = DateTimeProvider.GetCurrentUtcDateTime(); if (toDoItemToBeModified.IsCompleted == false && toDoItem.IsCompleted == true) { toDoItemToBeModified.IsCompleted = true; toDoItemToBeModified.CompletedById = userId; } else if (toDoItemToBeModified.IsCompleted == true && toDoItem.IsCompleted == false) { toDoItemToBeModified.IsCompleted = false; toDoItemToBeModified.CompletedById = null; } toDoItemOptionsToBeModified.RemindOn = toDoItem.RemindOn; toDoItemOptionsToBeModified.ShowInMyDayOn = toDoItem.ShowInMyDay == true ? (DateTimeOffset?)DateTimeProvider.GetCurrentUtcDateTime() : null; await ToDoItemsRepository.UpdateAsync(toDoItemToBeModified, cancellationToken); await ToDoItemOptionsListRepository.UpdateAsync(toDoItemOptionsToBeModified, cancellationToken); return(await GetMyToDoItems() .FirstAsync(tdi => tdi.Id == key, cancellationToken)); }
public virtual async Task DeleteToDoItem(Guid key, CancellationToken cancellationToken) { Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId()); ToDoItem toDoItemToBeDeleted = await ToDoItemsRepository.GetByIdAsync(cancellationToken, key); if (toDoItemToBeDeleted == null) { throw new ResourceNotFoundException("ToDoItemCouldNotBeFound"); } await ToDoItemsRepository.DeleteAsync(toDoItemToBeDeleted, cancellationToken); }
public virtual async Task <ToDoItemDto> CreateToDoItem(ToDoItemDto toDoItem, CancellationToken cancellationToken) { if (toDoItem == null) { throw new BadRequestException("ToDoItemMayNotBeNull"); } Guid userId = Guid.Parse(UserInformationProvider.GetCurrentUserId()); List <ToDoItemOptions> optionsList = new List <ToDoItemOptions> { }; List <Guid> usersOfThisToDoGroup = toDoItem.ToDoGroupId == null ? (new List <Guid> { userId } /*ToDoItem has no to do group*/) : (await ToDoGroupOptionsListRepository .GetAll() .Where(tdgo => tdgo.ToDoGroupId == toDoItem.ToDoGroupId) .Select(tdgo => tdgo.UserId) .ToListAsync(cancellationToken)); foreach (Guid otherUserId in usersOfThisToDoGroup) { ToDoItemOptions options = new ToDoItemOptions { Id = Guid.NewGuid(), UserId = otherUserId }; if (options.UserId == userId) /* For current user only */ { options.ShowInMyDayOn = toDoItem.ShowInMyDay == true ? (DateTimeOffset?)DateTimeProvider.GetCurrentUtcDateTime() : null; } optionsList.Add(options); } ToDoItem addedToDoItem = await ToDoItemsRepository.AddAsync(new ToDoItem { Id = Guid.NewGuid(), CreatedById = userId, CreatedOn = DateTimeProvider.GetCurrentUtcDateTime(), ModifiedOn = DateTimeProvider.GetCurrentUtcDateTime(), Notes = toDoItem.Notes, Title = toDoItem.Title, ToDoGroupId = toDoItem.ToDoGroupId, Options = optionsList }, cancellationToken); return(await GetMyToDoItems() .FirstAsync(tdi => tdi.Id == addedToDoItem.Id, cancellationToken)); }
public void DeleteItemRemovesItem() { var existingEntityItem = new EntityModel.ToDoItem { ItemId = 1, Title = "Item 1", DueDate = DateTime.Now, IsCompleted = false, }; var mockToDoDbSet = GetMockedDbSet(new[] { existingEntityItem }); var mockContext = new Mock <IToDoContext>(); mockContext.Setup(context => context.ToDoItems).Returns(mockToDoDbSet); var repository = new ToDoItemsRepository(mockContext.Object); var result = repository.DeleteItem(existingEntityItem.ItemId); mockContext.Verify(context => context.SaveChangesAsync(), Times.Once); }
public void AddItemSetsItemAsOverDueIfDueDateIsBeforeToday() { var itemToAdd = new ToDoItem { Title = "New Item", DueDate = new DateTime(1900, 12, 30), }; var mockContext = new Mock <IToDoContext>(); mockContext.Setup(context => context.ToDoItems.Add(It.IsAny <EntityModel.ToDoItem>())) .Returns(new EntityModel.ToDoItem()); var repository = new ToDoItemsRepository(mockContext.Object); var result = repository.AddItem(itemToAdd).Result; mockContext.Verify(context => context.ToDoItems.Add(It.IsAny <EntityModel.ToDoItem>()), Times.Once); mockContext.Verify(context => context.SaveChangesAsync(), Times.Once); Assert.IsFalse(result.IsDone); Assert.IsTrue(result.IsOverDue); }
public void UpdateItemStateSetsDoneStateCorrectlyOnItem() { var existingEntityItem = new EntityModel.ToDoItem { ItemId = 1, Title = "Item 1", DueDate = DateTime.Now, IsCompleted = false, }; var mockToDoDbSet = GetMockedDbSet(new[] { existingEntityItem }); var mockContext = new Mock <IToDoContext>(); mockContext.Setup(context => context.ToDoItems).Returns(mockToDoDbSet); var repository = new ToDoItemsRepository(mockContext.Object); var result = repository.UpdateItemState(existingEntityItem.ItemId).Result; mockContext.Verify(context => context.SaveChangesAsync(), Times.Once); Assert.AreNotSame(existingEntityItem.IsCompleted, result.IsDone); }
public void AddItemSavesItemAndReturnsValidModel() { var itemToAdd = new ToDoItem { Title = "New Item", DueDate = new DateTime(2020, 12, 30), }; var mockContext = new Mock <IToDoContext>(); mockContext.Setup(context => context.ToDoItems.Add(It.IsAny <EntityModel.ToDoItem>())) .Returns(new EntityModel.ToDoItem()); var repository = new ToDoItemsRepository(mockContext.Object); var result = repository.AddItem(itemToAdd).Result; mockContext.Verify(context => context.ToDoItems.Add(It.IsAny <EntityModel.ToDoItem>()), Times.Once); mockContext.Verify(context => context.SaveChangesAsync(), Times.Once); Assert.AreEqual(itemToAdd.Title, result.Title); Assert.AreEqual(itemToAdd.DueDate, result.DueDate); Assert.IsFalse(result.IsDone); Assert.IsFalse(result.IsOverDue); }
public HomeController(ToDoItemsRepository repo) { this.repo = repo; }