public async Task AutoDiscoverObjectTypeAsync_OnlyNewObjectTypes_Added()
        {
            // setup
            var testEvent1 = new ServerEventMessage
            {
                ObjectType = "Customer"
            };
            var testEvent2 = new ServerEventMessage
            {
                ObjectType = "Project"
            };

            Mock.Get(metadataStore)
            .Setup(s => s.AddObjectTypeAsync(It.IsAny <string>()))
            .Returns(Task.CompletedTask);
            Mock.Get(metadataStore)
            .Setup(s => s.GetObjectTypesAsync())
            .ReturnsAsync(new[] { "Customer" })
            .Verifiable();

            // Test
            var service = new DefaultMetadataService(logger, metadataStore);
            await service.AutoDiscoverObjectsAsync(testEvent1);

            await service.AutoDiscoverObjectsAsync(testEvent2);

            // Assert
            Mock.Get(metadataStore).Verify();
            Mock.Get(metadataStore).Verify(s => s.AddObjectTypeAsync(It.IsAny <string>()), Times.Once());
        }
        public async Task AutoDiscoverEventAsync_AddsObjectType()
        {
            // setup
            var testEvent = new ServerEventMessage
            {
                ObjectType = "Customer"
            };

            Mock.Get(metadataStore)
            .Setup(s => s.AddObjectTypeAsync(It.Is <string>(v => v == "Customer")))
            .Returns(Task.CompletedTask)
            .Verifiable();

            // Test
            var service = new DefaultMetadataService(logger, metadataStore);
            await service.AutoDiscoverObjectsAsync(testEvent);

            // Assert
            Mock.Get(metadataStore).Verify();
        }