public void Should_Remove_Item() { // Given var board = context.KanbanBoards.Include(x => x.Columns).First(); var user = context.AppUsers.FirstOrDefault(); var handler = new RemoveItem(repository, CreateAccessServiceMock().Object); var column = board.Columns.Where(x => x.Items.Any()).OrderBy(x => x.Index).First(); var itemToRemove = column.Items.First(); var itemsCount = column.Items.Count; var expectedIndexes = column.Items .OrderBy(x => x.Index) .Select(x => x.Index) .SkipLast(1) .ToList(); // When handler.HandleAsync( new RemoveItem.Command(user.ID, board.ID, itemToRemove.ID)).Wait(); // Then var actualIndexes = column.Items.OrderBy(x => x.Index).Select(x => x.Index); Assert.IsFalse(column.Items.Any(x => x.ID == itemToRemove.ID)); Assert.AreEqual(itemsCount - 1, column.Items.Count); CollectionAssert.AreEqual(expectedIndexes, actualIndexes); }
public void Should_Throw_Exception_On_Removing_Item_With_No_Access() { // Given var board = context.KanbanBoards.Include(x => x.Columns).First(); var user = context.AppUsers.FirstOrDefault(); var handler = new RemoveItem(repository, CreateAccessServiceMock(false, false).Object); var column = board.Columns.Where(x => x.Items.Any()).OrderBy(x => x.Index).First(); var itemToRemove = column.Items.First(); // When Assert.CatchAsync <ForbiddenException>( async() => await handler.HandleAsync( new RemoveItem.Command(user.ID, board.ID, itemToRemove.ID))); }