I have a very simple app built using MVP pattern. This is my Contract:
public interface CitiesContract {
interface View {
void addCitiesToList(List<City> cityList);
}
interface Presenter {
void getCityList();
}
interface Model {
List<City> getCityList();
}
}
This is my View:
public class CitiesActivity extends AppCompatActivity implements CitiesContract.View {
private List<City> cityList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cities);
CitiesPresenter presenter = new CitiesPresenter(this);
presenter.getCityList();
}
@Override
public void addCitiesToList(List<City> cities) {
cityList.addAll(cities);
}
}
This is my Presenter:
public class CitiesPresenter implements CitiesContract.Presenter {
private CitiesContract.View view;
private CitiesModel model;
public CitiesPresenter(CitiesContract.View view) {
this.view = view;
model = new CitiesModel();
}
@Override
public void getCityList() {
List<City> cityList = model.getCityList();
view.addCitiesToList(cityList);
}
}
This is my Model:
public class CitiesModel implements CitiesContract.Model {
@Override
public List<City> getCityList() {
List<City> cityList = new ArrayList<>();
//Add 30 cities to the list
return cityList;
}
}
How can I test the getCityList()
method within my Presenter? This is what I have tried so far:
public class CitiesPresenterTest {
private CitiesContract.Presenter citiesPresenter;
@Mock
private CitiesContract.View citiesView;
public void setUp() {
MockitoAnnotations.initMocks(this);
citiesPresenter = new CitiesPresenter(citiesView);
}
@Test
public void getCityListTest() {
citiesPresenter.getCityList();
//What to do next???
}
}