@Test void removeClientConfig_registered() { 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.removeClientConfigAt(root); assertEquals(0, added.size()); assertEquals(1, removed.size()); assertSame(config, removed.get(0)); ClientConfig fetchedState = registry.getRegisteredClientConfigState(config.getClientServerRef()); assertNull(fetchedState); }
@Test void projectClosed() { 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.projectClosed(); assertEquals(0, added.size()); assertEquals(1, removed.size()); assertSame(config, removed.get(0)); ClientConfig fetchedState = registry.getRegisteredClientConfigState(config.getClientServerRef()); assertNull(fetchedState); // closing the project should turn off further registration removed.clear(); assertThrows(Throwable.class, () -> registry.addClientConfig(config, root)); assertEquals(0, added.size()); assertThrows(Throwable.class, () -> registry.removeClientConfigAt(root)); assertEquals(0, removed.size()); }
@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); // closing the project should turn off further registration removed.clear(); assertThrows(Throwable.class, () -> registry.addClientConfig(config, root)); assertEquals(0, added.size()); assertThrows(Throwable.class, () -> registry.removeClientConfigAt(root)); assertEquals(0, removed.size()); }
@Test void removeClientConfig_notRegistered() { ProjectConfigRegistry registry = new ProjectConfigRegistryImpl(idea.getMockProject()); final List<ClientConfig> removed = new ArrayList<>(); MessageBusClient.ProjectClient client = MessageBusClient.forProject(idea.getMockProject(), idea.getMockProject()); ClientConfigAddedMessage.addListener(client, this, e -> fail("should not have added anything")); ClientConfigRemovedMessage.addListener(client, this, (e) -> removed.add(e.getClientConfig())); ClientConfig config = createClientConfig(); registry.removeClientConfigAt(MockVirtualFileSystem.createRoot()); assertEquals(0, removed.size()); ClientConfig fetchedState = registry.getRegisteredClientConfigState(config.getClientServerRef()); assertNull(fetchedState); }