package com.nilhcem.bblfr.ui.baggers.cities.fallback; import android.os.Build; import android.view.View; import com.nilhcem.bblfr.BuildConfig; import com.nilhcem.bblfr.model.baggers.City; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; import org.mockito.Spy; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.M) public class CitiesFallbackAdapterTest { private CitiesFallbackAdapter adapter; @Spy TestOnCitySelectedListener listener; @Before public void setup() { MockitoAnnotations.initMocks(this); adapter = new CitiesFallbackAdapter(listener); } @Test public void should_call_listener_with_given_city_data_when_entry_is_selected() { // Given City city = new City(); city.name = "Franconville"; CitiesFallbackEntryView entryView = mock(CitiesFallbackEntryView.class); when(entryView.getData()).thenReturn(city); View view = new View(RuntimeEnvironment.application); view.setTag(entryView); // When adapter.onClick(view); // Then verify(listener).onCitySelected(city); } public static class TestOnCitySelectedListener implements CitiesFallbackAdapter.OnCitySelectedListener { @Override public void onCitySelected(City selectedCity) { } } }