Skip to content

Commit

Permalink
✅ Add more tests #97
Browse files Browse the repository at this point in the history
Signed-off-by: Marcus Fihlon <[email protected]>
  • Loading branch information
McPringle committed Apr 19, 2024
1 parent 210e60c commit e880789
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import org.springframework.scheduling.TaskScheduler;
import org.springframework.stereotype.Service;
import swiss.fihlon.apus.configuration.Configuration;
import swiss.fihlon.apus.plugin.social.mastodon.MastodonPlugin;
import swiss.fihlon.apus.social.Post;
import swiss.fihlon.apus.util.HtmlUtil;

Expand Down Expand Up @@ -59,8 +58,9 @@ public final class SocialService {
private List<Post> posts = List.of();

public SocialService(@NotNull final TaskScheduler taskScheduler,
@NotNull final Configuration configuration) {
socialPlugin = new MastodonPlugin(configuration);
@NotNull final Configuration configuration,
@NotNull final SocialPlugin socialPlugin) {
this.socialPlugin = socialPlugin;
filterLength = configuration.getFilter().length();
filterReplies = configuration.getFilter().replies();
filterSensitive = configuration.getFilter().sensitive();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import social.bigbone.MastodonClient;
import social.bigbone.api.Pageable;
import social.bigbone.api.Range;
Expand All @@ -38,6 +39,7 @@

import static social.bigbone.api.method.TimelineMethods.StatusOrigin.LOCAL_AND_REMOTE;

@Service
public final class MastodonPlugin implements SocialPlugin {

private static final Logger LOGGER = LoggerFactory.getLogger(MastodonPlugin.class);
Expand All @@ -57,7 +59,7 @@ public MastodonPlugin(@NotNull final Configuration configuration) {

@Override
public boolean isEnabled() {
return instance != null && !instance.isEmpty() && hashtag != null && !hashtag.isEmpty();
return instance != null && !instance.isBlank() && hashtag != null && !hashtag.isBlank();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ class MastodonConfigTest {
void testMastodonConfig() {
final var mastodonConfig = configuration.getMastodon();
assertNotNull(mastodonConfig);
assertEquals("mastodon.social", mastodonConfig.instance());
assertEquals("java", mastodonConfig.hashtag());
assertEquals("localhost", mastodonConfig.instance());
assertEquals("foobar", mastodonConfig.hashtag());
assertTrue(mastodonConfig.imagesEnabled());
assertEquals(1, mastodonConfig.imageLimit());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,62 @@
package swiss.fihlon.apus.plugin.social.mastodon;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import swiss.fihlon.apus.configuration.Configuration;
import swiss.fihlon.apus.social.Post;

import java.util.List;
import java.util.stream.Stream;

import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

@ExtendWith(MockitoExtension.class)
class MastodonPluginTest {

@Mock
private Configuration configuration;
private static Stream<Arguments> provideDisabledData() {
return Stream.of(
Arguments.of("", ""),
Arguments.of(" ", " "),
Arguments.of("", "foobar"),
Arguments.of(" ", "foobar"),
Arguments.of("localhost", ""),
Arguments.of("localhost", " ")
);
}

@ParameterizedTest
@MethodSource("provideDisabledData")
void isDisabled(final String instance, final String hashtag) {
final var configuration = mock(Configuration.class);
final var mastodonConfig = mock(MastodonConfig.class);
when(configuration.getMastodon()).thenReturn(mastodonConfig);
when(mastodonConfig.instance()).thenReturn(instance);
when(mastodonConfig.hashtag()).thenReturn(hashtag);

final var mastodonPlugin = new MastodonPlugin(configuration);
assertFalse(mastodonPlugin.isEnabled());
}

@Test
void isEnabled() {
final var configuration = mock(Configuration.class);
final var mastodonConfig = mock(MastodonConfig.class);
when(configuration.getMastodon()).thenReturn(mastodonConfig);
when(mastodonConfig.instance()).thenReturn("localhost");
when(mastodonConfig.hashtag()).thenReturn("foobar");

final var mastodonPlugin = new MastodonPlugin(configuration);
assertTrue(mastodonPlugin.isEnabled());
}

@Test
void getPosts() {
final var configuration = mock(Configuration.class);
when(configuration.getMastodon()).thenReturn(
new MastodonConfig("mastodon.social", "java", true, 0));

Expand Down
4 changes: 2 additions & 2 deletions src/test/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ apus.filter.sensitive=true
apus.filter.words=foo, bar, foobar, barfoo
apus.doag.eventId=-1
apus.doag.eventApi=file:src/test/resources/DOAG.json?eventId=%d
apus.mastodon.instance=mastodon.social
apus.mastodon.hashtag=java
apus.mastodon.instance=localhost
apus.mastodon.hashtag=foobar
apus.mastodon.imagesEnabled=true
apus.mastodon.imageLimit=1

0 comments on commit e880789

Please sign in to comment.