mirror of
https://github.com/bisq-network/bisq.git
synced 2024-11-20 02:12:00 +01:00
implemented unit test for ReceiptValidator
This commit is contained in:
parent
cadaac15e9
commit
0561e8e4cb
@ -31,7 +31,7 @@ class ReceiptPredicates {
|
|||||||
return arePaymentMethodsEqual;
|
return arePaymentMethodsEqual;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isSameOrSpecificBank(Offer offer, PaymentAccount account) {
|
boolean isOfferRequireSameOrSpecificBank(Offer offer, PaymentAccount account) {
|
||||||
PaymentMethod paymentMethod = offer.getPaymentMethod();
|
PaymentMethod paymentMethod = offer.getPaymentMethod();
|
||||||
boolean isSameOrSpecificBank = paymentMethod.equals(PaymentMethod.SAME_BANK)
|
boolean isSameOrSpecificBank = paymentMethod.equals(PaymentMethod.SAME_BANK)
|
||||||
|| paymentMethod.equals(PaymentMethod.SPECIFIC_BANKS);
|
|| paymentMethod.equals(PaymentMethod.SPECIFIC_BANKS);
|
||||||
|
@ -13,11 +13,14 @@ class ReceiptValidator {
|
|||||||
private final PaymentAccount account;
|
private final PaymentAccount account;
|
||||||
private final Offer offer;
|
private final Offer offer;
|
||||||
|
|
||||||
|
|
||||||
ReceiptValidator(Offer offer, PaymentAccount account) {
|
ReceiptValidator(Offer offer, PaymentAccount account) {
|
||||||
this.account = account;
|
this(offer, account, new ReceiptPredicates());
|
||||||
|
}
|
||||||
|
|
||||||
|
ReceiptValidator(Offer offer, PaymentAccount account, ReceiptPredicates predicates) {
|
||||||
this.offer = offer;
|
this.offer = offer;
|
||||||
this.predicates = new ReceiptPredicates();
|
this.account = account;
|
||||||
|
this.predicates = predicates;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isValid() {
|
boolean isValid() {
|
||||||
@ -38,14 +41,14 @@ class ReceiptValidator {
|
|||||||
// We have same country
|
// We have same country
|
||||||
if (predicates.isSepaRelated(offer, account)) {
|
if (predicates.isSepaRelated(offer, account)) {
|
||||||
return isEqualPaymentMethods;
|
return isEqualPaymentMethods;
|
||||||
} else if (predicates.isSameOrSpecificBank(offer, account)) {
|
} else if (predicates.isOfferRequireSameOrSpecificBank(offer, account)) {
|
||||||
return isValidForSameOrSpecificBankAccount();
|
return isValidWhenOfferRequireSameOrSpecificBank();
|
||||||
} else {
|
} else {
|
||||||
return isValidByType();
|
return isValidByType();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isValidForSameOrSpecificBankAccount() {
|
private boolean isValidWhenOfferRequireSameOrSpecificBank() {
|
||||||
final List<String> acceptedBanksForOffer = offer.getAcceptedBankIds();
|
final List<String> acceptedBanksForOffer = offer.getAcceptedBankIds();
|
||||||
Preconditions.checkNotNull(acceptedBanksForOffer, "offer.getAcceptedBankIds() must not be null");
|
Preconditions.checkNotNull(acceptedBanksForOffer, "offer.getAcceptedBankIds() must not be null");
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ public class ReceiptPredicatesTest {
|
|||||||
Offer offer = mock(Offer.class);
|
Offer offer = mock(Offer.class);
|
||||||
when(offer.getPaymentMethod()).thenReturn(PaymentMethod.SAME_BANK);
|
when(offer.getPaymentMethod()).thenReturn(PaymentMethod.SAME_BANK);
|
||||||
|
|
||||||
assertTrue(predicates.isSameOrSpecificBank(offer, mock(NationalBankAccount.class)));
|
assertTrue(predicates.isOfferRequireSameOrSpecificBank(offer, mock(NationalBankAccount.class)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -0,0 +1,170 @@
|
|||||||
|
package io.bisq.core.payment;
|
||||||
|
|
||||||
|
import io.bisq.core.offer.Offer;
|
||||||
|
import io.bisq.core.payment.payload.PaymentMethod;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||||
|
import org.powermock.modules.junit4.PowerMockRunner;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
@RunWith(PowerMockRunner.class)
|
||||||
|
@PrepareForTest({SpecificBanksAccount.class, SameBankAccount.class, NationalBankAccount.class,
|
||||||
|
WesternUnionAccount.class, PaymentMethod.class})
|
||||||
|
public class ReceiptValidatorTest {
|
||||||
|
private ReceiptValidator validator;
|
||||||
|
private PaymentAccount account;
|
||||||
|
private Offer offer;
|
||||||
|
private ReceiptPredicates predicates;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
this.predicates = mock(ReceiptPredicates.class);
|
||||||
|
this.account = mock(CountryBasedPaymentAccount.class);
|
||||||
|
this.offer = mock(Offer.class);
|
||||||
|
this.validator = new ReceiptValidator(offer, account, predicates);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenCurrencyDoesNotMatch() {
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(false);
|
||||||
|
|
||||||
|
assertFalse(validator.isValid());
|
||||||
|
verify(predicates).isMatchingCurrency(offer, account);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenNotCountryBasedAccount() {
|
||||||
|
account = mock(PaymentAccount.class);
|
||||||
|
assertFalse(account instanceof CountryBasedPaymentAccount);
|
||||||
|
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isEqualPaymentMethods(offer, account)).thenReturn(true);
|
||||||
|
|
||||||
|
assertTrue(new ReceiptValidator(offer, account, predicates).isValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenNotMatchingCodes() {
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isMatchingCountryCodes(offer, account)).thenReturn(false);
|
||||||
|
|
||||||
|
assertFalse(validator.isValid());
|
||||||
|
verify(predicates).isMatchingCountryCodes(offer, account);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenSepaRelated() {
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isMatchingCountryCodes(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isEqualPaymentMethods(offer, account)).thenReturn(false);
|
||||||
|
when(predicates.isSepaRelated(offer, account)).thenReturn(true);
|
||||||
|
|
||||||
|
assertFalse(validator.isValid());
|
||||||
|
verify(predicates).isSepaRelated(offer, account);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenSpecificBankAccountAndOfferRequireSpecificBank() {
|
||||||
|
account = mock(SpecificBanksAccount.class);
|
||||||
|
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isEqualPaymentMethods(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isMatchingCountryCodes(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isSepaRelated(offer, account)).thenReturn(false);
|
||||||
|
when(predicates.isOfferRequireSameOrSpecificBank(offer, account)).thenReturn(true);
|
||||||
|
|
||||||
|
assertFalse(new ReceiptValidator(offer, account, predicates).isValid());
|
||||||
|
verify((SpecificBanksAccount) account).getAcceptedBanks();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenSameBankAccountAndOfferRequireSpecificBank() {
|
||||||
|
account = mock(SameBankAccount.class);
|
||||||
|
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isEqualPaymentMethods(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isMatchingCountryCodes(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isSepaRelated(offer, account)).thenReturn(false);
|
||||||
|
when(predicates.isOfferRequireSameOrSpecificBank(offer, account)).thenReturn(true);
|
||||||
|
|
||||||
|
assertFalse(new ReceiptValidator(offer, account, predicates).isValid());
|
||||||
|
verify((BankAccount) account).getBankId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenSpecificBankAccount() {
|
||||||
|
account = mock(SpecificBanksAccount.class);
|
||||||
|
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isEqualPaymentMethods(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isMatchingCountryCodes(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isSepaRelated(offer, account)).thenReturn(false);
|
||||||
|
when(predicates.isOfferRequireSameOrSpecificBank(offer, account)).thenReturn(false);
|
||||||
|
|
||||||
|
assertFalse(new ReceiptValidator(offer, account, predicates).isValid());
|
||||||
|
verify((SpecificBanksAccount) account).getAcceptedBanks();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenSameBankAccount() {
|
||||||
|
account = mock(SameBankAccount.class);
|
||||||
|
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isEqualPaymentMethods(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isMatchingCountryCodes(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isSepaRelated(offer, account)).thenReturn(false);
|
||||||
|
when(predicates.isOfferRequireSameOrSpecificBank(offer, account)).thenReturn(false);
|
||||||
|
|
||||||
|
assertFalse(new ReceiptValidator(offer, account, predicates).isValid());
|
||||||
|
verify((SameBankAccount) account).getBankId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenNationalBankAccount() {
|
||||||
|
account = mock(NationalBankAccount.class);
|
||||||
|
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isEqualPaymentMethods(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isMatchingCountryCodes(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isSepaRelated(offer, account)).thenReturn(false);
|
||||||
|
when(predicates.isOfferRequireSameOrSpecificBank(offer, account)).thenReturn(false);
|
||||||
|
|
||||||
|
assertTrue(new ReceiptValidator(offer, account, predicates).isValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenWesternUnionAccount(){
|
||||||
|
account = mock(WesternUnionAccount.class);
|
||||||
|
|
||||||
|
PaymentMethod.WESTERN_UNION = mock(PaymentMethod.class);
|
||||||
|
|
||||||
|
when(offer.getPaymentMethod()).thenReturn(PaymentMethod.WESTERN_UNION);
|
||||||
|
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isEqualPaymentMethods(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isMatchingCountryCodes(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isSepaRelated(offer, account)).thenReturn(false);
|
||||||
|
when(predicates.isOfferRequireSameOrSpecificBank(offer, account)).thenReturn(false);
|
||||||
|
|
||||||
|
assertTrue(new ReceiptValidator(offer, account, predicates).isValid());
|
||||||
|
verify(offer).getPaymentMethod();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsValidWhenWesternIrregularAccount(){
|
||||||
|
when(predicates.isMatchingCurrency(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isEqualPaymentMethods(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isMatchingCountryCodes(offer, account)).thenReturn(true);
|
||||||
|
when(predicates.isSepaRelated(offer, account)).thenReturn(false);
|
||||||
|
when(predicates.isOfferRequireSameOrSpecificBank(offer, account)).thenReturn(false);
|
||||||
|
|
||||||
|
assertFalse(validator.isValid());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user