package com.nilhcem.bblfr.ui.locations; import android.os.Build; import android.view.View; import android.widget.TextView; import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.internal.zzf; import com.nilhcem.bblfr.BuildConfig; import com.nilhcem.bblfr.model.locations.Audience; import com.nilhcem.bblfr.model.locations.Interest; import com.nilhcem.bblfr.model.locations.Location; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import static com.google.common.truth.Truth.assertThat; @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.M) public class LocationsInfoWindowAdapterTest { private LocationsInfoWindowAdapter adapter; private Marker marker; private Location location; @Before public void setup() { location = new Location(); marker = new Marker(Mockito.mock(zzf.class)); Map<Marker, Location> map = new HashMap<>(); map.put(marker, location); adapter = new LocationsInfoWindowAdapter(RuntimeEnvironment.application, map); } @Test public void should_bind_data() { // Given location.name = "Xebia"; location.address = "Haussmann"; location.contact = "contact@xebia.fr"; location.audience = new Audience(); location.audience.number = "100"; location.audience.profiles = "Craftsmen"; location.interests = new ArrayList<>(); location.interests.add(new Interest("Agile")); // When adapter.getInfoContents(marker); // Then assertThat(adapter.mName.getText().toString()).isEqualTo("Xebia"); assertThat(adapter.mAddress.getText().toString()).isEqualTo("Haussmann"); assertThat(adapter.mContact.getText().toString()).contains("contact@xebia.fr"); assertThat(adapter.mAudience.getText().toString()).contains("100"); assertThat(adapter.mAudience.getText().toString()).contains("Craftsmen"); assertThat(adapter.mInterests.getText().toString()).contains("Agile"); } @Test public void should_set_view_to_gone_if_content_is_empty() { // Given TextView tv1 = new TextView(RuntimeEnvironment.application); TextView tv2 = new TextView(RuntimeEnvironment.application); // When adapter.setHtmlTextIfNotEmpty(tv1, null); adapter.setHtmlTextIfNotEmpty(tv2, ""); // Then assertThat(tv1.getVisibility()).isEqualTo(View.GONE); assertThat(tv2.getVisibility()).isEqualTo(View.GONE); } @Test public void should_set_view_to_visible_if_content_is_not_empty() { // Given TextView tv = new TextView(RuntimeEnvironment.application); // When adapter.setHtmlTextIfNotEmpty(tv, "Great"); // Then assertThat(tv.getVisibility()).isEqualTo(View.VISIBLE); assertThat(tv.getText().toString()).isEqualTo("Great"); } }