diff options
Diffstat (limited to 'app/src/androidTest/java/de/test/antennapod/util')
-rw-r--r-- | app/src/androidTest/java/de/test/antennapod/util/feed/FeedItemEventListener.java | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/util/feed/FeedItemEventListener.java b/app/src/androidTest/java/de/test/antennapod/util/feed/FeedItemEventListener.java new file mode 100644 index 000000000..ef371e39b --- /dev/null +++ b/app/src/androidTest/java/de/test/antennapod/util/feed/FeedItemEventListener.java @@ -0,0 +1,46 @@ +package de.test.antennapod.util.feed; + +import android.support.annotation.NonNull; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; + +import java.util.ArrayList; +import java.util.List; + +import de.danoeh.antennapod.core.event.FeedItemEvent; +import io.reactivex.functions.Consumer; + +/** + * Test helpers to listen {@link FeedItemEvent} and handle them accordingly + * + */ +public class FeedItemEventListener { + private final List<FeedItemEvent> events = new ArrayList<>(); + + /** + * Provides an listener subscribing to {@link FeedItemEvent} that the callers can use + * + * Note: it uses RxJava's version of {@link Consumer} because it allows exceptions to be thrown. + */ + public static void withFeedItemEventListener(@NonNull Consumer<FeedItemEventListener> consumer) + throws Exception { + FeedItemEventListener feedItemEventListener = new FeedItemEventListener(); + try { + EventBus.getDefault().register(feedItemEventListener); + consumer.accept(feedItemEventListener); + } finally { + EventBus.getDefault().unregister(feedItemEventListener); + } + } + + @Subscribe + public void onEvent(FeedItemEvent event) { + events.add(event); + } + + @NonNull + public List<? extends FeedItemEvent> getEvents() { + return events; + } +} |