Добавил валидацию на null в AccountBalanceValidationRule.CompanyPresent, AccountBalanceValidationRule.AccountOk. Поправил тест AccountBalanceServiceTest.

This commit is contained in:
psemenkov 2022-12-28 18:40:40 +03:00
parent 301d06a4c4
commit 6974ee2087
5 changed files with 317 additions and 1882 deletions

View file

@ -20,6 +20,9 @@ public enum AccountBalanceValidationRule implements IValidationRule<ImdgValidati
@Override @Override
public Optional<EnumMessage> validate(ImdgValidationContext<AccountBalanceValidation> context) { public Optional<EnumMessage> validate(ImdgValidationContext<AccountBalanceValidation> context) {
AccountBalanceValidation validatedObject = context.getValidatedObject(); AccountBalanceValidation validatedObject = context.getValidatedObject();
if (validatedObject.addresseeId() == null) {
return of(BalanceError.CompanyNotFound);
}
Imdg<Company> companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class); Imdg<Company> companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class);
Company company = companyImdg.getSingleObjectByID(validatedObject.addresseeId()); Company company = companyImdg.getSingleObjectByID(validatedObject.addresseeId());
if (company == null) { if (company == null) {
@ -33,6 +36,9 @@ public enum AccountBalanceValidationRule implements IValidationRule<ImdgValidati
@Override @Override
public Optional<EnumMessage> validate(ImdgValidationContext<AccountBalanceValidation> context) { public Optional<EnumMessage> validate(ImdgValidationContext<AccountBalanceValidation> context) {
AccountBalanceValidation validatedObject = context.getValidatedObject(); AccountBalanceValidation validatedObject = context.getValidatedObject();
if (validatedObject.accountId() == null) {
return of(BalanceError.AccountNotPresent);
}
Imdg<Account> accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); Imdg<Account> accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class);
Account account = accountImdg.getSingleObjectByFieldValues(Map.of("id", validatedObject.accountId(), Account account = accountImdg.getSingleObjectByFieldValues(Map.of("id", validatedObject.accountId(),
"accountType", AccountType.Clrn.getKey())); "accountType", AccountType.Clrn.getKey()));

View file

@ -10,6 +10,8 @@ import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
import ru.spcex.clearing.balance.config.*; import ru.spcex.clearing.balance.config.*;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.enumeration.Status;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast; import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast;
@ -27,6 +29,10 @@ import java.util.concurrent.atomic.AtomicLong;
KafkaSenderConfig.class, KafkaSenderConfig.class,
KafkaTestConfig.class}) KafkaTestConfig.class})
public abstract class AbstractServiceTest { public abstract class AbstractServiceTest {
protected final Long accountIdNew = 1L;
protected final Long addresseeIdNew = 2L;
protected final String deal = "111111111";
protected final String acc = "123456789";
protected AtomicLong currentId = new AtomicLong(0L); protected AtomicLong currentId = new AtomicLong(0L);
protected IMap<Long, Company> companyMap; protected IMap<Long, Company> companyMap;
protected IMap<Long, Account> accountMap; protected IMap<Long, Account> accountMap;
@ -43,4 +49,21 @@ public abstract class AbstractServiceTest {
accountMap = accountImdg.getMap(); accountMap = accountImdg.getMap();
} }
protected Company getTestCompany() {
Company company = new Company();
company.setId(addresseeIdNew);
company.setTradingCode(deal);
company.setShortName("ShortName");
company.setFullName("FullName");
return company;
}
protected Account getTestAccount(Long id) {
Account account = new Account();
account.setId(id);
account.setAccount(acc);
account.setAccountType(AccountType.Clrn.getKey());
account.setAccountStatus(Status.Active.getKey());
return account;
}
} }

View file

@ -20,9 +20,6 @@ import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFields
class AccountBalanceServiceTest extends AbstractServiceTest { class AccountBalanceServiceTest extends AbstractServiceTest {
public static final Matcher<AccountResult> ACCOUNT_BALANCE_MATCHER = usingIgnoringFieldsComparator("account.created", "account.updated", "account.clearingDate"); public static final Matcher<AccountResult> ACCOUNT_BALANCE_MATCHER = usingIgnoringFieldsComparator("account.created", "account.updated", "account.clearingDate");
private final Long id = 0L;
private final Long accountIdNew = 0L;
private final Long addresseeIdNew = 0L;
private final BigDecimal amountNew = new BigDecimal(1000); private final BigDecimal amountNew = new BigDecimal(1000);
private final String cashMovementCurrencyCodeNew = "cash"; private final String cashMovementCurrencyCodeNew = "cash";
private final Long accountIdUpdate = accountIdNew; private final Long accountIdUpdate = accountIdNew;
@ -43,21 +40,13 @@ class AccountBalanceServiceTest extends AbstractServiceTest {
*/ */
@Test @Test
void createAccountBalance() { void createAccountBalance() {
Company company = new Company(); Company company = getTestCompany();
company.setId(addresseeIdNew); companyMap.put(addresseeIdNew, company);
company.setTradingCode("code"); Account account = getTestAccount(accountIdNew);
company.setShortName("ShortName"); accountMap.put(accountIdNew, account);
company.setFullName("FullName");
companyMap.put(id, company);
Account account = new Account();
account.setId(accountIdNew);
account.setAccount("123456789");
account.setAccountType(AccountType.Clrn.getKey());
account.setAccountStatus(Status.Active.getKey());
accountMap.put(id, account);
AccountBalance accountBalanceNew = new AccountBalance(); AccountBalance accountBalanceNew = new AccountBalance();
accountBalanceNew.setId(id); accountBalanceNew.setId(accountIdNew);
accountBalanceNew.setCompanyId(addresseeIdNew); accountBalanceNew.setCompanyId(addresseeIdNew);
accountBalanceNew.setAccountId(accountIdNew); accountBalanceNew.setAccountId(accountIdNew);
accountBalanceNew.setAccountType(account.getAccountType()); accountBalanceNew.setAccountType(account.getAccountType());
@ -72,10 +61,10 @@ class AccountBalanceServiceTest extends AbstractServiceTest {
accountBalanceNew.setFullName(company.getFullName()); accountBalanceNew.setFullName(company.getFullName());
AccountResult predictableNewResult = new AccountResult(accountBalanceNew); AccountResult predictableNewResult = new AccountResult(accountBalanceNew);
AccountResult resultNew = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); AccountResult resultNew = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew);
resultNew.getAccount().setId(id); resultNew.getAccount().setId(accountIdNew);
AccountBalance accountBalanceUpdate = new AccountBalance(); AccountBalance accountBalanceUpdate = new AccountBalance();
accountBalanceUpdate.setId(id); accountBalanceUpdate.setId(accountIdNew);
accountBalanceUpdate.setCompanyId(addresseeIdUpdate); accountBalanceUpdate.setCompanyId(addresseeIdUpdate);
accountBalanceUpdate.setAccountId(accountIdUpdate); accountBalanceUpdate.setAccountId(accountIdUpdate);
accountBalanceUpdate.setAccountType(account.getAccountType()); accountBalanceUpdate.setAccountType(account.getAccountType());
@ -89,7 +78,7 @@ class AccountBalanceServiceTest extends AbstractServiceTest {
accountBalanceUpdate.setShortName(company.getShortName()); accountBalanceUpdate.setShortName(company.getShortName());
accountBalanceUpdate.setFullName(company.getFullName()); accountBalanceUpdate.setFullName(company.getFullName());
AccountResult resultUpdate = accountBalanceService.createAccountBalance(addresseeIdUpdate, accountIdUpdate, amountUpdate, cashMovementCurrencyCodeUpdate); AccountResult resultUpdate = accountBalanceService.createAccountBalance(addresseeIdUpdate, accountIdUpdate, amountUpdate, cashMovementCurrencyCodeUpdate);
resultUpdate.getAccount().setId(id); resultUpdate.getAccount().setId(accountIdNew);
AccountResult predictableUpdateResult = new AccountResult(accountBalanceUpdate); AccountResult predictableUpdateResult = new AccountResult(accountBalanceUpdate);
ACCOUNT_BALANCE_MATCHER.assertMatch(resultNew, predictableNewResult); ACCOUNT_BALANCE_MATCHER.assertMatch(resultNew, predictableNewResult);
@ -110,18 +99,20 @@ class AccountBalanceServiceTest extends AbstractServiceTest {
//CompanyNotFound //CompanyNotFound
AccountResult predictableResult; AccountResult predictableResult;
predictableResult = new AccountResult(new EnumMessage(BalanceError.CompanyNotFound)); predictableResult = new AccountResult(new EnumMessage(BalanceError.CompanyNotFound));
companyMap.delete(addresseeIdNew);
AccountResult result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); AccountResult result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew);
ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult);
result = accountBalanceService.createAccountBalance(null, accountIdNew, amountNew, cashMovementCurrencyCodeNew);
ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult);
//AccountNotPresent accountType=null //AccountNotPresent accountType=null
Company company = new Company(); companyMap.put(addresseeIdNew, getTestCompany());
company.setId(addresseeIdNew);
companyMap.put(id, company);
Account account = new Account(); Account account = new Account();
account.setId(accountIdNew); account.setId(accountIdNew);
account.setAccountStatus(Status.Active.getKey()); account.setAccountStatus(Status.Active.getKey());
accountMap.put(id, account); accountMap.put(accountIdNew, account);
predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotPresent)); predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotPresent));
result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew);
@ -131,7 +122,7 @@ class AccountBalanceServiceTest extends AbstractServiceTest {
account.setId(null); account.setId(null);
account.setAccountType(AccountType.Clrn.getKey()); account.setAccountType(AccountType.Clrn.getKey());
account.setAccountStatus(Status.Active.getKey()); account.setAccountStatus(Status.Active.getKey());
accountMap.put(id, account); accountMap.put(accountIdNew, account);
predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotPresent)); predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotPresent));
result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew);
@ -141,15 +132,16 @@ class AccountBalanceServiceTest extends AbstractServiceTest {
account.setId(accountIdNew); account.setId(accountIdNew);
account.setAccountType(AccountType.Clrn.getKey()); account.setAccountType(AccountType.Clrn.getKey());
account.setAccountStatus(null); account.setAccountStatus(null);
accountMap.put(id, account); accountMap.put(accountIdNew, account);
predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotActive, account.getId())); predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotActive, account.getId()));
result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew);
ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult);
account.setAccountStatus(Status.Active.getKey()); account.setAccountStatus(Status.Active.getKey());
accountMap.put(id, account); accountMap.put(accountIdNew, account);
result = accountBalanceService.createAccountBalance(addresseeIdNew, null, amountNew, cashMovementCurrencyCodeNew); result = accountBalanceService.createAccountBalance(addresseeIdNew, null, amountNew, cashMovementCurrencyCodeNew);
predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotPresent));
ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult);
} }
} }

View file

@ -6,8 +6,6 @@ import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.sdf.SDf01; import ru.clearing.classes.statics.data.sdf.SDf01;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.enumeration.Status;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -16,11 +14,9 @@ import java.util.Collections;
class Sdf01ExecutorTest extends AbstractServiceTest { class Sdf01ExecutorTest extends AbstractServiceTest {
private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy");
private final Long id = currentId.getAndIncrement();
@Autowired @Autowired
Sdf01Executor sdf01Executor; Sdf01Executor sdf01Executor;
private final String deal = "111111111";
private final String acc = "123456789";
private final Long id = currentId.getAndIncrement();
@Test @Test
void execute() { void execute() {
@ -32,15 +28,10 @@ class Sdf01ExecutorTest extends AbstractServiceTest {
sDf01.setDat(LocalDate.now().format(datFormatter)); sDf01.setDat(LocalDate.now().format(datFormatter));
sDf01.setAcc_type("A"); sDf01.setAcc_type("A");
Company company = new Company(); Company company = getTestCompany();
company.setTradingCode(deal);
companyMap.put(id, company); companyMap.put(id, company);
Account account = new Account(); Account account = getTestAccount(id);
account.setId(id);
account.setAccount(acc);
account.setAccountType(AccountType.Clrn.getKey());
account.setAccountStatus(Status.Active.getKey());
accountMap.put(id, account); accountMap.put(id, account);
StatementRequest statementRequest = new StatementRequest(); StatementRequest statementRequest = new StatementRequest();

File diff suppressed because it is too large Load diff