CompletableInteractor implements Interactor<DisposableCompletableObserver, P> { @Override public void execute(DisposableCompletableObserver observer, P params) { DisposableCompletableObserver disposableObserver = buildReactiveStream(params) .subscribeOn(Schedulers.from(threadExecutor)) .observeOn(postExecutionThread.getScheduler()) .subscribeWith(observer); disposables.add(disposableObserver); } CompletableInteractor(ThreadExecutor threadExecutor,
      PostExecutionThread postExecutionThread); @Override void execute(DisposableCompletableObserver observer, P params); @Override void dispose();  }
@Test public void shouldNeverComplete() throws Exception { notCompletableInteractor.execute(testDisposableCompletableObserver, null); assertFalse(testDisposableCompletableObserver.isCompleted); }
@Test(expected = NullPointerException.class) public void shouldFailWhenNullObserver() throws Exception { completableInteractor.execute(null, null); }