package com.artemzin.qualitymatters.other;
import org.junit.Before;
import org.junit.Test;
import rx.functions.Action0;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
public class DisposableSubscriptionTest {
private Action0 disposeAction;
private DisposableSubscription disposableSubscription;
@Before
public void beforeEachTest() {
disposeAction = mock(Action0.class);
disposableSubscription = new DisposableSubscription(disposeAction);
}
@Test
public void unsubscribed_shouldReturnFalseByDefault() {
assertThat(disposableSubscription.isUnsubscribed()).isFalse();
verifyZeroInteractions(disposeAction);
}
@Test
public void unsubscribe_shouldChangeValueOfIsUsubscribed() {
disposableSubscription.unsubscribe();
assertThat(disposableSubscription.isUnsubscribed()).isTrue();
}
@Test
public void unsubscribe_shouldCallDisposableAction() {
disposableSubscription.unsubscribe();
verify(disposeAction).call();
}
@Test
public void unsubscribeTwice_shouldCallDisposableActionOnce() {
disposableSubscription.unsubscribe();
disposableSubscription.unsubscribe();
verify(disposeAction).call();
}
}