package com.fernandocejas.frodo.internal.observable;
import com.fernandocejas.frodo.core.optional.Optional;
import com.fernandocejas.frodo.internal.observable.ObservableInfo;
import com.fernandocejas.frodo.joinpoint.FrodoJoinPoint;
import com.fernandocejas.frodo.joinpoint.TestJoinPoint;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import rx.Observable;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(MockitoJUnitRunner.class)
public class ObservableInfoTest {
private static final String OBSERVABLE_STREAM_VALUE = "fernando";
private ObservableInfo observableInfo;
@Before
public void setUp() {
final TestJoinPoint testJoinPoint = new TestJoinPoint.Builder(this.getClass())
.withReturnType(Observable.class)
.withReturnValue(OBSERVABLE_STREAM_VALUE)
.build();
final FrodoJoinPoint frodoJoinPoint = new FrodoJoinPoint(testJoinPoint);
observableInfo = new ObservableInfo(frodoJoinPoint);
}
@Test
public void shouldReturnAbsentValues() {
final Optional<String> optionalSubscribeOnThread = observableInfo.getSubscribeOnThread();
final Optional<String> optionalObserveOnThread = observableInfo.getObserveOnThread();
final Optional<Long> optionalTotalExecutionTime = observableInfo.getTotalExecutionTime();
final Optional<Integer> optionalTotalEmittedItems = observableInfo.getTotalEmittedItems();
assertThat(optionalSubscribeOnThread.isPresent()).isFalse();
assertThat(optionalObserveOnThread.isPresent()).isFalse();
assertThat(optionalTotalExecutionTime.isPresent()).isFalse();
assertThat(optionalTotalEmittedItems.isPresent()).isFalse();
}
@Test
public void shouldReturnPresentValues() {
observableInfo.setSubscribeOnThread("thread");
observableInfo.setObserveOnThread("thread");
observableInfo.setTotalExecutionTime(1000);
observableInfo.setTotalEmittedItems(5);
final Optional<String> optionalSubscribeOnThread = observableInfo.getSubscribeOnThread();
final Optional<String> optionalObserveOnThread = observableInfo.getObserveOnThread();
final Optional<Long> optionalTotalExecutionTime = observableInfo.getTotalExecutionTime();
final Optional<Integer> optionalTotalEmittedItems = observableInfo.getTotalEmittedItems();
assertThat(optionalSubscribeOnThread.isPresent()).isTrue();
assertThat(optionalObserveOnThread.isPresent()).isTrue();
assertThat(optionalTotalExecutionTime.isPresent()).isTrue();
assertThat(optionalTotalEmittedItems.isPresent()).isTrue();
}
}