| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package cz.davza.studentadventure.commands;
- import cz.davza.studentadventure.Items.EnergyDrink;
- import cz.davza.studentadventure.TestHelpers;
- import cz.davza.studentadventure.enums.CommandState;
- import cz.davza.studentadventure.objects.CommandResult;
- import cz.davza.studentadventure.objects.GameData;
- import cz.davza.studentadventure.objects.Player;
- import org.junit.jupiter.api.BeforeEach;
- import org.junit.jupiter.api.Test;
- import static cz.davza.studentadventure.TestHelpers.execute;
- import static org.junit.jupiter.api.Assertions.*;
- class BuyCommandTest {
- private GameData context;
- private Player player;
- @BeforeEach
- void setUp() {
- context = TestHelpers.buildGameData();
- player = context.getPlayer();
- }
- @Test
- void buyEnergyDrinkDeductsCost() {
- int before = player.getWallet().getMoney();
- execute("buy energy_drink", context);
- assertEquals(before - EnergyDrink.COST, player.getWallet().getMoney());
- }
- @Test
- void buyEnergyDrinkAddsToInventory() {
- execute("buy energy_drink", context);
- assertNotNull(player.getInventory().GetByItemCode("energy_drink"));
- }
- @Test
- void buyReturnsSuccessState() {
- CommandResult result = execute("buy energy_drink", context);
- assertEquals(CommandState.SUCCESS, result.getResultState());
- }
- @Test
- void buyWithInsufficientFundsReturnsFailed() {
- player.getWallet().spendMoney(player.getWallet().getMoney()); // drain wallet
- CommandResult result = execute("buy energy_drink", context);
- assertEquals(CommandState.FAILED, result.getResultState());
- }
- @Test
- void buyWithInsufficientFundsDoesNotAddItem() {
- player.getWallet().spendMoney(player.getWallet().getMoney());
- execute("buy energy_drink", context);
- assertNull(player.getInventory().GetByItemCode("energy_drink"));
- }
- @Test
- void buyUnknownItemReturnsFailed() {
- CommandResult result = execute("buy sandwich", context);
- assertEquals(CommandState.FAILED, result.getResultState());
- }
- @Test
- void buyWithNoParamsReturnsInvalidParams() {
- CommandResult result = execute("buy", context);
- assertEquals(CommandState.INVALID_PARAMS, result.getResultState());
- }
- @Test
- void buyWhenInventoryFullReturnsInventoryFull() {
- // Fill inventory: capacity 20, drink bulk 2 → 10 drinks = 20 bulk
- player.getInventory().Add(new EnergyDrink(), 10);
- CommandResult result = execute("buy energy_drink", context);
- assertEquals(CommandState.INVENTORY_FULL, result.getResultState());
- }
- @Test
- void buyDoesNotSpendMoneyWhenInventoryFull() {
- player.getInventory().Add(new EnergyDrink(), 10);
- int moneyBefore = player.getWallet().getMoney();
- execute("buy energy_drink", context);
- assertEquals(moneyBefore, player.getWallet().getMoney());
- }
- }
|