package com.turhanoz.android.reactivedirectorychooser.ui; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; import com.turhanoz.android.reactivedirectorychooser.event.UpdateDirectoryTreeEvent; import com.turhanoz.android.reactivedirectorychooser.model.DirectoryTree; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import java.io.File; import de.greenrobot.event.EventBus; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(RobolectricTestRunner.class) @Config(manifest = "library/src/main/AndroidManifest.xml", emulateSdk = 18) public class DirectoryAdapterTest { DirectoryAdapter sut; DirectoryTree dataSet; EventBus mockBus; @Before public void setUp() throws Exception { mockBus = mock(EventBus.class); dataSet = new DirectoryTree(mockBus); sut = new DirectoryAdapter(dataSet.directoryList, mockBus); } //This test works within IDE, but not CLI (couldn't find R.java in CLI) @Ignore @Test public void onFileClickedShouldUpdateDirectoryTree() throws Exception { File expectedClickedFile = mock(File.class); ViewGroup fakeViewGroup = new RelativeLayout(Robolectric.getShadowApplication().getApplicationContext()); DirectoryAdapter.ViewHolder viewHolder = spy(sut.onCreateViewHolder(fakeViewGroup, 0)); when(viewHolder.getAdapterPosition()).thenReturn(0); dataSet.directoryList.add(expectedClickedFile); viewHolder.onClick(mock(View.class)); verify(mockBus).post(eq(new UpdateDirectoryTreeEvent(expectedClickedFile))); } }