public async Task ItemsMoved_TestAsync()
        {
            var authentication = await this.TestContext.LoginRandomAsync(Authority.Admin);

            var userItemFilter = new UserItemFilter()
            {
                HasParent = true
            };
            var userItem = await userItemFilter.GetUserItemAsync(app);

            var parentItemFilter1 = new UserItemFilter()
            {
                TargetToMove = userItem
            };
            var parentItem1 = await parentItemFilter1.GetUserItemAsync(app);

            var actualPath            = string.Empty;
            var actualOldPath         = string.Empty;
            var actualOldParentPath   = string.Empty;
            var expectedOldPath       = userItem.Path;
            var expectedOldParentPath = userItem.Parent.Path;
            await userContext.AddItemsMovedEventHandlerAsync(UserContext_ItemsMoved);

            await userItem.MoveAsync(authentication, parentItem1.Path);

            Assert.AreEqual(userItem.Path, actualPath);
            Assert.AreEqual(expectedOldPath, actualOldPath);
            Assert.AreEqual(expectedOldParentPath, actualOldParentPath);
            var parentItemFilter2 = new UserItemFilter()
            {
                TargetToMove = userItem, ExcludedItems = new IUserItem[] { parentItem1 }
            };
            var parentItem2 = await parentItemFilter2.GetUserItemAsync(app);

            await userContext.RemoveItemsMovedEventHandlerAsync(UserContext_ItemsMoved);

            await userItem.MoveAsync(authentication, parentItem2.Path);

            Assert.AreNotEqual(userItem.Path, actualPath);
            Assert.AreEqual(expectedOldPath, actualOldPath);
            Assert.AreEqual(expectedOldParentPath, actualOldParentPath);

            void UserContext_ItemsMoved(object sender, ItemsMovedEventArgs <IUserItem> e)
            {
                var userItem = e.Items.Single();

                actualPath          = userItem.Path;
                actualOldPath       = e.OldPaths.Single();
                actualOldParentPath = e.OldParentPaths.Single();
            }
        }