From b239c8692aea1eab07522b73dbc89c3e652104ff Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Tue, 26 Jul 2016 22:27:57 +0200 Subject: [PATCH] Fix bug with not correctly resolved payment account --- .../payment/BankAccountContractData.java | 2 +- .../bitsquare/payment/PaymentAccountUtil.java | 91 +++++++++++++++++++ .../offer/offerbook/OfferBookViewModel.java | 72 +-------------- .../offer/takeoffer/TakeOfferDataModel.java | 16 +--- .../main/offer/takeoffer/TakeOfferView.java | 4 +- .../overlays/windows/OfferDetailsWindow.java | 11 ++- .../offerbook/OfferBookViewModelTest.java | 44 ++++----- 7 files changed, 129 insertions(+), 111 deletions(-) create mode 100644 core/src/main/java/io/bitsquare/payment/PaymentAccountUtil.java diff --git a/core/src/main/java/io/bitsquare/payment/BankAccountContractData.java b/core/src/main/java/io/bitsquare/payment/BankAccountContractData.java index f6ddffdf46..14c85f6286 100644 --- a/core/src/main/java/io/bitsquare/payment/BankAccountContractData.java +++ b/core/src/main/java/io/bitsquare/payment/BankAccountContractData.java @@ -97,7 +97,7 @@ public abstract class BankAccountContractData extends CountryBasedPaymentAccount @Nullable public String getBankId() { - return bankId; + return BankUtil.isBankIdRequired(countryCode) ? bankId : bankName; } public void setBranchId(String branchId) { diff --git a/core/src/main/java/io/bitsquare/payment/PaymentAccountUtil.java b/core/src/main/java/io/bitsquare/payment/PaymentAccountUtil.java new file mode 100644 index 0000000000..ec611d6949 --- /dev/null +++ b/core/src/main/java/io/bitsquare/payment/PaymentAccountUtil.java @@ -0,0 +1,91 @@ +package io.bitsquare.payment; + +import io.bitsquare.locale.TradeCurrency; +import io.bitsquare.trade.offer.Offer; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Collection; +import java.util.Set; +import java.util.stream.Collectors; + +import static com.google.common.base.Preconditions.checkNotNull; + +public class PaymentAccountUtil { + private static final Logger log = LoggerFactory.getLogger(PaymentAccountUtil.class); + + public static boolean isAnyPaymentAccountValidForOffer(Offer offer, Collection paymentAccounts) { + for (PaymentAccount paymentAccount : paymentAccounts) { + if (isPaymentAccountValidForOffer(offer, paymentAccount)) + return true; + } + return false; + } + + public static ObservableList getPossiblePaymentAccounts(Offer offer, Set paymentAccounts) { + ObservableList result = FXCollections.observableArrayList(); + for (PaymentAccount paymentAccount : paymentAccounts) { + if (isPaymentAccountValidForOffer(offer, paymentAccount)) + result.add(paymentAccount); + } + return result; + } + + //TODO not tested with all combinations yet.... + public static boolean isPaymentAccountValidForOffer(Offer offer, PaymentAccount paymentAccount) { + // check if we have a matching currency + Set paymentAccountCurrencyCodes = paymentAccount.getTradeCurrencies().stream().map(TradeCurrency::getCode).collect(Collectors.toSet()); + boolean matchesCurrencyCode = paymentAccountCurrencyCodes.contains(offer.getCurrencyCode()); + if (!matchesCurrencyCode) + return false; + + // check if we have a matching payment method or if its a bank account payment method which is treated special + if (paymentAccount instanceof CountryBasedPaymentAccount) { + CountryBasedPaymentAccount countryBasedPaymentAccount = (CountryBasedPaymentAccount) paymentAccount; + + // check if we have a matching country + boolean matchesCountryCodes = offer.getAcceptedCountryCodes() != null && countryBasedPaymentAccount.getCountry() != null && + offer.getAcceptedCountryCodes().contains(countryBasedPaymentAccount.getCountry().code); + if (!matchesCountryCodes) + return false; + + if (paymentAccount instanceof SepaAccount || offer.getPaymentMethod().equals(PaymentMethod.SEPA)) { + boolean samePaymentMethod = paymentAccount.getPaymentMethod().equals(offer.getPaymentMethod()); + return samePaymentMethod; + } else if (offer.getPaymentMethod().equals(PaymentMethod.SAME_BANK) || + offer.getPaymentMethod().equals(PaymentMethod.SPECIFIC_BANKS)) { + + checkNotNull(offer.getAcceptedBankIds(), "offer.getAcceptedBankIds() must not be null"); + if (paymentAccount instanceof SpecificBanksAccount) { + // check if we have a matching bank + boolean offerSideMatchesBank = offer.getAcceptedBankIds().contains(((BankAccount) paymentAccount).getBankId()); + boolean paymentAccountSideMatchesBank = ((SpecificBanksAccount) paymentAccount).getAcceptedBanks().contains(offer.getBankId()); + return offerSideMatchesBank && paymentAccountSideMatchesBank; + } else { + // national or same bank + boolean matchesBank = offer.getAcceptedBankIds().contains(((BankAccount) paymentAccount).getBankId()); + return matchesBank; + } + } else { + if (paymentAccount instanceof SpecificBanksAccount) { + // check if we have a matching bank + boolean paymentAccountSideMatchesBank = ((SpecificBanksAccount) paymentAccount).getAcceptedBanks().contains(offer.getBankId()); + return paymentAccountSideMatchesBank; + } else if (paymentAccount instanceof SameBankAccount) { + // check if we have a matching bank + boolean paymentAccountSideMatchesBank = ((SameBankAccount) paymentAccount).getBankId().equals(offer.getBankId()); + return paymentAccountSideMatchesBank; + } else { + // national + return true; + } + } + + } else { + return paymentAccount.getPaymentMethod().equals(offer.getPaymentMethod()); + } + } + +} diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookViewModel.java index 351f831641..89bd568adc 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookViewModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookViewModel.java @@ -33,7 +33,8 @@ import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.locale.*; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.P2PService; -import io.bitsquare.payment.*; +import io.bitsquare.payment.PaymentAccountUtil; +import io.bitsquare.payment.PaymentMethod; import io.bitsquare.trade.Trade; import io.bitsquare.trade.closed.ClosedTradableManager; import io.bitsquare.trade.offer.Offer; @@ -53,13 +54,9 @@ import org.bitcoinj.utils.Fiat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Collection; import java.util.List; -import java.util.Set; import java.util.stream.Collectors; -import static com.google.common.base.Preconditions.checkNotNull; - class OfferBookViewModel extends ActivatableViewModel { protected final static Logger log = LoggerFactory.getLogger(OfferBookViewModel.class); @@ -358,70 +355,7 @@ class OfferBookViewModel extends ActivatableViewModel { } boolean isAnyPaymentAccountValidForOffer(Offer offer) { - return isAnyPaymentAccountValidForOffer(offer, user.getPaymentAccounts()); - } - - static boolean isAnyPaymentAccountValidForOffer(Offer offer, Collection paymentAccounts) { - for (PaymentAccount paymentAccount : paymentAccounts) { - if (isPaymentAccountValidForOffer(offer, paymentAccount)) - return true; - } - return false; - } - - //TODO not tested with all combinations yet.... - static boolean isPaymentAccountValidForOffer(Offer offer, PaymentAccount paymentAccount) { - // check if we have a matching currency - Set paymentAccountCurrencyCodes = paymentAccount.getTradeCurrencies().stream().map(TradeCurrency::getCode).collect(Collectors.toSet()); - boolean matchesCurrencyCode = paymentAccountCurrencyCodes.contains(offer.getCurrencyCode()); - if (!matchesCurrencyCode) - return false; - - // check if we have a matching payment method or if its a bank account payment method which is treated special - if (paymentAccount instanceof CountryBasedPaymentAccount) { - CountryBasedPaymentAccount countryBasedPaymentAccount = (CountryBasedPaymentAccount) paymentAccount; - - // check if we have a matching country - boolean matchesCountryCodes = offer.getAcceptedCountryCodes() != null && countryBasedPaymentAccount.getCountry() != null && - offer.getAcceptedCountryCodes().contains(countryBasedPaymentAccount.getCountry().code); - if (!matchesCountryCodes) - return false; - - if (paymentAccount instanceof SepaAccount || offer.getPaymentMethod().equals(PaymentMethod.SEPA)) { - boolean samePaymentMethod = paymentAccount.getPaymentMethod().equals(offer.getPaymentMethod()); - return samePaymentMethod; - } else if (offer.getPaymentMethod().equals(PaymentMethod.SAME_BANK) || - offer.getPaymentMethod().equals(PaymentMethod.SPECIFIC_BANKS)) { - - checkNotNull(offer.getAcceptedBankIds(), "offer.getAcceptedBankIds() must not be null"); - if (paymentAccount instanceof SpecificBanksAccount) { - // check if we have a matching bank - boolean offerSideMatchesBank = offer.getAcceptedBankIds().contains(((BankAccount) paymentAccount).getBankId()); - boolean paymentAccountSideMatchesBank = ((SpecificBanksAccount) paymentAccount).getAcceptedBanks().contains(offer.getBankId()); - return offerSideMatchesBank && paymentAccountSideMatchesBank; - } else { - // national or same bank - boolean matchesBank = offer.getAcceptedBankIds().contains(((BankAccount) paymentAccount).getBankId()); - return matchesBank; - } - } else { - if (paymentAccount instanceof SpecificBanksAccount) { - // check if we have a matching bank - boolean paymentAccountSideMatchesBank = ((SpecificBanksAccount) paymentAccount).getAcceptedBanks().contains(offer.getBankId()); - return paymentAccountSideMatchesBank; - } else if (paymentAccount instanceof SameBankAccount) { - // check if we have a matching bank - boolean paymentAccountSideMatchesBank = ((SameBankAccount) paymentAccount).getBankId().equals(offer.getBankId()); - return paymentAccountSideMatchesBank; - } else { - // national - return true; - } - } - - } else { - return paymentAccount.getPaymentMethod().equals(offer.getPaymentMethod()); - } + return PaymentAccountUtil.isAnyPaymentAccountValidForOffer(offer, user.getPaymentAccounts()); } public boolean hasPaymentAccountForCurrency() { diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferDataModel.java index 6a47e9c5c5..2c09a20fd9 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferDataModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferDataModel.java @@ -32,8 +32,8 @@ import io.bitsquare.gui.main.overlays.notifications.Notification; import io.bitsquare.gui.main.overlays.popups.Popup; import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.locale.CurrencyUtil; -import io.bitsquare.locale.TradeCurrency; import io.bitsquare.payment.PaymentAccount; +import io.bitsquare.payment.PaymentAccountUtil; import io.bitsquare.payment.PaymentMethod; import io.bitsquare.trade.TradeManager; import io.bitsquare.trade.handlers.TradeResultHandler; @@ -41,14 +41,12 @@ import io.bitsquare.trade.offer.Offer; import io.bitsquare.user.Preferences; import io.bitsquare.user.User; import javafx.beans.property.*; -import javafx.collections.FXCollections; import javafx.collections.ObservableList; import org.bitcoinj.core.Coin; import org.bitcoinj.core.Transaction; import org.bitcoinj.utils.ExchangeRate; import org.bitcoinj.utils.Fiat; -import java.util.ArrayList; import java.util.List; import static com.google.common.base.Preconditions.checkArgument; @@ -271,17 +269,7 @@ class TakeOfferDataModel extends ActivatableDataModel { } ObservableList getPossiblePaymentAccounts() { - ObservableList paymentAccounts = FXCollections.observableArrayList(new ArrayList<>()); - for (PaymentAccount paymentAccount : user.getPaymentAccounts()) { - if (paymentAccount.getPaymentMethod().equals(offer.getPaymentMethod())) { - for (TradeCurrency tradeCurrency : paymentAccount.getTradeCurrencies()) { - if (tradeCurrency.getCode().equals(offer.getCurrencyCode())) { - paymentAccounts.add(paymentAccount); - } - } - } - } - return paymentAccounts; + return PaymentAccountUtil.getPossiblePaymentAccounts(offer, user.getPaymentAccounts()); } boolean hasAcceptedArbitrators() { diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java index ca75e51485..1e2d99172a 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java @@ -192,8 +192,8 @@ public class TakeOfferView extends ActivatableViewAndModel onShowPayFundsScreen(), 200, TimeUnit.MILLISECONDS); + /* if (DevFlags.DEV_MODE) + UserThread.runAfter(() -> onShowPayFundsScreen(), 200, TimeUnit.MILLISECONDS);*/ } @Override diff --git a/gui/src/main/java/io/bitsquare/gui/main/overlays/windows/OfferDetailsWindow.java b/gui/src/main/java/io/bitsquare/gui/main/overlays/windows/OfferDetailsWindow.java index 9456842cdc..f7a5891b60 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/overlays/windows/OfferDetailsWindow.java +++ b/gui/src/main/java/io/bitsquare/gui/main/overlays/windows/OfferDetailsWindow.java @@ -32,6 +32,7 @@ import io.bitsquare.gui.main.overlays.popups.Popup; import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.gui.util.Layout; import io.bitsquare.locale.BSResources; +import io.bitsquare.locale.BankUtil; import io.bitsquare.locale.CountryUtil; import io.bitsquare.locale.CurrencyUtil; import io.bitsquare.payment.PaymentAccount; @@ -205,10 +206,14 @@ public class OfferDetailsWindow extends Overlay { addLabelTextField(gridPane, ++rowIndex, "Payment account:", paymentAccount.getAccountName()); } else { final String method = BSResources.get(paymentMethod.getId()); - if (isNationalBanks || isSpecificBanks) - addLabelTextField(gridPane, ++rowIndex, "Payment method (offerers bank ID):", method + " (" + bankId + ")"); - else + if (isNationalBanks || isSpecificBanks) { + if (BankUtil.isBankIdRequired(offer.getCountryCode())) + addLabelTextField(gridPane, ++rowIndex, "Payment method (offerers bank ID):", method + " (" + bankId + ")"); + else if (BankUtil.isBankNameRequired(offer.getCountryCode())) + addLabelTextField(gridPane, ++rowIndex, "Payment method (offerers bank name):", method + " (" + bankId + ")"); + } else { addLabelTextField(gridPane, ++rowIndex, "Payment method:", method); + } } if (showAcceptedBanks) { if (paymentMethod.equals(PaymentMethod.SAME_BANK)) { diff --git a/gui/src/test/java/io/bitsquare/gui/main/offer/offerbook/OfferBookViewModelTest.java b/gui/src/test/java/io/bitsquare/gui/main/offer/offerbook/OfferBookViewModelTest.java index 21e92daeb3..d72cbf3a71 100644 --- a/gui/src/test/java/io/bitsquare/gui/main/offer/offerbook/OfferBookViewModelTest.java +++ b/gui/src/test/java/io/bitsquare/gui/main/offer/offerbook/OfferBookViewModelTest.java @@ -25,44 +25,44 @@ public class OfferBookViewModelTest { Collection paymentAccounts; paymentAccounts = new ArrayList<>(Arrays.asList(getSepaAccount("EUR", "DE", "1212324", new ArrayList<>(Arrays.asList("AT", "DE"))))); - assertTrue(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertTrue(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getSEPAPaymentMethod("EUR", "AT", new ArrayList(Arrays.asList("AT", "DE")), "PSK"), paymentAccounts)); // empty paymentAccounts paymentAccounts = new ArrayList<>(); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer(getSEPAPaymentMethod("EUR", "AT", new ArrayList(Arrays.asList("AT", "DE")), "PSK"), paymentAccounts)); + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer(getSEPAPaymentMethod("EUR", "AT", new ArrayList(Arrays.asList("AT", "DE")), "PSK"), paymentAccounts)); // simple cases: same payment methods // offer: okpay paymentAccount: okpay - same country, same currency paymentAccounts = new ArrayList<>(Arrays.asList(getOKPayAccount("EUR"))); - assertTrue(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertTrue(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getOKPayPaymentMethod("EUR"), paymentAccounts)); // offer: ether paymentAccount: ether - same country, same currency paymentAccounts = new ArrayList<>(Arrays.asList(getCryptoAccount("ETH"))); - assertTrue(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertTrue(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getBlockChainsPaymentMethod("ETH"), paymentAccounts)); // offer: sepa paymentAccount: sepa - same country, same currency paymentAccounts = new ArrayList<>(Arrays.asList(getSepaAccount("EUR", "AT", "1212324", new ArrayList<>(Arrays.asList("AT", "DE"))))); - assertTrue(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertTrue(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getSEPAPaymentMethod("EUR", "AT", new ArrayList(Arrays.asList("AT", "DE")), "PSK"), paymentAccounts)); // offer: nationalBank paymentAccount: nationalBank - same country, same currency paymentAccounts = new ArrayList<>(Arrays.asList(getNationalBankAccount("EUR", "AT", "PSK"))); - assertTrue(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertTrue(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // offer: SameBank paymentAccount: SameBank - same country, same currency paymentAccounts = new ArrayList<>(Arrays.asList(getSameBankAccount("EUR", "AT", "PSK"))); - assertTrue(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertTrue(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getSameBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // offer: sepa paymentAccount: sepa - diff. country, same currency paymentAccounts = new ArrayList<>(Arrays.asList(getSepaAccount("EUR", "DE", "1212324", new ArrayList<>(Arrays.asList("AT", "DE"))))); - assertTrue(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertTrue(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getSEPAPaymentMethod("EUR", "AT", new ArrayList(Arrays.asList("AT", "DE")), "PSK"), paymentAccounts)); @@ -70,79 +70,79 @@ public class OfferBookViewModelTest { // offer: sepa paymentAccount: sepa - same country, same currency paymentAccounts = new ArrayList<>(Arrays.asList(getSepaAccount("EUR", "AT", "1212324", new ArrayList<>(Arrays.asList("AT", "DE"))))); - assertTrue(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertTrue(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getSEPAPaymentMethod("EUR", "AT", new ArrayList(Arrays.asList("AT", "DE")), "PSK"), paymentAccounts)); // offer: sepa paymentAccount: nationalBank - same country, same currency // wrong method paymentAccounts = new ArrayList<>(Arrays.asList(getNationalBankAccount("EUR", "AT", "PSK"))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getSEPAPaymentMethod("EUR", "AT", new ArrayList(Arrays.asList("AT", "DE")), "PSK"), paymentAccounts)); // wrong currency paymentAccounts = new ArrayList<>(Arrays.asList(getNationalBankAccount("USD", "US", "XXX"))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // wrong country paymentAccounts = new ArrayList<>(Arrays.asList(getNationalBankAccount("EUR", "FR", "PSK"))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // sepa wrong country paymentAccounts = new ArrayList<>(Arrays.asList(getNationalBankAccount("EUR", "CH", "PSK"))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getSEPAPaymentMethod("EUR", "AT", new ArrayList(Arrays.asList("AT", "DE")), "PSK"), paymentAccounts)); // sepa wrong currency paymentAccounts = new ArrayList<>(Arrays.asList(getNationalBankAccount("CHF", "DE", "PSK"))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getSEPAPaymentMethod("EUR", "AT", new ArrayList(Arrays.asList("AT", "DE")), "PSK"), paymentAccounts)); // same bank paymentAccounts = new ArrayList<>(Arrays.asList(getSameBankAccount("EUR", "AT", "PSK"))); - assertTrue(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertTrue(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // not same bank paymentAccounts = new ArrayList<>(Arrays.asList(getSameBankAccount("EUR", "AT", "Raika"))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // same bank, wrong country paymentAccounts = new ArrayList<>(Arrays.asList(getSameBankAccount("EUR", "DE", "PSK"))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // same bank, wrong currency paymentAccounts = new ArrayList<>(Arrays.asList(getSameBankAccount("USD", "AT", "PSK"))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // spec. bank paymentAccounts = new ArrayList<>(Arrays.asList(getSpecificBanksAccount("EUR", "AT", "PSK", new ArrayList<>(Arrays.asList("PSK", "Raika"))))); - assertTrue(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertTrue(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // spec. bank, missing bank paymentAccounts = new ArrayList<>(Arrays.asList(getSpecificBanksAccount("EUR", "AT", "PSK", new ArrayList<>(Arrays.asList("Raika"))))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // spec. bank, wrong country paymentAccounts = new ArrayList<>(Arrays.asList(getSpecificBanksAccount("EUR", "FR", "PSK", new ArrayList<>(Arrays.asList("PSK", "Raika"))))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); // spec. bank, wrong currency paymentAccounts = new ArrayList<>(Arrays.asList(getSpecificBanksAccount("USD", "AT", "PSK", new ArrayList<>(Arrays.asList("PSK", "Raika"))))); - assertFalse(OfferBookViewModel.isAnyPaymentAccountValidForOffer( + assertFalse(PaymentAccountUtil.isAnyPaymentAccountValidForOffer( getNationalBankPaymentMethod("EUR", "AT", "PSK"), paymentAccounts)); //TODO add more tests