public async Task WebHookSubscription_RelevantEvent()
        {
            await Test(
                builder => { builder.UseComponent(new WebHookComponent()); },
                async() =>
            {
                var wh = await CreateWebHookSubscriptionAsync(@"{
    ""Path"": ""/Root/Content"",
    ""ContentTypes"": [ 
        {
            ""Name"": ""Folder"", 
            ""Events"": [ ""Create"", ""Delete"", ""MoveToTrash"", ""RestoreFromTrash"" ] 
        }
    ] 
}");

                var parent1 = await Node.LoadNodeAsync("/Root/Content", CancellationToken.None);
                var node1   = new Folder(parent1);
                var event1  = new NodeCreatedEvent(new TestNodeEventArgs(node1, NodeEvent.Created));
                var event2  = new TestEvent1(new TestNodeEventArgs(node1, NodeEvent.Created));
                var event3  = new NodeForcedDeletedEvent(new TestNodeEventArgs(node1, NodeEvent.DeletedPhysically));
                var event4  = new NodeDeletedEvent(new TestNodeEventArgs(node1, NodeEvent.Deleted));
                var event5  = new NodeRestoredEvent(new TestNodeEventArgs(node1, NodeEvent.Restored));

                Assert.AreEqual(WebHookEventType.Create, wh.GetRelevantEventTypes(event1).Single());
                Assert.AreEqual(0, wh.GetRelevantEventTypes(event2).Length);
                Assert.AreEqual(WebHookEventType.Delete, wh.GetRelevantEventTypes(event3).Single());
                Assert.AreEqual(WebHookEventType.MoveToTrash, wh.GetRelevantEventTypes(event4).Single());
                Assert.AreEqual(WebHookEventType.RestoreFromTrash, wh.GetRelevantEventTypes(event5).Single());
            });
        }
        private Task NodeRepositoryDeletedEventAsync(NodeDeletedEvent e)
        {
            lock (nodesDeleted)
            {
                nodesDeleted.Add(e.DeletedNode);
            }

            return(Task.CompletedTask);
        }