diff --git a/.docker/db/scripts/0_init_db.sql b/.docker/db/scripts/0_init_db.sql index 68b5bb9b499d11c15ab517fad190d7a81d418889..2769faf1e86eb735096084270f77fa4c0ca3f105 100644 --- a/.docker/db/scripts/0_init_db.sql +++ b/.docker/db/scripts/0_init_db.sql @@ -6,7 +6,7 @@ GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA bank_user TO "ACC_USER"; CREATE SCHEMA IF NOT EXISTS bank_account; CREATE USER "ACC_ACCOUNT" WITH PASSWORD 'accountAccPasswd'; ALTER ROLE "ACC_ACCOUNT" SET SEARCH_PATH TO bank_account; -GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA bank_account TO "ACC_ACCOUNT"; +GRANT ALL PRIVILEGES ON SCHEMA bank_account TO "ACC_ACCOUNT"; CREATE SCHEMA IF NOT EXISTS bank_transaction; CREATE USER "ACC_TRANSACTION" WITH PASSWORD 'transactionAccPasswd'; diff --git a/.docker/db/scripts/1_create_account_db.sql b/.docker/db/scripts/1_create_account_db.sql index a2e08131a5aad5ad8a372f676cd6ee7ac347c95b..8565e9df69b690c97aa9cf043f9f1688abe13eca 100644 --- a/.docker/db/scripts/1_create_account_db.sql +++ b/.docker/db/scripts/1_create_account_db.sql @@ -2,3 +2,25 @@ SET ROLE "ACC_ACCOUNT"; SET SEARCH_PATH TO bank_account; -- CREATE TABLES + +CREATE TABLE IF NOT EXISTS bal_transaction +( + amount NUMERIC(38, 2), + type SMALLINT, + date TIMESTAMP(6) WITH TIME ZONE, + id BIGINT PRIMARY KEY, + process_id UUID, + balance_id CHARACTER VARYING(255) +); + +CREATE TABLE IF NOT EXISTS balance +( + amount NUMERIC(38, 2), + balance_id CHARACTER VARYING(255) PRIMARY KEY +); + +CREATE SEQUENCE bal_transaction_seq START WITH 1 INCREMENT BY 50; + +ALTER TABLE bal_transaction ADD CONSTRAINT CONSTRAINT_FF CHECK(TYPE BETWEEN 0 AND 4); +ALTER TABLE bal_transaction ADD CONSTRAINT CONSTRAINT_F CHECK(TYPE BETWEEN 0 AND 4); +ALTER TABLE bal_transaction ADD CONSTRAINT FKICJDGHKQ3OQKDCDC6KKUJD6O3 FOREIGN KEY(BALANCE_ID) REFERENCES balance(BALANCE_ID); \ No newline at end of file diff --git a/.docker/db/scripts/2_generate_account_db.sql b/.docker/db/scripts/2_generate_account_db.sql index 19c94428fe23a845a884b109f520b2262baea8fd..7cf2f758941be23a8a34d730c93f0c52ea84a67f 100644 --- a/.docker/db/scripts/2_generate_account_db.sql +++ b/.docker/db/scripts/2_generate_account_db.sql @@ -1,3 +1,15 @@ SET SEARCH_PATH TO bank_account; --- INSERT starting data \ No newline at end of file +-- INSERT starting data +INSERT INTO balance VALUES + (90.00, 'id1'), + (118.00, 'id2'), + (243.00, 'id3'), + (-243.00, 'id4'); + +INSERT INTO bal_transaction VALUES + (90.00, 1, TIMESTAMP WITH TIME ZONE '2024-04-15 14:11:00.288446+02', 1, UUID 'b775b79f-52a9-45c4-8ab3-bdb9f0f3d4ae', 'id1'), + (94.00, 2, TIMESTAMP WITH TIME ZONE '2024-04-15 14:11:42.919109+02', 2, UUID 'c91b6ef6-32ac-4160-bf7f-97979ca84606', 'id2'), + (24.00, 1, TIMESTAMP WITH TIME ZONE '2024-04-15 14:11:57.480291+02', 3, UUID '6a1fa40e-3ba8-46a8-b005-8bcd63ae44de', 'id2'), + (243.00, 3, TIMESTAMP WITH TIME ZONE '2024-04-15 14:12:14.949613+02', 4, UUID 'd9974137-7000-4f34-8c64-1d35b0534e31', 'id3'), + (-243.00, 3, TIMESTAMP WITH TIME ZONE '2024-04-15 14:12:23.109443+02', 5, UUID 'd9974137-7000-4f34-8c64-1d35b0534e31', 'id4'); \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9302c9da3f077077d7b5a1608af8631962142c13..ac197589ab28487841cee0753c0b13f837a1690e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,5 @@ stages: + - build - test image: maven:latest @@ -13,11 +14,14 @@ test-account-management: test-account-query: stage: test + image: docker tags: - shared-fi script: + - 'docker-compose up -d' - 'cd account-query' - 'mvn clean install' + - 'docker-compose down' test-infrastructure: stage: test diff --git a/account-query/Dockerfile b/account-query/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..74314e39090fbafb0ab74a2b5834d8b385b166b8 --- /dev/null +++ b/account-query/Dockerfile @@ -0,0 +1,5 @@ +FROM eclipse-temurin:21.0.2_13-jdk-alpine +WORKDIR /app +COPY target/*.jar /account-query.jar +EXPOSE 8081 +ENTRYPOINT ["java", "-jar", "-Ddb.hostname=banking-db", "/account-query.jar"] diff --git a/account-query/dump.sql b/account-query/dump.sql deleted file mode 100644 index 5a0b886648d72a80f854eb9e8f43c9209dd4d919..0000000000000000000000000000000000000000 --- a/account-query/dump.sql +++ /dev/null @@ -1,34 +0,0 @@ --- H2 2.2.224; -; -CREATE USER IF NOT EXISTS "ACCOUNT-QUERY-SERVICE" SALT '21f469e7ee641b1b' HASH '18dbefd38a85a488a92d7cc2e485ff9c47f29703294af67d9d907903a1551190' ADMIN; -CREATE SEQUENCE "PUBLIC"."TRANSACTION_SEQ" START WITH 1 RESTART WITH 101 INCREMENT BY 50; -CREATE MEMORY TABLE "PUBLIC"."BALANCE"( - "AMOUNT" NUMERIC(38, 2), - "BALANCE_ID" CHARACTER VARYING(255) NOT NULL -); -ALTER TABLE "PUBLIC"."BALANCE" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_1" PRIMARY KEY("BALANCE_ID"); --- 4 +/- SELECT COUNT(*) FROM PUBLIC.BALANCE; -INSERT INTO "PUBLIC"."BALANCE" VALUES -(400.00, 'id1'), -(86.00, 'id2'), -(23.00, 'id3'), -(232.00, 'id4'); -CREATE MEMORY TABLE "PUBLIC"."TRANSACTION"( - "AMOUNT" NUMERIC(38, 2), - "TYPE" SMALLINT, - "DATE" TIMESTAMP(6) WITH TIME ZONE, - "ID" BIGINT NOT NULL, - "PROCESS_ID" UUID, - "BALANCE_ID" CHARACTER VARYING(255) -); -ALTER TABLE "PUBLIC"."TRANSACTION" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_FFF" PRIMARY KEY("ID"); --- 5 +/- SELECT COUNT(*) FROM PUBLIC.TRANSACTION; -INSERT INTO "PUBLIC"."TRANSACTION" VALUES -(433.00, 1, TIMESTAMP WITH TIME ZONE '2024-04-15 11:04:09.18155+02', 1, UUID '00000000-0000-0000-0000-000000000001', 'id1'), -(-33.00, 0, TIMESTAMP WITH TIME ZONE '2024-04-15 11:04:18.442307+02', 2, UUID '00000000-0000-0000-0000-000000000002', 'id1'), -(86.00, 2, TIMESTAMP WITH TIME ZONE '2024-04-15 11:04:32.518962+02', 3, UUID '00000000-0000-0000-0000-000000000003', 'id2'), -(23.00, 4, TIMESTAMP WITH TIME ZONE '2024-04-15 11:05:05.083367+02', 4, UUID '00000000-0000-0000-0000-000000000005', 'id3'), -(232.00, 1, TIMESTAMP WITH TIME ZONE '2024-04-15 11:05:18.375087+02', 5, UUID '00000000-0000-0000-0000-000000000006', 'id4'); -ALTER TABLE "PUBLIC"."TRANSACTION" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_FF" CHECK("TYPE" BETWEEN 0 AND 4) NOCHECK; -ALTER TABLE "PUBLIC"."TRANSACTION" ADD CONSTRAINT "PUBLIC"."CONSTRAINT_F" CHECK("TYPE" BETWEEN 0 AND 4) NOCHECK; -ALTER TABLE "PUBLIC"."TRANSACTION" ADD CONSTRAINT "PUBLIC"."FKICJDGHKQ3OQKDCDC6KKUJD6O3" FOREIGN KEY("BALANCE_ID") REFERENCES "PUBLIC"."BALANCE"("BALANCE_ID") NOCHECK; diff --git a/account-query/pom.xml b/account-query/pom.xml index 0dbffdc484984dec3064be101720cd772e421ee4..69af3420294fa8c7cf88a10d41796ac2ab515c56 100644 --- a/account-query/pom.xml +++ b/account-query/pom.xml @@ -22,6 +22,7 @@ <spring.version>3.2.4</spring.version> <org.mapstruct.version>1.5.5.Final</org.mapstruct.version> + <jdbc-postgres.version>42.7.3</jdbc-postgres.version> </properties> <build> @@ -116,10 +117,14 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> + <!-- DB --> <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> + <groupId>org.postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>${jdbc-postgres.version}</version> + <scope>runtime</scope> </dependency> + <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> diff --git a/account-query/src/main/java/cz/muni/pa165/banking/application/controller/BalanceController.java b/account-query/src/main/java/cz/muni/pa165/banking/application/controller/BalanceController.java index 1541bee756261982f3ab0f66b318c43059d4162f..f1d905f38515420104d69d67daab2264fb6c9dcc 100644 --- a/account-query/src/main/java/cz/muni/pa165/banking/application/controller/BalanceController.java +++ b/account-query/src/main/java/cz/muni/pa165/banking/application/controller/BalanceController.java @@ -49,4 +49,10 @@ public class BalanceController implements CustomerServiceApi, SystemServiceApi { balanceFacade.createNewBalance(id); return new ResponseEntity<>(HttpStatus.CREATED); } + + @Override + public ResponseEntity<Void> deleteBalance(String id) { + balanceFacade.deleteBalance(id); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/account-query/src/main/java/cz/muni/pa165/banking/application/facade/BalanceFacade.java b/account-query/src/main/java/cz/muni/pa165/banking/application/facade/BalanceFacade.java index b89d717c93695ce038e443d9074139c606191177..36cf383884e46703891cd8b2666a289ca1627992 100644 --- a/account-query/src/main/java/cz/muni/pa165/banking/application/facade/BalanceFacade.java +++ b/account-query/src/main/java/cz/muni/pa165/banking/application/facade/BalanceFacade.java @@ -65,4 +65,7 @@ public class BalanceFacade { return toReturn.stream().map(balanceMapper::mapTransactionIn).toList(); } + public void deleteBalance(String id) throws NotFoundAccountException { + balanceService.deleteBalance(id); + } } diff --git a/account-query/src/main/java/cz/muni/pa165/banking/application/service/BalanceServiceImpl.java b/account-query/src/main/java/cz/muni/pa165/banking/application/service/BalanceServiceImpl.java index 22251de2253d8dd1e6d974ce7c25a499e70104cb..d702ee1d2bc618c6ac45f0c3206c1c79bfc98056 100644 --- a/account-query/src/main/java/cz/muni/pa165/banking/application/service/BalanceServiceImpl.java +++ b/account-query/src/main/java/cz/muni/pa165/banking/application/service/BalanceServiceImpl.java @@ -95,4 +95,11 @@ public class BalanceServiceImpl implements BalanceService { } return result; } + + @Override + public void deleteBalance(String id) throws NotFoundAccountException { + Balance balance = findById(id); + transactionRepository.findByBalance(balance).forEach(a -> transactionRepository.delete(a)); + balanceRepository.delete(balance); + } } diff --git a/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/repository/BalancesRepository.java b/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/repository/BalancesRepository.java index 4021f069bca3b0f5473de500dc0e7cb145a2ae19..ae38e10cd376adda72a3cf52f0c84434cdfebdac 100644 --- a/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/repository/BalancesRepository.java +++ b/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/repository/BalancesRepository.java @@ -3,6 +3,7 @@ package cz.muni.pa165.banking.domain.balance.repository; import cz.muni.pa165.banking.domain.balance.Balance; import cz.muni.pa165.banking.domain.transaction.Transaction; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; diff --git a/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/repository/TransactionRepository.java b/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/repository/TransactionRepository.java index 67ea7b33092703cd312bba673f3dced7e254b062..9d771349cc99e013c1f1a665413c1053940b90bf 100644 --- a/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/repository/TransactionRepository.java +++ b/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/repository/TransactionRepository.java @@ -4,10 +4,14 @@ import cz.muni.pa165.banking.domain.balance.Balance; import cz.muni.pa165.banking.domain.transaction.Transaction; import cz.muni.pa165.banking.domain.transaction.TransactionType; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import java.math.BigDecimal; import java.time.OffsetDateTime; +import java.util.Collection; +import java.util.Optional; import java.util.UUID; /** @@ -20,4 +24,7 @@ public interface TransactionRepository extends JpaRepository<Transaction, Long> OffsetDateTime.now(), processId, balance); this.save(tr); } + + @Query("SELECT u FROM Transaction u where u.balance = :balance") + Collection<Transaction> findByBalance(Balance balance); } diff --git a/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/service/BalanceService.java b/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/service/BalanceService.java index c242a56b620bab2c0ce47ccd480578a02a2bf648..dcd29622dd5546f9dc5188857ad10ad7326993ec 100644 --- a/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/service/BalanceService.java +++ b/account-query/src/main/java/cz/muni/pa165/banking/domain/balance/service/BalanceService.java @@ -28,4 +28,6 @@ public interface BalanceService { List<Transaction> getAllTransactions(OffsetDateTime from, OffsetDateTime from1, BigDecimal minAmount, BigDecimal maxAmount, TransactionType transactionType); + + void deleteBalance(String id) throws NotFoundAccountException; } diff --git a/account-query/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java b/account-query/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java index 728ad9a0345e51dbb6bfbdaba46839bb7abb2f9c..1966562b036d9b31490539fa3b4e438210cc503e 100644 --- a/account-query/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java +++ b/account-query/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java @@ -13,7 +13,7 @@ import java.util.UUID; * @author Martin Mojzis */ @Entity -@Table(name = "transaction") +@Table(name = "bal_transaction") public class Transaction { @Id diff --git a/account-query/src/main/resources/application.properties b/account-query/src/main/resources/application.properties index a64b221fa14e4f724bc967804f1eca8f00d5708f..6d9f8c85592e27569bde6e5aed1e1db89ccfb8c3 100644 --- a/account-query/src/main/resources/application.properties +++ b/account-query/src/main/resources/application.properties @@ -1,10 +1,12 @@ server.port=8081 +db.hostname=localhost +spring.application.name=Balance-Query + spring.jpa.open-in-view=false -spring.datasource.url=jdbc:h2:mem:account-query;MODE=PostgreSQL -spring.datasource.driverClassName=org.h2.Driver -spring.datasource.username=account-query-service -spring.datasource.password=rnadompassword -spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +spring.datasource.url=jdbc:postgresql://${db.hostname}:5432/banking +spring.datasource.driverClassName=org.postgresql.Driver +spring.datasource.username=ACC_ACCOUNT +spring.datasource.password=accountAccPasswd # showing SQL is generally good practice for running project locally to check whether there is not an issue with implementation of JPA methods. spring.jpa.show-sql=true spring.jackson.property-naming-strategy=SNAKE_CASE diff --git a/account-query/src/main/resources/openapi.yaml b/account-query/src/main/resources/openapi.yaml index dd10e76d9e992ad34dd1d3c8caee7205cb627ffc..344ed566183609927723e57bc97646414b7b7065 100644 --- a/account-query/src/main/resources/openapi.yaml +++ b/account-query/src/main/resources/openapi.yaml @@ -115,6 +115,18 @@ paths: "201": description: OK + /balance: + delete: + tags: + - SystemService + summary: deletes a balance + operationId: deleteBalance + parameters: + - { name: id, in: query, required: true, schema: { type: string }, description: "id of account" } + responses: + "200": + description: OK + /balance/add: post: tags: diff --git a/account-query/src/test/java/cz/muni/pa165/banking/application/controller/BalanceControllerIT.java b/account-query/src/test/java/cz/muni/pa165/banking/application/controller/BalanceControllerIT.java index c3d1e1fe4a27d5812b01e20a6d37e527a26bac1e..72650b9230bbe2e18f657bdf3ace51ad46e2552c 100644 --- a/account-query/src/test/java/cz/muni/pa165/banking/application/controller/BalanceControllerIT.java +++ b/account-query/src/test/java/cz/muni/pa165/banking/application/controller/BalanceControllerIT.java @@ -18,11 +18,11 @@ import org.springframework.test.web.servlet.MockMvc; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.time.OffsetDateTime; +import java.util.Arrays; import java.util.List; import java.util.UUID; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.assertj.core.api.Assertions.assertThat; @@ -157,19 +157,20 @@ public class BalanceControllerIT { @Test void getAllTransactions_returnsAllTransactions() throws Exception { // Arrange - mockMvc.perform(post("/balance/new?id=id")); - mockMvc.perform(post("/balance/add?id=id&amount=20&processId=5612b08f-27c2-42ca-9f23-0c9aff6ad877&type=WITHDRAW")); - mockMvc.perform(post("/balance/new?id=i")); - mockMvc.perform(post("/balance/add?id=i&amount=40&processId=5612b08f-27c2-42ca-9f23-0c9aff6ad874&type=WITHDRAW")); + + mockMvc.perform(post("/balance/new?id=idddd")); + mockMvc.perform(post("/balance/add?id=idddd&amount=20&processId=5612b08f-27c2-42ca-9f23-0c9aff6ad847&type=WITHDRAW")); + mockMvc.perform(post("/balance/new?id=idd")); + mockMvc.perform(post("/balance/add?id=idd&amount=40&processId=5612b08f-27c2-42ca-9f23-0c9aff64d874&type=WITHDRAW")); cz.muni.pa165.banking.account.query.dto.Transaction transaction = new Transaction(); transaction.setDate(OffsetDateTime.now()); transaction.setAmount(BigDecimal.valueOf(20)); - transaction.setProcessId(UUID.fromString("5612b08f-27c2-42ca-9f23-0c9aff6ad877")); + transaction.setProcessId(UUID.fromString("5612b08f-27c2-42ca-9f23-0c9aff6ad847")); transaction.setTransactionType(cz.muni.pa165.banking.account.query.dto.TransactionType.WITHDRAW); cz.muni.pa165.banking.account.query.dto.Transaction transaction2 = new Transaction(); transaction2.setDate(OffsetDateTime.now()); transaction2.setAmount(BigDecimal.valueOf(40)); - transaction2.setProcessId(UUID.fromString("5612b08f-27c2-42ca-9f23-0c9aff6ad874")); + transaction2.setProcessId(UUID.fromString("5612b08f-27c2-42ca-9f23-0c9aff64d874")); transaction2.setTransactionType(cz.muni.pa165.banking.account.query.dto.TransactionType.WITHDRAW); // Act String id = "id"; @@ -179,26 +180,30 @@ public class BalanceControllerIT { .andReturn() .getResponse() .getContentAsString(StandardCharsets.UTF_8); - cz.muni.pa165.banking.account.query.dto.Transaction[] response = OBJECT_MAPPER.readValue(responseJson, cz.muni.pa165.banking.account.query.dto.Transaction[].class); + List<cz.muni.pa165.banking.account.query.dto.Transaction> response = Arrays.stream(OBJECT_MAPPER.readValue(responseJson, Transaction[].class)).toList(); + mockMvc.perform(delete("/balance?id=idddd")); + mockMvc.perform(delete("/balance?id=idd")); // Assert - assertThat(response[0].getAmount().byteValueExact()).isEqualTo(transaction2.getAmount().byteValueExact()); - assertThat(response[0].getProcessId()).isEqualTo(transaction2.getProcessId()); - assertThat(response[0].getTransactionType()).isEqualTo(transaction2.getTransactionType()); - assertThat(response[1].getAmount().byteValueExact()).isEqualTo(transaction.getAmount().byteValueExact()); - assertThat(response[1].getProcessId()).isEqualTo(transaction.getProcessId()); - assertThat(response[1].getTransactionType()).isEqualTo(transaction.getTransactionType()); + assertThat(response.stream().filter(a -> a.getProcessId().equals(transaction2.getProcessId())).findFirst().get() + .getAmount().byteValueExact()).isEqualTo(transaction2.getAmount().byteValueExact()); + assertThat(response.stream().filter(a -> a.getProcessId().equals(transaction2.getProcessId())).findFirst().get() + .getTransactionType()).isEqualTo(transaction2.getTransactionType()); + assertThat(response.stream().filter(a -> a.getProcessId().equals(transaction.getProcessId())).findFirst().get() + .getAmount().byteValueExact()).isEqualTo(transaction.getAmount().byteValueExact()); + assertThat(response.stream().filter(a -> a.getProcessId().equals(transaction.getProcessId())).findFirst().get() + .getTransactionType()).isEqualTo(transaction.getTransactionType()); } @Test void getReport_personExists_returnsReport() throws Exception { // Arrange mockMvc.perform(post("/balance/new?id=iddd")); - mockMvc.perform(post("/balance/add?id=iddd&amount=20&processId=5612b08f-27c2-42ca-9f23-0c9aff6ad877&type=WITHDRAW")); + mockMvc.perform(post("/balance/add?id=iddd&amount=20&processId=5612b08f-27c2-42ca-9f26-0c9aff6ad877&type=WITHDRAW")); cz.muni.pa165.banking.account.query.dto.Transaction transaction = new Transaction(); transaction.setDate(OffsetDateTime.now()); transaction.setAmount(BigDecimal.valueOf(20)); - transaction.setProcessId(UUID.fromString("5612b08f-27c2-42ca-9f23-0c9aff6ad877")); + transaction.setProcessId(UUID.fromString("5612b08f-27c2-42ca-9f26-0c9aff6ad877")); transaction.setTransactionType(cz.muni.pa165.banking.account.query.dto.TransactionType.WITHDRAW); // Act String id = "id"; @@ -209,6 +214,7 @@ public class BalanceControllerIT { .getResponse() .getContentAsString(StandardCharsets.UTF_8); cz.muni.pa165.banking.account.query.dto.TransactionsReport response = OBJECT_MAPPER.readValue(responseJson, cz.muni.pa165.banking.account.query.dto.TransactionsReport.class); + mockMvc.perform(delete("/balance?id=iddd")); // Assert assertThat(response.getWithdrawalAmount().getAmountIn().byteValueExact()).isEqualTo(BigDecimal.valueOf(20).byteValueExact()); diff --git a/account-query/src/test/java/cz/muni/pa165/banking/application/repository/BalancesRepositoryTest.java b/account-query/src/test/java/cz/muni/pa165/banking/application/repository/BalancesRepositoryTest.java deleted file mode 100644 index eedc6482be6e8ac9632c2f802626a23e39370d11..0000000000000000000000000000000000000000 --- a/account-query/src/test/java/cz/muni/pa165/banking/application/repository/BalancesRepositoryTest.java +++ /dev/null @@ -1,61 +0,0 @@ -package cz.muni.pa165.banking.application.repository; - -import cz.muni.pa165.banking.domain.balance.Balance; -import cz.muni.pa165.banking.domain.balance.repository.BalancesRepository; -import jakarta.transaction.Transactional; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Optional; - -import static org.assertj.core.api.Assertions.assertThat; - -@ExtendWith(SpringExtension.class) -@Transactional -@DataJpaTest -class BalancesRepositoryTest { - - @Autowired - BalancesRepository balancesRepository; - @BeforeEach - public void init(){ - balancesRepository.addBalance("id1"); - balancesRepository.addBalance("id2"); - } - - @Test - void findById_accountNotExists_returnsEmpty() - { - //Act - Optional<Balance> result = balancesRepository.findById("id3"); - - //Assert - assertThat(result).isEqualTo(Optional.empty()); - } - @Test - void findById_accountExists_returnsBalance() - { - //Act - Optional<Balance> result = balancesRepository.findById("id2"); - - //Assert - assertThat(result).isNotNull(); - assertThat(result.get().getAmount()).isEqualTo(BigDecimal.ZERO); - assertThat(result.get().getAccountId()).isEqualTo("id2"); - } - @Test - void getAllIds_returnsAllIds(){ - //Act - List<String> ids = balancesRepository.getAllIds(); - //Assert - assertThat(ids).isNotNull(); - assertThat(ids.size()).isEqualTo(2); - assertThat(ids.contains("id1")).isEqualTo(true); - } -} \ No newline at end of file