@Test
void disposeComponent() {
ProjectConfigRegistry registry = new ProjectConfigRegistryImpl(idea.getMockProject());
final List<ClientConfig> added = new ArrayList<>();
final List<ClientConfig> removed = new ArrayList<>();
MessageBusClient.ProjectClient client = MessageBusClient.forProject(idea.getMockProject(), idea.getMockProject());
ClientConfigAddedMessage.addListener(client, this, e -> added.add(e.getClientConfig()));
ClientConfigRemovedMessage.addListener(client, this, (e) -> removed.add(e.getClientConfig()));
ClientConfig config = createClientConfig();
VirtualFile root = MockVirtualFileSystem.createRoot();
registry.addClientConfig(config, root);
assertEquals(1, added.size());
added.clear();
registry.disposeComponent();
assertEquals(0, added.size());
assertEquals(1, removed.size());
assertSame(config, removed.get(0));
ClientConfig fetchedState =
registry.getRegisteredClientConfigState(config.getClientServerRef());
assertNull(fetchedState);
removed.clear();
assertThrows(Throwable.class, () -> registry.addClientConfig(config, root));
assertEquals(0, added.size());
assertThrows(Throwable.class, () -> registry.removeClientConfigAt(root));
assertEquals(0, removed.size());
}