Skip to content

Commit

Permalink
Add all argument
Browse files Browse the repository at this point in the history
  • Loading branch information
DevSolaris committed Jan 20, 2023
1 parent 6b06fbb commit 9c0e8a8
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@
import org.apache.commons.lang.math.NumberUtils;

import world.bentobox.bank.Bank;
import world.bentobox.bank.data.BankAccounts;
import world.bentobox.bank.data.Money;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.hooks.VaultHook;
import world.bentobox.bentobox.util.Util;

/**
Expand Down Expand Up @@ -110,16 +112,27 @@ protected boolean checkArgs(User user, List<String> args, RequestType type) {
if (args.isEmpty() || (!isUser && args.size() == 1)) return true;
// Check value
String v = args.get(args.size() - 1);
if (!NumberUtils.isNumber(v)) {
if (!NumberUtils.isNumber(v) && !v.equalsIgnoreCase("all")) {
user.sendMessage("bank.errors.must-be-a-number");
return false;
}
return parseValue(user, v);
return parseValue(user, v, type);
}

protected boolean parseValue(User user, String arg) {
protected boolean parseValue(User user, String arg, RequestType type) {
try {
value = Money.parseMoney(arg);
if(arg.equalsIgnoreCase("all")) {
if(type.equals(RequestType.USER_DEPOSIT)) {
VaultHook vault = addon.getVault();

value = new Money(vault.getBalance(user, getWorld()));
} else if(type.equals(RequestType.USER_WITHDRAWAL)) {
value = new Money(addon.getBankManager().getBalance(user, getWorld()).getValue());
}

} else {
value = Money.parseMoney(arg);
}
} catch (Exception e) {
if (e.getMessage().startsWith("bank")) {
user.sendMessage(e.getMessage());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,6 @@ public boolean execute(User user, String label, List<String> args) {
public Optional<List<String>> tabComplete(User user, String alias, List<String> args) {
VaultHook vault = addon.getVault();
String balance = String.valueOf(vault.getBalance(user, getWorld()));
return Optional.of(Collections.singletonList(balance));
return Optional.of(List.of(balance, "all"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public boolean execute(User user, String label, List<String> args) {
@Override
public Optional<List<String>> tabComplete(User user, String alias, List<String> args) {
String balance = String.valueOf(addon.getBankManager().getBalance(user, getWorld()).getValue());
return Optional.of(Collections.singletonList(balance));
return Optional.of(List.of(balance, "all"));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,16 @@ public void testCanExecuteOneArgNumberNoIsland() {
verify(user).sendMessage(eq("general.errors.no-island"));
}

/**
* Test method for {@link world.bentobox.bank.commands.user.DepositCommand#canExecute(world.bentobox.bentobox.api.user.User, java.lang.String, java.util.List)}.
*/
@Test
public void testCanExecuteAllSuccess() {
when(bankManager.getBalance(eq(user), eq(world))).thenReturn(new Money(555D));
assertTrue(dct.canExecute(user, "deposit", Collections.singletonList("all")));
verify(user, never()).sendMessage(any());
}

/**
* Test method for {@link world.bentobox.bank.commands.user.DepositCommand#canExecute(world.bentobox.bentobox.api.user.User, java.lang.String, java.util.List)}.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,17 @@ public void testCanExecuteOneArgNumberLowBalance() {
verify(user).sendMessage(eq("bank.errors.low-balance"));
}

/**
* Test method for {@link world.bentobox.bank.commands.user.WithdrawCommand#canExecute(world.bentobox.bentobox.api.user.User, java.lang.String, java.util.List)}.
*/
@Test
public void testCanExecuteAllArg() {
when(bankManager.getBalance(eq(user), eq(world))).thenReturn(new Money(555D));
assertTrue(wct.canExecute(user, "withdraw", Collections.singletonList("all")));
verify(user, never()).sendMessage(eq("bank.errors.must-be-a-number"));
verify(user, never()).sendMessage(any());
}

/**
* Test method for {@link world.bentobox.bank.commands.user.WithdrawCommand#canExecute(world.bentobox.bentobox.api.user.User, java.lang.String, java.util.List)}.
*/
Expand Down

0 comments on commit 9c0e8a8

Please sign in to comment.