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
|
@Test
|
||||||
void withColor() {
|
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());
|
assertEquals(Color.RED.getRGB(), embed.getColorRaw());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -136,8 +136,8 @@ class EmbedFactoryTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void emptyBuilder() {
|
void emptyBuilder() {
|
||||||
MessageEmbed embed = EmbedFactory.create().build();
|
MessageEmbed embed = EmbedFactory.create().withTitle("x").build();
|
||||||
assertNotNull(embed);
|
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