@Test(expected = NoFactoryFoundException.class) public void reset_shouldResetBoundProviders_andFlagTheTestModuleToFalse() throws Exception { //GIVEN ScopeImpl scope = new ScopeImpl("root"); scope.installTestModules(new Module() { { bind(IFoo.class).to(Foo.class); } }); //WHEN scope.reset(); //THEN scope.installTestModules(); // Should not crash scope.getInstance(IFoo.class); // Should crash as we don't have the binding for IFoo anymore }
@Test(expected = IllegalStateException.class) public void installTestModules_shoudFailToInstallTestsBindingsAgain_whenCalledTwice() { //GIVEN Foo testFoo = new Foo(); Foo testFoo2 = new Foo(); ScopeImpl scope = new ScopeImpl(""); scope.installTestModules(new TestModule(testFoo)); //WHEN scope.installTestModules(new TestModule(testFoo2)); //THEN fail("Should throw an exception"); }
@Test public void installOverrideModules_shouldNotInstallOverrideBindings_whenCalledWithoutTestModules() { //GIVEN ScopeImpl scope = new ScopeImpl(""); scope.installTestModules(); scope.installModules(new ProdModule()); //WHEN Foo instance = scope.getInstance(Foo.class); //THEN assertThat(instance, notNullValue()); }
@Test public void installOverrideModules_shouldNotOverrideOtherBindings() { //GIVEN Foo testFoo = new Foo(); ScopeImpl scope = new ScopeImpl(""); scope.installTestModules(new TestModule(testFoo)); scope.installModules(new ProdModule2()); //WHEN Foo fooInstance = scope.getInstance(Foo.class); Bar barInstance = scope.getInstance(Bar.class); //THEN assertThat(fooInstance, sameInstance(testFoo)); assertThat(barInstance, notNullValue()); }
@Test public void installOverrideModules_shouldInstallOverrideBindings_whenCalledOnce() { //GIVEN Foo testFoo = new Foo(); ScopeImpl scope = new ScopeImpl(""); scope.installTestModules(new TestModule(testFoo)); scope.installModules(new ProdModule()); //WHEN Foo instance = scope.getInstance(Foo.class); //THEN assertThat(instance, sameInstance(testFoo)); }
@Test public void installTestModules_shouldOverrideBindings_whenInstalledAfterProductionModules() { //GIVEN Foo testFoo = new Foo(); ScopeImpl scope = new ScopeImpl(""); scope.installModules(new ProdModule()); scope.installTestModules(new TestModule(testFoo)); //WHEN Foo instance = scope.getInstance(Foo.class); //THEN assertThat(instance, sameInstance(testFoo)); }