summaryrefslogtreecommitdiff
path: root/app/src/androidTest/java/de/test/antennapod/util/event/DownloadEventListener.java
blob: d322c1cbfb183e5413141c6644c5ba660cd35065 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package de.test.antennapod.util.event;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import de.danoeh.antennapod.core.event.DownloadEvent;
import io.reactivex.functions.Consumer;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;

import java.util.ArrayList;
import java.util.List;

/**
 * Test helper to listen to {@link DownloadEvent} and handle them accordingly.
 */
public class DownloadEventListener {
    private final List<DownloadEvent> events = new ArrayList<>();

    /**
     * Provides an listener subscribing to {@link DownloadEvent} that the callers can use.
     * Note: it uses RxJava's version of {@link Consumer} because it allows exceptions to be thrown.
     */
    public static void withDownloadEventListener(@NonNull Consumer<DownloadEventListener> consumer) throws Exception {
        DownloadEventListener feedItemEventListener = new DownloadEventListener();
        try {
            EventBus.getDefault().register(feedItemEventListener);
            consumer.accept(feedItemEventListener);
        } finally {
            EventBus.getDefault().unregister(feedItemEventListener);
        }
    }

    @Subscribe
    public void onEvent(DownloadEvent event) {
        events.add(event);
    }

    @Nullable
    public DownloadEvent getLatestEvent() {
        if (events.size() == 0) {
            return null;
        }
        return events.get(events.size() - 1);
    }
}