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

            var categoryFilter = new UserCategoryFilter()
            {
                HasParent = true
            };
            var category = await categoryFilter.GetUserCategoryAsync(app);

            var parentFilter = new UserCategoryFilter()
            {
                CategoryToMove = category
            };
            var parent1 = await parentFilter.GetUserCategoryAsync(app);

            var expectedPath = new CategoryName(parent1.Path, category.Name);
            var actualPath   = string.Empty;
            await userCategoryCollection.AddCategoriesMovedEventHandlerAsync(UserCategoryCollection_CategoriesMoved);

            await category.MoveAsync(authentication, parent1.Path);

            Assert.AreEqual(expectedPath, actualPath);
            await userCategoryCollection.RemoveCategoriesMovedEventHandlerAsync(UserCategoryCollection_CategoriesMoved);

            var parent2 = await parentFilter.GetUserCategoryAsync(app);

            await category.MoveAsync(authentication, parent2.Path);

            Assert.AreEqual(expectedPath, actualPath);

            void UserCategoryCollection_CategoriesMoved(object sender, ItemsMovedEventArgs <IUserCategory> e)
            {
                var category = e.Items.Single();

                actualPath = category.Path;
            }
        }