1+ package me .touchie771 .minecraftGUI .api .presets ;
2+
3+ import be .seeseemelk .mockbukkit .MockBukkit ;
4+ import be .seeseemelk .mockbukkit .ServerMock ;
5+ import be .seeseemelk .mockbukkit .entity .PlayerMock ;
6+ import me .touchie771 .minecraftGUI .api .Menu ;
7+ import net .kyori .adventure .text .Component ;
8+ import org .bukkit .Material ;
9+ import org .bukkit .plugin .Plugin ;
10+ import org .junit .jupiter .api .AfterEach ;
11+ import org .junit .jupiter .api .BeforeEach ;
12+ import org .junit .jupiter .api .Test ;
13+
14+ import java .util .concurrent .atomic .AtomicBoolean ;
15+
16+ import static org .junit .jupiter .api .Assertions .*;
17+
18+ class ConfirmationMenuTest {
19+
20+ private ServerMock server ;
21+ private Plugin plugin ;
22+ private PlayerMock player ;
23+
24+ @ BeforeEach
25+ void setUp () {
26+ server = MockBukkit .mock ();
27+ plugin = MockBukkit .createMockPlugin ();
28+ player = server .addPlayer ();
29+ }
30+
31+ @ AfterEach
32+ void tearDown () {
33+ MockBukkit .unmock ();
34+ }
35+
36+ @ Test
37+ void testConfirmationMenuCreation () {
38+ Menu menu = ConfirmationMenu .create (plugin , Component .text ("Confirm?" ), () -> {}, () -> {});
39+
40+ assertNotNull (menu );
41+ assertEquals (27 , menu .getInventory ().getSize ());
42+
43+ // Check Items
44+ assertNotNull (menu .getInventory ().getItem (11 ));
45+ assertEquals (Material .LIME_WOOL , menu .getInventory ().getItem (11 ).getType ());
46+
47+ assertNotNull (menu .getInventory ().getItem (15 ));
48+ assertEquals (Material .RED_WOOL , menu .getInventory ().getItem (15 ).getType ());
49+ }
50+
51+ @ Test
52+ void testConfirmClick () {
53+ AtomicBoolean confirmed = new AtomicBoolean (false );
54+ AtomicBoolean canceled = new AtomicBoolean (false );
55+
56+ Menu menu = ConfirmationMenu .create (plugin , Component .text ("Confirm?" ),
57+ () -> confirmed .set (true ),
58+ () -> canceled .set (true )
59+ );
60+
61+ player .openInventory (menu .getInventory ());
62+
63+ // Simulate click on Confirm (slot 11)
64+ player .simulateInventoryClick (player .getOpenInventory (), 11 );
65+
66+ assertTrue (confirmed .get (), "Confirm runnable should be executed" );
67+ assertFalse (canceled .get (), "Cancel runnable should NOT be executed" );
68+ }
69+
70+ @ Test
71+ void testCancelClick () {
72+ AtomicBoolean confirmed = new AtomicBoolean (false );
73+ AtomicBoolean canceled = new AtomicBoolean (false );
74+
75+ Menu menu = ConfirmationMenu .create (plugin , Component .text ("Confirm?" ),
76+ () -> confirmed .set (true ),
77+ () -> canceled .set (true )
78+ );
79+
80+ player .openInventory (menu .getInventory ());
81+
82+ // Simulate click on Cancel (slot 15)
83+ player .simulateInventoryClick (player .getOpenInventory (), 15 );
84+
85+ assertFalse (confirmed .get (), "Confirm runnable should NOT be executed" );
86+ assertTrue (canceled .get (), "Cancel runnable should be executed" );
87+ }
88+ }
0 commit comments