diff --git a/docker-compose.yaml b/docker-compose.yaml index 5c024d165e242d7f0fe961468cbee320ae977353..26a7cdf6e58420a75021dab126f0b808cbc87113 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -17,4 +17,9 @@ services: account-management: image: account-management ports: - - "8080:8080" \ No newline at end of file + - "8080:8080" + + transaction-processor: + image: "transaction-processor" + ports: + - "8080:8082" diff --git a/m2m-banking-api/transaction-api/openapi.yaml b/m2m-banking-api/transaction-api/openapi.yaml index f28a6e3fd226e1b5f1816b898d9eae49707dc6c4..f44f9df748c9906e8b22027be1e05fb0b00526a9 100644 --- a/m2m-banking-api/transaction-api/openapi.yaml +++ b/m2m-banking-api/transaction-api/openapi.yaml @@ -95,9 +95,9 @@ components: TransactionTypeDto: type: string enum: - - WITHDRAW + - WITHDRAWAL - DEPOSIT - - CROSS_ACCOUNT + - TRANSFER - SCHEDULED description: Enumaration defining a type for a transaction. Each type may have different certain implementations and validations. diff --git a/transaction-processor/Dockerfile b/transaction-processor/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..15ebde8e3e7123a0e266bcbc2057025dcf7f1f28 --- /dev/null +++ b/transaction-processor/Dockerfile @@ -0,0 +1,5 @@ +FROM eclipse-temurin:21.0.2_13-jdk-alpine +WORKDIR /app +COPY target/*.jar /transaction-processor.jar +EXPOSE 8080 +ENTRYPOINT ["java", "-jar", "-Ddb.hostname=banking-db", "/transaction-processor.jar"] diff --git a/transaction-processor/pom.xml b/transaction-processor/pom.xml index 8ec4e78ed46c71f403cdbc91068adac17e1292b5..003a95d0efb68b5d8eab782c2201b3dca314a50e 100644 --- a/transaction-processor/pom.xml +++ b/transaction-processor/pom.xml @@ -29,6 +29,7 @@ <spring-cloud.version>2023.0.1</spring-cloud.version> <openapi-generator.version>6.6.0</openapi-generator.version> <org.mapstruct.version>1.5.5.Final</org.mapstruct.version> + <jdbc-postgres.version>42.7.3</jdbc-postgres.version> </properties> <dependencyManagement> @@ -65,10 +66,15 @@ <version>${banking-infrastructure.version}</version> </dependency> + <!-- Spring --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-jpa</artifactId> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> @@ -78,15 +84,9 @@ <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-quartz</artifactId> - </dependency> - <dependency> - <groupId>org.mapstruct</groupId> - <artifactId>mapstruct</artifactId> - <version>${org.mapstruct.version}</version> + <groupId>org.springframework</groupId> + <artifactId>spring-tx</artifactId> </dependency> <dependency> <groupId>org.mapstruct</groupId> @@ -98,11 +98,20 @@ <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> + <version>${jdbc-postgres.version}</version> <scope>runtime</scope> </dependency> + + <!-- Technologies --> + <dependency> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct</artifactId> + <version>${org.mapstruct.version}</version> + </dependency> <dependency> - <groupId>org.liquibase</groupId> - <artifactId>liquibase-core</artifactId> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct-processor</artifactId> + <version>${org.mapstruct.version}</version> </dependency> <!-- Developer tools --> @@ -118,6 +127,8 @@ </dependencies> <build> + <finalName>transactions-processor</finalName> + <plugins> <!-- Copy OpenApi resources --> <plugin> @@ -163,6 +174,22 @@ </execution> </executions> </plugin> + <!-- JAR Build --> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <mainClass>cz.muni.pa165.banking.ProcessorApplication</mainClass> + </configuration> + <executions> + <execution> + <goals> + <goal>repackage</goal> + </goals> + </execution> + </executions> + </plugin> + <!-- OpenApi generator --> <plugin> <groupId>org.openapitools</groupId> diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/repository/ProcessTransactionRepositoryImpl.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/repository/ProcessTransactionRepositoryImpl.java index 7db346ab9e7a6222cc65d4ba68bbe950d54ca3e6..d228c5823288b797f5010502cf9915a51f061b3a 100644 --- a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/repository/ProcessTransactionRepositoryImpl.java +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/repository/ProcessTransactionRepositoryImpl.java @@ -2,26 +2,27 @@ package cz.muni.pa165.banking.application.repository; import cz.muni.pa165.banking.domain.process.ProcessTransaction; import cz.muni.pa165.banking.domain.process.repository.ProcessTransactionRepository; +import cz.muni.pa165.banking.exception.EntityNotFoundException; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import java.util.HashMap; -import java.util.Map; import java.util.UUID; @Repository public class ProcessTransactionRepositoryImpl implements ProcessTransactionRepository { - // until app has no DB connection - private final Map<UUID, ProcessTransaction> inMemoryDb = new HashMap<>(); + @Autowired + private TransactionRepositoryJpa repository; @Override public ProcessTransaction findTransactionByProcessId(UUID processUuid) { - return inMemoryDb.get(processUuid); + return repository.findById(processUuid.toString()) + .orElseThrow(() -> new EntityNotFoundException(String.format("Transaction with Process ID %s not found", processUuid))); } @Override public void save(ProcessTransaction transaction) { - inMemoryDb.put(transaction.getUuid(), transaction); + repository.save(transaction); } } diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/repository/TransactionRepositoryJpa.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/repository/TransactionRepositoryJpa.java new file mode 100644 index 0000000000000000000000000000000000000000..4e8e0930375ee4234b51b19d6d243008a5886efb --- /dev/null +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/repository/TransactionRepositoryJpa.java @@ -0,0 +1,7 @@ +package cz.muni.pa165.banking.application.repository; + +import cz.muni.pa165.banking.domain.process.ProcessTransaction; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TransactionRepositoryJpa extends JpaRepository<ProcessTransaction, String> { +} diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/TransactionProcessesService.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/TransactionProcessesService.java index b161b366c0cc6e91198c81033f1e5a302dd9bdb3..193e9bb9990af42ff22dd616b0ff0a96c60c8825 100644 --- a/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/TransactionProcessesService.java +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/application/service/TransactionProcessesService.java @@ -69,7 +69,7 @@ public class TransactionProcessesService { ProcessTransaction processTransaction = processTransactionRepository.findTransactionByProcessId(uuid); - if (!processTransaction.getType().equals(TransactionType.CROSS_ACCOUNT) || processTransaction.getType().equals(TransactionType.SCHEDULED)) { + if (!processTransaction.getType().equals(TransactionType.TRANSFER) || processTransaction.getType().equals(TransactionType.SCHEDULED)) { LOGGER.error("[Revert Process] Process " + uuid + " not of type CROSS_ACCOUNT/SCHEDULED, unable to revert"); throw new UnexpectedValueException("Unable to revert transaction not type of CROSS_ACCOUNT or SCHEDULED!"); } diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/account/Account.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/account/Account.java index 174b4ba9d9c1dc05359b08c1ed068005c09b7f63..08fb772787a4ca38f2c8a3406f150da4bcaaf3cd 100644 --- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/account/Account.java +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/account/Account.java @@ -2,8 +2,11 @@ package cz.muni.pa165.banking.domain.account; public class Account { - private final String accountNumber; + private String accountNumber; + @Deprecated // hibernate + public Account() {} + public Account(String accountNumber) { this.accountNumber = accountNumber; } @@ -11,4 +14,9 @@ public class Account { public String getAccountNumber() { return accountNumber; } + + @Deprecated // hibernate + public void setAccountNumber(String accountNumber) { + this.accountNumber = accountNumber; + } } diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/money/Money.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/money/Money.java index cb860d8775b6f19b321ce46cefd15d491ab0bb24..d3382ff80c9e952180b88708516f238b0f63cfdf 100644 --- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/money/Money.java +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/money/Money.java @@ -5,10 +5,13 @@ import java.util.Currency; public class Money { - private final BigDecimal amount; + private BigDecimal amount; - private final Currency currency; + private Currency currency; + @Deprecated // hibernate + public Money(){} + public Money(BigDecimal amount, Currency currency) { this.amount = amount; this.currency = currency; @@ -21,7 +24,12 @@ public class Money { public Currency getCurrency() { return currency; } - - - + + public void setAmount(BigDecimal amount) { + this.amount = amount; + } + + public void setCurrency(String currencyCode) { + this.currency = Currency.getInstance(currencyCode); + } } diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/ProcessTransaction.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/ProcessTransaction.java index e8ea9ae1e5b39ca1b7c49d4f89ac4623a164d9e7..fd98d790e5c26965a11c0b6d19638520ce444ffb 100644 --- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/ProcessTransaction.java +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/ProcessTransaction.java @@ -4,12 +4,20 @@ import cz.muni.pa165.banking.domain.account.Account; import cz.muni.pa165.banking.domain.money.Money; import cz.muni.pa165.banking.domain.transaction.Transaction; import cz.muni.pa165.banking.domain.transaction.TransactionType; +import jakarta.persistence.Entity; import java.util.UUID; +@Entity public class ProcessTransaction extends Transaction { - private final UUID uuid; + private UUID uuid; + + @Deprecated + public ProcessTransaction() { + // Hibernate + super(); + } public ProcessTransaction(Account source, Account target, TransactionType type, Money amount, String detail, UUID uuid) { super(source, target, type, amount, detail); @@ -23,4 +31,9 @@ public class ProcessTransaction extends Transaction { public UUID getUuid() { return UUID.fromString(uuid.toString()); } + + @Deprecated // hibernate + public void setUuid(UUID uuid) { + this.uuid = uuid; + } } diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandler.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandler.java index 93a4476e01c49f56285426a13f77746216d2dbaa..9dc80feb1e318d7a9472937190eee3380383cfaa 100644 --- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandler.java +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandler.java @@ -12,7 +12,7 @@ import java.math.BigDecimal; import java.util.Currency; /** - * Handler for transaction of type ${@link cz.muni.pa165.banking.domain.transaction.TransactionType#WITHDRAW}. + * Handler for transaction of type ${@link cz.muni.pa165.banking.domain.transaction.TransactionType#WITHDRAWAL}. * Customer may send a specified amount of money to a foreign account, where the currency of both accounts does * not have to be the same. The amount of money is calculated via ${@link cz.muni.pa165.banking.domain.money.CurrencyConverter} * using the target account's currency. @@ -55,8 +55,8 @@ public class CrossAccountHandler extends ProcessHandler { targetAmount = currencyConverter.convertTo(currency, targetAccountCurrency, targetAmount); } - accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.CROSS_ACCOUNT, sourceAmount, source, processTransaction.getDetail()); - accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.CROSS_ACCOUNT, targetAmount, target, processTransaction.getDetail()); + accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.TRANSFER, sourceAmount, source, processTransaction.getDetail()); + accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.TRANSFER, targetAmount, target, processTransaction.getDetail()); } } diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/ProcessHandlerGateway.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/ProcessHandlerGateway.java index 37a245e716e5b9e577d76df9c51b82ba7c1c158d..5d5811c58eb8de1a929b11e9543a5487ae4ccf7c 100644 --- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/ProcessHandlerGateway.java +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/ProcessHandlerGateway.java @@ -22,9 +22,9 @@ public class ProcessHandlerGateway { } ProcessHandler handler = switch (type) { - case WITHDRAW -> new WithdrawHandler(); + case WITHDRAWAL -> new WithdrawHandler(); case DEPOSIT -> new DepositHandler(); - case CROSS_ACCOUNT -> new CrossAccountHandler(); + case TRANSFER -> new CrossAccountHandler(); case SCHEDULED -> new ScheduledHandler(); }; diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandler.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandler.java index b5cad4d9c4b5ce419adc30c473763eeb0a5bf5e7..d57c3bf9c9e0162a92977de2b8abbc4cbfc348aa 100644 --- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandler.java +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandler.java @@ -12,7 +12,7 @@ import java.math.BigDecimal; import java.util.Currency; /** - * Handler for transaction of type ${@link cz.muni.pa165.banking.domain.transaction.TransactionType#WITHDRAW}. + * Handler for transaction of type ${@link cz.muni.pa165.banking.domain.transaction.TransactionType#WITHDRAWAL}. * Customer may withdraw a specified amount of money of the account's currency. */ public class WithdrawHandler extends ProcessHandler { @@ -40,7 +40,7 @@ public class WithdrawHandler extends ProcessHandler { BigDecimal calculatedAmount = money.getAmount().multiply(BigDecimal.valueOf(-1L)); - accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.WITHDRAW, calculatedAmount, account, processTransaction.getDetail()); + accountService.publishAccountChange(processTransaction.getUuid(), TransactionType.WITHDRAWAL, calculatedAmount, account, processTransaction.getDetail()); } } diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java index 5ee0b1b001a1157ac024114357786c989fb63e6b..35a7d1742f363bcd8753e546fbf1045b97e5b4c7 100644 --- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java @@ -5,21 +5,26 @@ import cz.muni.pa165.banking.domain.money.Money; public class Transaction { - private final Account source; + private Account source; - private final Account target; + private Account target; - private final TransactionType type; + private TransactionType type; - private final Money amount; + private Money money; - private final String detail; + private String detail; + @Deprecated + public Transaction() { + // Hibernate + } + public Transaction(Account source, Account target, TransactionType type, Money amount, String detail) { this.source = source; this.target = target; this.type = type; - this.amount = amount; + this.money = amount; this.detail = detail; } @@ -36,11 +41,36 @@ public class Transaction { } public Money getMoney() { - return amount; + return money; } public String getDetail() { return detail; } + @Deprecated // hibernate + public void setSource(Account source) { + this.source = source; + } + + @Deprecated // hibernate + public void setTarget(Account target) { + this.target = target; + } + + @Deprecated // hibernate + public void setType(TransactionType type) { + this.type = type; + } + + @Deprecated // hibernate + public void setMoney(Money amount) { + this.money = amount; + } + + @Deprecated // hibernate + public void setDetail(String detail) { + this.detail = detail; + } + } diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/TransactionType.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/TransactionType.java index 757bd2549d00c153f9fedc65906babc8cae71b53..1158d407d47d69a9f84f45467fe6a2dba672f922 100644 --- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/TransactionType.java +++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/TransactionType.java @@ -1,12 +1,12 @@ package cz.muni.pa165.banking.domain.transaction; public enum TransactionType { - - WITHDRAW, + + WITHDRAWAL, DEPOSIT, - CROSS_ACCOUNT, + TRANSFER, SCHEDULED diff --git a/transaction-processor/src/main/resources/application.yaml b/transaction-processor/src/main/resources/application.yaml index c14c54fd495e4e5743c16dc070a803e744e00130..2dc85c373a9d07b3ebca98472350bbea9a9f0c20 100644 --- a/transaction-processor/src/main/resources/application.yaml +++ b/transaction-processor/src/main/resources/application.yaml @@ -1,10 +1,8 @@ -server: - port: 8082 - +db: + hostname: localhost spring: application: name: Transaction-Processor - banking: apps: management: @@ -15,4 +13,11 @@ banking: host: localhost port: 8081 url: ${banking.apps.query.host}:${banking.apps.query.port} - \ No newline at end of file + + datasource: + url: jdbc:postgresql://${db.hostname}:5432/banking + driver-class-name: org.postgresql.Driver + username: ACC_TRANSACTION + password: transactionAccPasswd + jpa: + mapping-resources: hibernate/Transaction.hbm.xml diff --git a/transaction-processor/src/main/resources/hibernate/Transaction.hbm.xml b/transaction-processor/src/main/resources/hibernate/Transaction.hbm.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec10139f8f329dd4c3805283eed9594c3927ff71 --- /dev/null +++ b/transaction-processor/src/main/resources/hibernate/Transaction.hbm.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD//EN" + "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> + +<hibernate-mapping> + <class name="cz.muni.pa165.banking.domain.process.ProcessTransaction" table="proc_transaction"> + + <cache usage="read-write"/> + + <id name="uuid" + column="proc_uuid" + type="java.util.UUID"/> + + <component + name="source" + class="cz.muni.pa165.banking.domain.account.Account" + > + <property + name="accountNumber" + column="acc_source" + type="java.lang.String" + /> + </component> + + <component + name="target" + class="cz.muni.pa165.banking.domain.account.Account" + > + <property + name="accountNumber" + column="acc_target" + type="java.lang.String" + /> + </component> + + <property + name="type" + column="type"> + <type name="org.hibernate.type.EnumType"> + <param name="enumClass">cz.muni.pa165.banking.domain.transaction.TransactionType</param> + <param name="useNamed">true</param> + </type> + </property> + + <component + name="money" + class="cz.muni.pa165.banking.domain.money.Money" + > + <property + name="amount" + column="amount" + type="big_decimal" + /> + <property + name="currency" + column="curr_code" + type="string" + /> + </component> + + <property + name="detail" + type="java.lang.String" + column="detail_msg" + /> + + </class> + +</hibernate-mapping> \ No newline at end of file diff --git a/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandlerTest.java b/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandlerTest.java index 17ba43b24bb03c10fe56f0ee89d3ab80f9f715e1..2551bd4a91df78468d6ea6f7cb846545a19f1704 100644 --- a/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandlerTest.java +++ b/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/CrossAccountHandlerTest.java @@ -47,7 +47,7 @@ class CrossAccountHandlerTest { account1 = new Account("ACC1"); account2 = new Account("ACC2"); process = new ProcessMock(); - processTransaction = new ProcessTransaction(account1, account2, TransactionType.CROSS_ACCOUNT, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); + processTransaction = new ProcessTransaction(account1, account2, TransactionType.TRANSFER, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); depositHandler = new CrossAccountHandler(); processRepository = mock(ProcessRepository.class); processTransactionRepository = mock(ProcessTransactionRepository.class); @@ -90,7 +90,7 @@ class CrossAccountHandlerTest { void negativeAmountInTransaction() { AccountService accountService = new AccountServiceStub(true, true, null, false); Process process = new ProcessMock(); - ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.CROSS_ACCOUNT, new Money(BigDecimal.ONE.negate(), Currency.getInstance("EUR")), "", process.uuid()); + ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.TRANSFER, new Money(BigDecimal.ONE.negate(), Currency.getInstance("EUR")), "", process.uuid()); when(processRepository.findById(process.uuid())).thenReturn(process); when(processTransactionRepository.findTransactionByProcessId(process.uuid())).thenReturn(processTransaction); @@ -106,7 +106,7 @@ class CrossAccountHandlerTest { void zeroAmountInTransaction() { AccountService accountService = new AccountServiceStub(true, true, null, false); Process process = new ProcessMock(); - ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.CROSS_ACCOUNT, new Money(BigDecimal.ZERO, Currency.getInstance("EUR")), "", process.uuid()); + ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.TRANSFER, new Money(BigDecimal.ZERO, Currency.getInstance("EUR")), "", process.uuid()); when(processRepository.findById(process.uuid())).thenReturn(process); when(processTransactionRepository.findTransactionByProcessId(process.uuid())).thenReturn(processTransaction); @@ -122,7 +122,7 @@ class CrossAccountHandlerTest { void insufficientBalanceForTransaction() { AccountService accountService = new AccountServiceStub(true, true, null, false); Process process = new ProcessMock(); - ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.CROSS_ACCOUNT, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); + ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.TRANSFER, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); when(processRepository.findById(process.uuid())).thenReturn(process); when(processTransactionRepository.findTransactionByProcessId(process.uuid())).thenReturn(processTransaction); @@ -138,7 +138,7 @@ class CrossAccountHandlerTest { void crossAccountTransactionSuccessful() { AccountService accountService = new AccountServiceStub(true, true, null, true); Process process = new ProcessMock(); - ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.CROSS_ACCOUNT, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); + ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.TRANSFER, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); when(processRepository.findById(process.uuid())).thenReturn(process); when(processTransactionRepository.findTransactionByProcessId(process.uuid())).thenReturn(processTransaction); diff --git a/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/ScheduledHandlerTest.java b/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/ScheduledHandlerTest.java index 52c7131b20e8807d4084181b42fa24e2d81e7b51..24b1013c4dc887699f8e18b10a2fa3a3618382a7 100644 --- a/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/ScheduledHandlerTest.java +++ b/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/ScheduledHandlerTest.java @@ -51,7 +51,7 @@ class ScheduledHandlerTest { void nonexistingFirstAccountValidation() { AccountService accountService = new AccountServiceStub(false, false,null, false); Process process = new ProcessMock(); - ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.CROSS_ACCOUNT, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); + ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.TRANSFER, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); when(processRepository.findById(process.uuid())).thenReturn(process); when(processTransactionRepository.findTransactionByProcessId(process.uuid())).thenReturn(processTransaction); @@ -67,7 +67,7 @@ class ScheduledHandlerTest { void twoSameAccountsValidation() { AccountService accountService = new AccountServiceStub(true, false,null, false); Process process = new ProcessMock(); - ProcessTransaction processTransaction = new ProcessTransaction(account1, account1, TransactionType.CROSS_ACCOUNT, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); + ProcessTransaction processTransaction = new ProcessTransaction(account1, account1, TransactionType.TRANSFER, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); when(processRepository.findById(process.uuid())).thenReturn(process); when(processTransactionRepository.findTransactionByProcessId(process.uuid())).thenReturn(processTransaction); @@ -83,7 +83,7 @@ class ScheduledHandlerTest { void nonexistingSecondAccountValidation() { AccountService accountService = new AccountServiceStub(true, false,null, false); Process process = new ProcessMock(); - ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.CROSS_ACCOUNT, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); + ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.TRANSFER, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); when(processRepository.findById(process.uuid())).thenReturn(process); when(processTransactionRepository.findTransactionByProcessId(process.uuid())).thenReturn(processTransaction); @@ -99,7 +99,7 @@ class ScheduledHandlerTest { void crossAccountTransactionSuccessful() { AccountService accountService = new AccountServiceStub(true, true, null, true); Process process = new ProcessMock(); - ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.CROSS_ACCOUNT, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); + ProcessTransaction processTransaction = new ProcessTransaction(account1, account2, TransactionType.TRANSFER, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); when(processRepository.findById(process.uuid())).thenReturn(process); when(processTransactionRepository.findTransactionByProcessId(process.uuid())).thenReturn(processTransaction); diff --git a/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandlerTest.java b/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandlerTest.java index 7d7651d020d3d9bd3805346ea4ef05e6980af8f3..66dffd2694ae5ab84e2b57f3ab4ccd2a7adb16ef 100644 --- a/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandlerTest.java +++ b/transaction-processor/src/test/java/cz/muni/pa165/banking/domain/process/handler/WithdrawHandlerTest.java @@ -44,7 +44,7 @@ class WithdrawHandlerTest { static void init() { account = new Account("ACC"); process = new ProcessMock(); - processTransaction = new ProcessTransaction(account, null, TransactionType.WITHDRAW, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); + processTransaction = new ProcessTransaction(account, null, TransactionType.WITHDRAWAL, new Money(BigDecimal.ONE, Currency.getInstance("EUR")), "", process.uuid()); depositHandler = new WithdrawHandler(); processRepository = mock(ProcessRepository.class); processTransactionRepository = mock(ProcessTransactionRepository.class);