package com.fernandocejas.frodo.internal.observable;
import com.fernandocejas.frodo.internal.MessageManager;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import rx.observers.TestSubscriber;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
@SuppressWarnings("unchecked") @RunWith(MockitoJUnitRunner.class)
public class LogEventsObservableTest {
@Rule public ObservableRule observableRule = new ObservableRule(this.getClass());
private LogEventsObservable loggableObservable;
private TestSubscriber subscriber;
@Mock private MessageManager messageManager;
@Before
public void setUp() {
subscriber = new TestSubscriber();
loggableObservable =
new LogEventsObservable(observableRule.joinPoint(), messageManager, observableRule.info());
}
@Test
public void shouldLogOnlyObservableEvents() throws Throwable {
loggableObservable.get(observableRule.stringType()).subscribe(subscriber);
verify(messageManager).printObservableOnSubscribe(any(ObservableInfo.class));
verify(messageManager).printObservableOnNext(any(ObservableInfo.class));
verify(messageManager).printObservableOnCompleted(any(ObservableInfo.class));
verify(messageManager).printObservableOnTerminate(any(ObservableInfo.class));
verify(messageManager).printObservableOnUnsubscribe(any(ObservableInfo.class));
verifyNoMoreInteractions(messageManager);
}
}