package com.truckmuncher.app.vendor.menuadmin; import android.database.Cursor; import android.database.MatrixCursor; import android.support.v7.widget.SwitchCompat; import android.view.View; import android.widget.TextView; import com.truckmuncher.app.R; import com.truckmuncher.testlib.ReadableRobolectricTestRunner; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import butterknife.ButterKnife; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @RunWith(ReadableRobolectricTestRunner.class) public class MenuAdminAdapterTest { @Test public void sectionIsDeterminedByCategoryColumn() { Cursor cursor = mock(Cursor.class); when(cursor.getString(MenuAdminAdapter.Query.CATEGORY_NAME)).thenReturn("Sandwiches"); MenuAdminAdapter adapter = new MenuAdminAdapter(Robolectric.application, cursor); assertThat(adapter.getSectionFromCursor(cursor)).isEqualTo("Sandwiches"); } @Test public void adapterCanBindSectionViews() { Cursor cursor = mock(Cursor.class); MenuAdminAdapter adapter = new MenuAdminAdapter(Robolectric.application, cursor); View view = adapter.newSectionView(Robolectric.application, null, null); TextView text = ButterKnife.findById(view, android.R.id.text1); assertThat(text.getText()).isEmpty(); adapter.bindSectionView(view, Robolectric.application, 0, "Sandwiches"); assertThat(text.getText()).isEqualTo("Sandwiches"); } @Test public void itemViewsUseViewHolder() { Cursor cursor = mock(Cursor.class); MenuAdminAdapter adapter = new MenuAdminAdapter(Robolectric.application, cursor); View view = adapter.newItemView(Robolectric.application, cursor, null); assertThat(view.getTag()).isNotNull(); } @Test public void adapterCanBindItemViews() { MatrixCursor cursor = new MatrixCursor(MenuAdminAdapter.Query.PROJECTION); cursor.addRow(new Object[]{1, "ID", "BLT", 6.55, 1, "Sandwiches"}); MenuAdminAdapter adapter = new MenuAdminAdapter(Robolectric.application, cursor); cursor.moveToFirst(); View view = adapter.newItemView(Robolectric.application, cursor, null); adapter.bindItemView(view, Robolectric.application, cursor); assertThat(ButterKnife.<TextView>findById(view, R.id.name).getText().toString()).isEqualTo("BLT"); assertThat(ButterKnife.<TextView>findById(view, R.id.price).getText().toString()).isEqualTo("$6.55"); assertThat(ButterKnife.<SwitchCompat>findById(view, R.id.isAvailableSwitch).isChecked()).isTrue(); } @Test public void getMenuItemAvailabilityDiffReturnEmptyMapNotNull() { Cursor cursor = mock(Cursor.class); MenuAdminAdapter adapter = new MenuAdminAdapter(Robolectric.application, cursor); assertThat(adapter.getMenuItemAvailabilityDiff()).isNotNull(); } }