mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-14 17:26:22 +01:00
refactor listener modules
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package sonia.scm;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class EagerSingletonModuleTest {
|
||||
|
||||
@Test
|
||||
void shouldInitializeEagerSingletons() {
|
||||
Injector injector = Guice.createInjector(new EagerSingletonModule(), new EagerTestModule());
|
||||
injector.getInstance(EagerSingletonModule.class).initialize(injector);
|
||||
|
||||
Capturer capturer = injector.getInstance(Capturer.class);
|
||||
assertThat(capturer.value).isEqualTo("eager!");
|
||||
}
|
||||
|
||||
public static class EagerTestModule extends AbstractModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(Capturer.class);
|
||||
bind(Eager.class);
|
||||
}
|
||||
}
|
||||
|
||||
@Singleton
|
||||
public static class Capturer {
|
||||
private String value;
|
||||
}
|
||||
|
||||
@EagerSingleton
|
||||
public static class Eager {
|
||||
|
||||
@Inject
|
||||
public Eager(Capturer capturer) {
|
||||
capturer.value = "eager!";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package sonia.scm;
|
||||
|
||||
import com.github.legman.Subscribe;
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import sonia.scm.event.LegmanScmEventBus;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class ScmEventBusModuleTest {
|
||||
|
||||
@Test
|
||||
void shouldRegisterInstance() {
|
||||
LegmanScmEventBus eventBus = new LegmanScmEventBus();
|
||||
|
||||
Injector injector = Guice.createInjector(new ScmEventBusModule(eventBus));
|
||||
Listener listener = injector.getInstance(Listener.class);
|
||||
|
||||
eventBus.post("hello");
|
||||
|
||||
assertThat(listener.message).isEqualTo("hello");
|
||||
}
|
||||
|
||||
public static class Listener {
|
||||
|
||||
private String message;
|
||||
|
||||
@Subscribe(async = false)
|
||||
public void receive(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package sonia.scm;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class ScmInitializerModuleTest {
|
||||
|
||||
@Test
|
||||
void shouldInitializeInstances() {
|
||||
Injector injector = Guice.createInjector(new ScmInitializerModule());
|
||||
InitializeMe instance = injector.getInstance(InitializeMe.class);
|
||||
|
||||
assertThat(instance.initialized).isTrue();
|
||||
}
|
||||
|
||||
public static class InitializeMe implements Initable {
|
||||
|
||||
private boolean initialized = false;
|
||||
|
||||
@Override
|
||||
public void init(SCMContextProvider context) {
|
||||
this.initialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user