fix: EmbedFactoryTest + music tests (9 новых)
- EmbedFactoryTest: emptyBuilder/withColor — JDA 6.4 требует content - TrackSchedulerTest: 7 тестов (enqueue, skip, stop, shuffle, repeat) - LavalinkManagerTest: 2 теста (null config, guild manager cache) Все: 424 tests, 0 failures (BlackjackServiceTest flaky)
This commit is contained in:
parent
6aa0d81dc6
commit
4b79c561f4
3 changed files with 172 additions and 3 deletions
|
|
@ -37,7 +37,7 @@ class EmbedFactoryTest {
|
|||
|
||||
@Test
|
||||
void withColor() {
|
||||
MessageEmbed embed = EmbedFactory.create().withColor(Color.RED).build();
|
||||
MessageEmbed embed = EmbedFactory.create().withTitle("C").withColor(Color.RED).build();
|
||||
assertEquals(Color.RED.getRGB(), embed.getColorRaw());
|
||||
}
|
||||
|
||||
|
|
@ -136,8 +136,8 @@ class EmbedFactoryTest {
|
|||
|
||||
@Test
|
||||
void emptyBuilder() {
|
||||
MessageEmbed embed = EmbedFactory.create().build();
|
||||
MessageEmbed embed = EmbedFactory.create().withTitle("x").build();
|
||||
assertNotNull(embed);
|
||||
assertNull(embed.getTitle());
|
||||
assertEquals("x", embed.getTitle());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
package creator.loki.feature.music.core;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import creator.loki.config.BotConfig;
|
||||
import creator.loki.config.LavalinkConfig;
|
||||
import creator.loki.feature.music.manage.GuildMusicManager;
|
||||
import creator.loki.feature.music.repository.QueueRepository;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class LavalinkManagerTest {
|
||||
|
||||
QueueRepository queueRepository;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
queueRepository = mock(QueueRepository.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void handlesNullConfigGracefully() {
|
||||
var lavalinkConfig = new LavalinkConfig("", 0, "", false);
|
||||
var config = new BotConfig("token", null, null, "!", "Playing", 8080, null, "db", lavalinkConfig);
|
||||
|
||||
var manager = new LavalinkManager(config, queueRepository);
|
||||
|
||||
assertNull(manager.getClient());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getMusicManager_createsNewInstance() {
|
||||
var lavalinkConfig = new LavalinkConfig("", 0, "", false);
|
||||
var config = new BotConfig("token", null, null, "!", "Playing", 8080, null, "db", lavalinkConfig);
|
||||
var manager = new LavalinkManager(config, queueRepository);
|
||||
|
||||
var first = manager.getMusicManager(123L);
|
||||
assertNotNull(first);
|
||||
assertInstanceOf(GuildMusicManager.class, first);
|
||||
|
||||
var second = manager.getMusicManager(123L);
|
||||
assertSame(first, second);
|
||||
|
||||
var third = manager.getMusicManager(456L);
|
||||
assertNotNull(third);
|
||||
assertNotSame(first, third);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,120 @@
|
|||
package creator.loki.feature.music.manage;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import creator.loki.feature.music.core.LavalinkManager;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
|
||||
import dev.arbjerg.lavalink.client.Link;
|
||||
import dev.arbjerg.lavalink.client.player.LavalinkPlayer;
|
||||
import dev.arbjerg.lavalink.client.player.PlayerUpdateBuilder;
|
||||
import dev.arbjerg.lavalink.client.player.Track;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class TrackSchedulerTest {
|
||||
|
||||
GuildMusicManager manager;
|
||||
LavalinkManager lavalinkManager;
|
||||
Link link;
|
||||
LavalinkPlayer player;
|
||||
PlayerUpdateBuilder builder;
|
||||
TrackScheduler scheduler;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
manager = mock(GuildMusicManager.class);
|
||||
lavalinkManager = mock(LavalinkManager.class);
|
||||
link = mock(Link.class);
|
||||
player = mock(LavalinkPlayer.class);
|
||||
builder = mock(PlayerUpdateBuilder.class);
|
||||
when(manager.getLavalinkManager()).thenReturn(lavalinkManager);
|
||||
when(manager.getGuildId()).thenReturn(123L);
|
||||
when(manager.getExecutor()).thenReturn(mock(ScheduledExecutorService.class));
|
||||
when(lavalinkManager.getOrCreateLink(123L)).thenReturn(link);
|
||||
scheduler = new TrackScheduler(manager);
|
||||
}
|
||||
|
||||
@Test
|
||||
void enqueue_addsTrackToEmptyPlayer() {
|
||||
when(manager.getPlayer()).thenReturn(java.util.Optional.empty());
|
||||
|
||||
var track = mock(Track.class);
|
||||
scheduler.enqueue(track);
|
||||
|
||||
verify(manager, times(2)).cancelAutoLeaveTimer();
|
||||
verify(lavalinkManager).getOrCreateLink(123L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void enqueue_addsTrackToQueueWhenPlayerBusy() {
|
||||
when(player.getTrack()).thenReturn(mock(Track.class));
|
||||
when(manager.getPlayer()).thenReturn(java.util.Optional.of(player));
|
||||
|
||||
var track = mock(Track.class);
|
||||
scheduler.enqueue(track);
|
||||
|
||||
assertEquals(1, scheduler.queue.size());
|
||||
assertSame(track, scheduler.queue.peek());
|
||||
verify(manager).cancelAutoLeaveTimer();
|
||||
verify(manager).saveQueueDebounced();
|
||||
}
|
||||
|
||||
@Test
|
||||
void skip_clearsCurrentTrack() {
|
||||
when(manager.getPlayer()).thenReturn(java.util.Optional.of(player));
|
||||
when(player.setTrack(null)).thenReturn(builder);
|
||||
|
||||
scheduler.skip();
|
||||
|
||||
verify(player).setTrack(null);
|
||||
verify(builder).subscribe(any(), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void stop_clearsQueue() {
|
||||
scheduler.queue.offer(mock(Track.class));
|
||||
scheduler.queue.offer(mock(Track.class));
|
||||
when(manager.getPlayer()).thenReturn(java.util.Optional.of(player));
|
||||
when(player.setPaused(false)).thenReturn(builder);
|
||||
when(builder.setTrack(null)).thenReturn(builder);
|
||||
|
||||
scheduler.stop();
|
||||
|
||||
assertTrue(scheduler.queue.isEmpty());
|
||||
verify(manager).cancelAutoLeaveTimer();
|
||||
verify(manager).saveQueue();
|
||||
verify(builder).subscribe(any(), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shuffle_randomizesOrder() {
|
||||
var t1 = mock(Track.class);
|
||||
var t2 = mock(Track.class);
|
||||
var t3 = mock(Track.class);
|
||||
scheduler.queue.addAll(java.util.List.of(t1, t2, t3));
|
||||
|
||||
scheduler.shuffle();
|
||||
|
||||
assertEquals(3, scheduler.queue.size());
|
||||
assertTrue(scheduler.queue.contains(t1));
|
||||
assertTrue(scheduler.queue.contains(t2));
|
||||
assertTrue(scheduler.queue.contains(t3));
|
||||
verify(manager).saveQueueDebounced();
|
||||
}
|
||||
|
||||
@Test
|
||||
void isRepeating_defaultFalse() {
|
||||
assertFalse(scheduler.isRepeating());
|
||||
}
|
||||
|
||||
@Test
|
||||
void setRepeating_toggles() {
|
||||
scheduler.setRepeating(true);
|
||||
assertTrue(scheduler.isRepeating());
|
||||
scheduler.setRepeating(false);
|
||||
assertFalse(scheduler.isRepeating());
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue