package com.turhanoz.android.reactivedirectorychooser.controller;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import com.turhanoz.android.reactivedirectorychooser.event.DataSetChangedEvent;
import com.turhanoz.android.reactivedirectorychooser.event.MakeDirectoryEvent;
import com.turhanoz.android.reactivedirectorychooser.event.UpdateDirectoryTreeEvent;
import com.turhanoz.android.reactivedirectorychooser.operation.ListDirectoryOperation;
import com.turhanoz.android.reactivedirectorychooser.operation.MakeDirectoryOperation;
import com.turhanoz.android.reactivedirectorychooser.ui.DirectoryAdapter;
import org.junit.Before;
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.Mockito.mock;
import static org.mockito.Mockito.verify;
@RunWith(RobolectricTestRunner.class)
@Config(manifest = "library/src/main/AndroidManifest.xml", emulateSdk = 18)
public class DirectoryControllerTest {
DirectoryController sut;
EventBus mockBus;
@Before
public void setUp() throws Exception {
mockBus = mock(EventBus.class);
Context context = Robolectric.getShadowApplication().getApplicationContext();
sut = new DirectoryController(context, mockBus, mock(RecyclerView.class));
sut.makeDirectoryOperation = mock(MakeDirectoryOperation.class);
sut.listDirectoryOperation = mock(ListDirectoryOperation.class);
}
@Test
public void onDataSetChangedEventShouldNotifyAdapter() throws Exception {
sut.adapter = mock(DirectoryAdapter.class);
sut.onEvent(new DataSetChangedEvent());
verify(sut.adapter).notifyDataSetChanged();
}
@Test
public void shouldCollaborateWithListDirectoryOperation() throws Exception {
File mockRootDirectory = mock(File.class);
UpdateDirectoryTreeEvent event = new UpdateDirectoryTreeEvent(mockRootDirectory);
sut.onEvent(event);
verify(sut.listDirectoryOperation).compute(mockRootDirectory);
}
@Test
public void shouldCollaborateWithMakeDirectoryOperation() throws Exception {
File mockRootDirectory = mock(File.class);
MakeDirectoryEvent event = new MakeDirectoryEvent(mockRootDirectory, "newDirectory");
sut.onEvent(event);
verify(sut.makeDirectoryOperation).compute(mockRootDirectory, "newDirectory");
}
}