diff --git a/src/test/kotlin/dartzee/screen/game/TestDartsGameScreen.kt b/src/test/kotlin/dartzee/screen/game/TestDartsGameScreen.kt index cbf3d187..7e53fa8e 100644 --- a/src/test/kotlin/dartzee/screen/game/TestDartsGameScreen.kt +++ b/src/test/kotlin/dartzee/screen/game/TestDartsGameScreen.kt @@ -1,13 +1,22 @@ package dartzee.screen.game +import com.github.alyssaburlton.swingtest.findChild +import com.github.alyssaburlton.swingtest.getChild import dartzee.achievements.x01.AchievementX01BestGame +import dartzee.clickButton +import dartzee.core.helper.verifyNotCalled import dartzee.helper.AbstractTest import dartzee.helper.insertGame import dartzee.screen.ScreenCache +import dartzee.utils.InjectedThings +import io.kotest.matchers.nulls.shouldBeNull +import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.shouldBe +import io.kotest.matchers.shouldNotBe import io.mockk.mockk import io.mockk.verify import org.junit.jupiter.api.Test +import java.awt.Frame class TestDartsGameScreen : AbstractTest() { @Test @@ -37,4 +46,36 @@ class TestDartsGameScreen : AbstractTest() { scrn.achievementUnlocked("foo", "bar", achievement) verify { scrn.gamePanel.achievementUnlocked("bar", achievement) } } + + @Test + fun `Should maximise and show the tutorial if in party mode, and not start a new game`() { + InjectedThings.partyMode = true + + val game = insertGame() + val scrn = DartsGameScreen(game, listOf(makeSingleParticipant())) + scrn.gamePanel = mockk(relaxed = true) + scrn.findChild>() shouldBe null + scrn.findChild() shouldNotBe null + scrn.extendedState shouldBe Frame.MAXIMIZED_BOTH + + scrn.startNewGame() + verifyNotCalled { scrn.gamePanel.startNewGame(any()) } + } + + @Test + fun `Should start the game when tutorial ready button is pressed`() { + InjectedThings.partyMode = true + + val participants = listOf(makeSingleParticipant()) + + val game = insertGame() + val scrn = DartsGameScreen(game, participants) + scrn.gamePanel = mockk(relaxed = true) + + scrn.getChild().clickButton(text = "I'm ready - let's play!") + verify { scrn.gamePanel.startNewGame(participants) } + + scrn.findChild().shouldBeNull() + scrn.findChild>().shouldNotBeNull() + } }