public DaggerInjector extend(Object... modules) { ObjectGraph objectGraph = this.objectGraph.plus(modules); return new DaggerInjector(objectGraph); }
public static Scoop extend(final Scoop parentScoop, final Object... modules) { final Screen parentScreen = Screen.fromScoop(parentScoop); final Scoop.Builder scoopBuilder = new Scoop.Builder(parentScreen.getClass().getSimpleName(), parentScoop) .service(Screen.SERVICE_NAME, parentScreen); final DaggerInjector daggerInjector = DaggerInjector.fromScoop(parentScoop).extend(modules); return scoopBuilder .service(DaggerInjector.SERVICE_NAME, daggerInjector).build(); } }
@OnClick(R.id.add_view_button) public void addView() { DaggerInjector.extend(getScoop(), new NestedViewModule()) .inflate(R.layout.nested_view, nestedLayoutParent, true); button.setVisibility(View.GONE); }
@Test public void testInject() { daggerInjector.inject(TEST_STRING); verify(mockObjectGraph, times(1)).inject(eq(TEST_STRING)); }
@Test public void testCreateViewController() { daggerViewControllerInflater.createViewController(scoop, TestViewController.class); verify(mockDaggerInjector).get(eq(TestViewController.class)); }
@Override protected Scoop addServices(Scoop.Builder scoopBuilder, Screen screen, Scoop parentScoop) { DaggerInjector parentDagger = DaggerInjector.fromScoop(parentScoop); DaggerModule daggerModule = screen.getClass().getAnnotation(DaggerModule.class); if (daggerModule == null) { return scoopBuilder.service(DaggerInjector.SERVICE_NAME, parentDagger).build(); } DaggerInjector screenInjector; try { final Object module = daggerModule.value().newInstance(); screenInjector = parentDagger.extend(module); } catch (Throwable e) { throw new RuntimeException("Failed to instantiate module for screen: " + screen.getClass().getSimpleName(), e); } return scoopBuilder .service(DaggerInjector.SERVICE_NAME, screenInjector).build(); } }
@Test public void testExtend() { when(mockObjectGraph.plus(eq(TEST_STRING))).thenReturn(mockObjectGraph); assertNotNull(daggerInjector.extend(TEST_STRING)); verify(mockObjectGraph, times(1)).plus(eq(TEST_STRING)); } }
@Test public void testGet() { when(mockObjectGraph.get(eq(String.class))).thenReturn(TEST_STRING); assertEquals(TEST_STRING, daggerInjector.get(String.class)); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Timber.d("onCreate"); setContentView(R.layout.activity_main); getActivityScoop().inflate(R.layout.root, (ViewGroup) findViewById(R.id.root), true); ButterKnife.bind(this); DaggerInjector.fromScoop(getActivityScoop()).inject(this); }
@Before public void setUp() { MockitoAnnotations.initMocks(this); daggerInjector = new DaggerInjector(mockObjectGraph); }
@Test public void testAddModule() { when(mockDaggerInjector.extend(any(TestModule.class))).thenReturn(mockDaggerInjector); assertNotNull(daggerScreenScooper.addServices(scoopBuilder, new TestScreen(), scoop)); }
private Scoop getActivityScoop() { if (activityScoop == null) { Timber.d("getActivityScoop"); ObjectGraph activityGraph = getApp().getApplicationGraph().plus(new MainActivityModule(this)); DaggerInjector activityInjector = new DaggerInjector(activityGraph); activityScoop = new Scoop.Builder("activity_scoop") .service(DaggerInjector.SERVICE_NAME, activityInjector) .build(); } return activityScoop; }