@Test
public void testInteractions() {

    presenter.enableInteractions(context);
    testInteraction(DerpibooruImageInteraction.InteractionType.Fave, new Runnable() {
        @Override
        public void run() {
            assertThat(faveButton.isActive(), is(true));
            assertThat(upvoteButton.isActive(), is(true));
            assertThat(downvoteButton.isActive(), is(false));
        }
    });
    faveButton.performClick();
    testInteraction(DerpibooruImageInteraction.InteractionType.ClearFave, new Runnable() {
        @Override
        public void run() {
            assertThat(faveButton.isActive(), is(false));
            assertThat(upvoteButton.isActive(), is(true));
            assertThat(downvoteButton.isActive(), is(false));
        }
    });
    faveButton.performClick();
    testInteraction(DerpibooruImageInteraction.InteractionType.Downvote, new Runnable() {
        @Override
        public void run() {
            assertThat(faveButton.isActive(), is(false));
            assertThat(upvoteButton.isActive(), is(false));
            assertThat(downvoteButton.isActive(), is(true));
        }
    });
    downvoteButton.performClick();
    testInteraction(DerpibooruImageInteraction.InteractionType.Upvote, new Runnable() {
        @Override
        public void run() {
            assertThat(faveButton.isActive(), is(false));
            assertThat(upvoteButton.isActive(), is(true));
            assertThat(downvoteButton.isActive(), is(false));
        }
    });
    upvoteButton.performClick();
    testInteraction(DerpibooruImageInteraction.InteractionType.ClearVote, new Runnable() {
        @Override
        public void run() {
            assertThat(faveButton.isActive(), is(false));
            assertThat(upvoteButton.isActive(), is(false));
            assertThat(downvoteButton.isActive(), is(false));
        }
    });
    upvoteButton.performClick();
}