// Path: app/src/main/java/com/andrey7mel/stepbystep/presenter/RepoListPresenter.java
// public class RepoListPresenter extends BasePresenter {
// 
//     private static final String BUNDLE_REPO_LIST_KEY = "BUNDLE_REPO_LIST_KEY";
// 
//     @Inject
//     protected RepoListMapper repoListMapper;
// 
//     private RepoListView view;
// 
//     private List<Repository> repoList;
// 
//     // for DI
//     @Inject
//     public RepoListPresenter() {
//     }
// 
//     public RepoListPresenter(RepoListView view) {
//         App.getComponent().inject(this);
//         this.view = view;
//     }
// 
//     @Override
//     protected View getView() {
//         return view;
//     }
// 
//     public void onSearchButtonClick() {
//         String name = view.getUserName();
//         if (TextUtils.isEmpty(name)) return;
// 
//         showLoadingState();
//         Subscription subscription = model.getRepoList(name)
//                 .map(repoListMapper)
//                 .subscribe(new Observer<List<Repository>>() {
// 
//                     @Override
//                     public void onCompleted() {
//                         hideLoadingState();
//                     }
// 
//                     @Override
//                     public void onError(Throwable e) {
//                         hideLoadingState();
//                         showError(e);
//                     }
// 
//                     @Override
//                     public void onNext(List<Repository> list) {
//                         if (list != null && !list.isEmpty()) {
//                             repoList = list;
//                             view.showRepoList(list);
//                         } else {
//                             view.showEmptyList();
//                         }
//                     }
//                 });
//         addSubscription(subscription);
//     }
// 
//     public void onCreateView(Bundle savedInstanceState) {
//         if (savedInstanceState != null) {
//             repoList = (List<Repository>) savedInstanceState.getSerializable(BUNDLE_REPO_LIST_KEY);
//         }
//         if (isRepoListNotEmpty()) {
//             view.showRepoList(repoList);
//         }
//     }
// 
//     private boolean isRepoListNotEmpty() {
//         return (repoList != null && !repoList.isEmpty());
//     }
// 
//     public void onSaveInstanceState(Bundle outState) {
//         if (isRepoListNotEmpty()) {
//             outState.putSerializable(BUNDLE_REPO_LIST_KEY, new ArrayList<>(repoList));
//         }
//     }
// 
//     public void clickRepo(Repository repository) {
//         view.startRepoInfoFragment(repository);
//     }
// 
// }


import com.andrey7mel.stepbystep.presenter.RepoListPresenter;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import static org.mockito.Mockito.mock;
package com.andrey7mel.stepbystep.other.di.view;





@Module
public class TestViewDynamicModule {

    @Provides
    @Singleton
    RepoListPresenter provideRepoListPresenter() {
// Path: app/src/main/java/com/andrey7mel/stepbystep/presenter/RepoListPresenter.java
// public class RepoListPresenter extends BasePresenter {
// 
//     private static final String BUNDLE_REPO_LIST_KEY = "BUNDLE_REPO_LIST_KEY";
// 
//     @Inject
//     protected RepoListMapper repoListMapper;
// 
//     private RepoListView view;
// 
//     private List<Repository> repoList;
// 
//     // for DI
//     @Inject
//     public RepoListPresenter() {
//     }
// 
//     public RepoListPresenter(RepoListView view) {
//         App.getComponent().inject(this);
//         this.view = view;
//     }
// 
//     @Override
//     protected View getView() {
//         return view;
//     }
// 
//     public void onSearchButtonClick() {
//         String name = view.getUserName();
//         if (TextUtils.isEmpty(name)) return;
// 
//         showLoadingState();
//         Subscription subscription = model.getRepoList(name)
//                 .map(repoListMapper)
//                 .subscribe(new Observer<List<Repository>>() {
// 
//                     @Override
//                     public void onCompleted() {
//                         hideLoadingState();
//                     }
// 
//                     @Override
//                     public void onError(Throwable e) {
//                         hideLoadingState();
//                         showError(e);
//                     }
// 
//                     @Override
//                     public void onNext(List<Repository> list) {
//                         if (list != null && !list.isEmpty()) {
//                             repoList = list;
//                             view.showRepoList(list);
//                         } else {
//                             view.showEmptyList();
//                         }
//                     }
//                 });
//         addSubscription(subscription);
//     }
// 
//     public void onCreateView(Bundle savedInstanceState) {
//         if (savedInstanceState != null) {
//             repoList = (List<Repository>) savedInstanceState.getSerializable(BUNDLE_REPO_LIST_KEY);
//         }
//         if (isRepoListNotEmpty()) {
//             view.showRepoList(repoList);
//         }
//     }
// 
//     private boolean isRepoListNotEmpty() {
//         return (repoList != null && !repoList.isEmpty());
//     }
// 
//     public void onSaveInstanceState(Bundle outState) {
//         if (isRepoListNotEmpty()) {
//             outState.putSerializable(BUNDLE_REPO_LIST_KEY, new ArrayList<>(repoList));
//         }
//     }
// 
//     public void clickRepo(Repository repository) {
//         view.startRepoInfoFragment(repository);
//     }
// 
// }


// Path: app/src/test/java/com/andrey7mel/stepbystep/other/di/view/TestViewDynamicModule.java
import com.andrey7mel.stepbystep.presenter.RepoListPresenter;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import static org.mockito.Mockito.mock;

package com.andrey7mel.stepbystep.other.di.view;





@Module
public class TestViewDynamicModule {

    @Provides
    @Singleton
    RepoListPresenter provideRepoListPresenter() {
        return mock(RepoListPresenter.class);