/var/log/messages

Feb 23, 2018 - 2 minute read - Comments - android

DroidKaigi2018UnitTestHandsOn 実装掘削メモ

継続は以下な模様。

  • RepoListContract.java
  • RepoListAdapter.java
  • RepoViewModelMapper.java
  • GetRepositories.java

順に確認します。

RepoListContract.java

presentation/view/contract 配下に定義されているクラスは

  • View (Fragment) -> Presenter
  • Presenter -> View (Fragment)

な interface です。この実装で言うと

  • RepoListContract.View は Fragment が実装する interface
  • RepoListContract.Interaction は Presenter が実装する interface

になります。ただ、おそらく最初らへんで書いてるはずなのですが Presenter と Fragment の一番基本的な部分での interface というのは基底クラスに記載されていてそれ以外のやりとりの方法がここで記載されている、という理解です。

RepoListAdapter.java

定義は presentation/view/adapter/ 配下。RecyclerView って使ったことあるのかな。ちょっと callback が見慣れない感がありますので確認します。

確認

読むぶんにはこんなものですが、なんですが自分で、ってなると困るかも。あと setViewModels ってメソッド定義されててびっくりしたのですが、これは Fragment から表示処理呼び出し時に呼び出されるもので、override なソレではありませんでした。

RepoViewModelMapper.java

定義は presentation/mapper 配下。このクラスは RepoListPresenter にてコンストラクタでオブジェクト参照が渡ってくる属性として使われています。基底クラスの ListAwareMapper ですが common 配下にて定義されています。定義は以下。

public abstract class ListAwareMapper<FROM, TO> implements Mapper<FROM, TO> {
  @NonNull
  public List<TO> convertList(@NonNull List<FROM> fromList) {
    return Stream.of(fromList).map(this::convert).toList();
  }
}

RepoViewModelMapper では Repository なリストから RepoViewModel なリストが生成される、という理解で良いはず。別途 Mapper について確認のこと。

GetRepositories.java

定義は domain/usecase 配下。使い方としては

  • オブジェクト生成して
  • 基底クラス (UseCase) の enqueue メソド呼び出し

で、Bus を介して Subscribe な成功/失敗なメソドが呼び出される模様。このあたりはできあがりを見ながら試験と実装確認してみると良いかもしれません。

要確認

  • Mapper

というか本当にこれで全体確認できているのだろうか感があります。別途再確認の方向なのかどうか。