package com.nilhcem.bblfr.ui.baggers.list; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Build; import android.view.View; import android.widget.Button; import android.widget.FrameLayout; import android.widget.TextView; import com.nilhcem.bblfr.BuildConfig; import com.nilhcem.bblfr.R; import com.nilhcem.bblfr.model.baggers.Bagger; import com.nilhcem.bblfr.model.baggers.Contact; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowActivity; import static com.google.common.truth.Truth.assertThat; @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.M) public class BaggersListEntryViewTest { private BaggersListEntryView view; @Before public void setup() { view = new BaggersListEntryView(new FrameLayout(RuntimeEnvironment.application)); } @Test public void should_set_textview_visibility_to_gone_if_text_is_null() { // Given TextView tv = new TextView(RuntimeEnvironment.application); tv.setVisibility(View.VISIBLE); // When view.setTextIfAny(tv, null); // Then assertThat(tv.getVisibility()).isEqualTo(View.GONE); } @Test public void should_set_textview_visibility_to_gone_if_text_is_empty() { // Given TextView tv = new TextView(RuntimeEnvironment.application); tv.setVisibility(View.VISIBLE); // When view.setTextIfAny(tv, ""); // Then assertThat(tv.getVisibility()).isEqualTo(View.GONE); } @Test public void should_set_text_and_textview_visibility_to_visible() { // Given TextView tv = new TextView(RuntimeEnvironment.application); tv.setVisibility(View.GONE); // When view.setTextIfAny(tv, "Hello!"); // Then assertThat(tv.getVisibility()).isEqualTo(View.VISIBLE); assertThat(tv.getText().toString()).isEqualTo("Hello!"); } @Test public void should_send_email_intent_when_clicking_on_button_to_contact_the_bagger() { // Given Context c = RuntimeEnvironment.application; Button button = new Button(c); button.setTag("me@example.com"); // When view.onInviteButtonClicked(button); // Then ShadowActivity shadowActivity = Shadows.shadowOf(Robolectric.setupActivity(Activity.class)); Intent intent = shadowActivity.getNextStartedActivity(); Intent mailExtra = intent.getParcelableExtra(Intent.EXTRA_INTENT); assertThat(intent.getStringExtra(Intent.EXTRA_TITLE)).isEqualTo(c.getString(R.string.baggers_list_contact_chooser_title)); assertThat(mailExtra.getData().getScheme()).isEqualTo("mailto"); assertThat(mailExtra.getStringExtra(Intent.EXTRA_SUBJECT)).isEqualTo(c.getString(R.string.baggers_list_contact_email_subject)); assertThat(mailExtra.getData().getSchemeSpecificPart()).isEqualTo("me@example.com"); } @Test public void should_bind_data() { // Given Bagger bagger = new Bagger(); bagger.name = "Gautier"; bagger.bio = "Software Craftsman"; bagger.contacts = new Contact(); BaggersListEntry entry = new BaggersListEntry(RuntimeEnvironment.application, bagger); // When view.bindData(entry); // Then assertThat(view.mName.getText().toString()).isEqualTo("Gautier"); assertThat(view.mBio.getText().toString()).isEqualTo("Software Craftsman"); } }