package com.turhanoz.android.reactivedirectorychooser.observable;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.io.File;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
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 ListFileObservableTest {
ListFileObservable sut;
Observer mockObserver;
@Before
public void setUp() throws Exception {
sut = new ListFileObservable();
mockObserver = mock(Observer.class);
}
@Test
public void shouldReturnAllChildFiles() throws Exception {
File stubRootDirectory = mock(File.class);
File mockFile1 = mock(File.class);
File mockFile2 = mock(File.class);
File mockFile3 = mock(File.class);
File childrenContent[] = {mockFile1, mockFile2, mockFile3};
when(stubRootDirectory.listFiles()).thenReturn(childrenContent);
sut.create(stubRootDirectory)
.subscribeOn(Schedulers.immediate())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(mockObserver);
verify(mockObserver).onNext(mockFile1);
verify(mockObserver).onNext(mockFile1);
verify(mockObserver).onNext(mockFile3);
verify(mockObserver, times(3)).onNext(any(File.class));
verify(mockObserver).onCompleted();
}
}