diff --git a/build.gradle b/build.gradle index 68f4cd1..6bb69a5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,15 @@ plugins { id 'checkstyle' - id 'org.springframework.boot' version '3.3.13' + id 'org.springframework.boot' version '4.0.5' id 'io.spring.dependency-management' version '1.1.7' id 'java' } group = 'com.bitpay' version = '0.0.1-SNAPSHOT' -sourceCompatibility = '17' +java { + sourceCompatibility = '17' +} repositories { mavenCentral() @@ -29,12 +31,12 @@ dependencies { compileOnly 'org.projectlombok:lombok:1.18.44' implementation 'com.google.code.gson:gson:2.13.2' implementation 'com.bitpay:bitpay_sdk:10.3.0' - implementation 'org.liquibase:liquibase-core:4.31.1' - implementation 'com.h2database:h2:2.1.214' + implementation 'org.liquibase:liquibase-core:5.0.2' + implementation 'com.h2database:h2:2.3.232' implementation 'org.springframework:spring-webflux:7.0.6' implementation 'org.springframework:spring-websocket:7.0.6' implementation 'org.springframework:spring-messaging:7.0.6' - implementation "org.springframework.boot:spring-boot-starter-data-jpa:3.5.12" + implementation "org.springframework.boot:spring-boot-starter-data-jpa:4.0.5" implementation 'org.springframework.boot:spring-boot-starter-log4j2' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' @@ -74,13 +76,13 @@ task integrationTest(type: Test) { } checkstyle { - toolVersion = "8.39" - project.ext.checkstyleVersion = '8.39' + toolVersion = "10.20.2" + project.ext.checkstyleVersion = '10.20.2' configFile = rootProject.file("${rootProject.projectDir}/config/checkstyle/checkstyle.xml") } tasks.withType(Checkstyle) { reports { - xml.destination rootProject.file("build/reports/checkstyle-result.xml") + xml.outputLocation = rootProject.file("build/reports/checkstyle-result.xml") } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3a02907..29a0dd9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/intTest/java/com/bitpay/demo/AbstractIntegrationTest.java b/src/intTest/java/com/bitpay/demo/AbstractIntegrationTest.java index 51d91d3..469e8e8 100644 --- a/src/intTest/java/com/bitpay/demo/AbstractIntegrationTest.java +++ b/src/intTest/java/com/bitpay/demo/AbstractIntegrationTest.java @@ -17,7 +17,7 @@ import org.junit.jupiter.api.BeforeEach; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.context.TestPropertySource; @TestPropertySource(properties = {"spring.config.location=classpath:application-integrationtest.yaml"}) @@ -30,7 +30,7 @@ public abstract class AbstractIntegrationTest implements UnitTest { @Autowired protected InvoiceRepository invoiceRepository; - @MockBean + @MockitoBean private Logger logger; @BeforeEach diff --git a/src/intTest/java/com/bitpay/demo/AbstractUiIntegrationTest.java b/src/intTest/java/com/bitpay/demo/AbstractUiIntegrationTest.java index 2f4a1a7..bbf6ee6 100644 --- a/src/intTest/java/com/bitpay/demo/AbstractUiIntegrationTest.java +++ b/src/intTest/java/com/bitpay/demo/AbstractUiIntegrationTest.java @@ -9,7 +9,6 @@ import java.util.Objects; import javax.annotation.Nullable; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; @@ -19,7 +18,6 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; -@AutoConfigureMockMvc @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public abstract class AbstractUiIntegrationTest extends AbstractIntegrationTest { @Autowired diff --git a/src/intTest/java/com/bitpay/demo/donation/infrastructure/ui/createdonation/CreateDonationIntegrationTest.java b/src/intTest/java/com/bitpay/demo/donation/infrastructure/ui/createdonation/CreateDonationIntegrationTest.java index b36df3a..67794e4 100644 --- a/src/intTest/java/com/bitpay/demo/donation/infrastructure/ui/createdonation/CreateDonationIntegrationTest.java +++ b/src/intTest/java/com/bitpay/demo/donation/infrastructure/ui/createdonation/CreateDonationIntegrationTest.java @@ -15,7 +15,7 @@ import org.junit.jupiter.api.Test; import org.mockito.ArgumentMatchers; import org.mockito.Mockito; -import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.context.TestPropertySource; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; @@ -28,7 +28,7 @@ public class CreateDonationIntegrationTest extends AbstractUiIntegrationTest { private static final String URL = "/invoice"; - @MockBean + @MockitoBean private Client bitpayClient; @BeforeEach diff --git a/src/intTest/java/com/bitpay/demo/invoice/infrastructure/ui/createinvoice/CreateInvoiceIntegrationTest.java b/src/intTest/java/com/bitpay/demo/invoice/infrastructure/ui/createinvoice/CreateInvoiceIntegrationTest.java index 3979368..8ab148e 100644 --- a/src/intTest/java/com/bitpay/demo/invoice/infrastructure/ui/createinvoice/CreateInvoiceIntegrationTest.java +++ b/src/intTest/java/com/bitpay/demo/invoice/infrastructure/ui/createinvoice/CreateInvoiceIntegrationTest.java @@ -14,7 +14,7 @@ import org.junit.jupiter.api.Test; import org.mockito.ArgumentMatchers; import org.mockito.Mockito; -import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; @@ -22,7 +22,7 @@ public class CreateInvoiceIntegrationTest extends AbstractUiIntegrationTest { private static final String URL = "/invoice"; - @MockBean + @MockitoBean private Client bitpayClient; @BeforeEach diff --git a/src/intTest/java/com/bitpay/demo/invoice/infrastructure/ui/updateinvoice/UpdateInvoiceIntegrationTest.java b/src/intTest/java/com/bitpay/demo/invoice/infrastructure/ui/updateinvoice/UpdateInvoiceIntegrationTest.java index 2e73918..e29e448 100644 --- a/src/intTest/java/com/bitpay/demo/invoice/infrastructure/ui/updateinvoice/UpdateInvoiceIntegrationTest.java +++ b/src/intTest/java/com/bitpay/demo/invoice/infrastructure/ui/updateinvoice/UpdateInvoiceIntegrationTest.java @@ -76,7 +76,7 @@ public void shouldNotUpdateInvoiceWhenUpdateDataAreInvalid() throws Exception { // then result.andExpect(MockMvcResultMatchers.status().isBadRequest()) - .andExpect(MockMvcResultMatchers.content().json(getDataFromFile("invalidUpdateDataResponse.json"), false)); + .andExpect(MockMvcResultMatchers.content().json(getDataFromFile("invalidUpdateDataResponse.json"))); Assertions.assertEquals( "new", this.invoiceRepository.findById(invoice.getInvoiceId()).getStatus().value() diff --git a/src/intTest/resources/application-integrationtest.yaml b/src/intTest/resources/application-integrationtest.yaml index 4c4d138..a0356c8 100644 --- a/src/intTest/resources/application-integrationtest.yaml +++ b/src/intTest/resources/application-integrationtest.yaml @@ -58,22 +58,34 @@ bitpay: server: port: 8000 + error: + path: /error spring: datasource: - url: "jdbc:h2:mem:test;MODE=MYSQL" + url: "jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE" username: test password: test hikari: maxLifetime: 150000 + maximumPoolSize: 2 jpa: hibernate: - ddl-auto: none + ddl-auto: create-drop properties: hibernate: dialect: org.hibernate.dialect.H2Dialect format: true + enable_lazy_load_no_trans: false + jdbc.batch_size: 20 + order.inserts: true + order.updates: true + liquibase: + enabled: false main: banner-mode: off + web: + resources: + add-mappings: true -app-url: "https://localhost:8080" \ No newline at end of file +app-url: "https://localhost:8080" diff --git a/src/main/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/CreateInvoice.java b/src/main/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/CreateInvoice.java index 6b66049..ebbb24c 100644 --- a/src/main/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/CreateInvoice.java +++ b/src/main/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/CreateInvoice.java @@ -17,6 +17,7 @@ import java.util.Map; import java.util.UUID; import lombok.NonNull; +import org.springframework.transaction.annotation.Transactional; @DependencyInjection public class CreateInvoice { @@ -42,6 +43,7 @@ public class CreateInvoice { } @NonNull + @Transactional public String execute(@NonNull final Map requestParameters) throws MissingRequiredField, BitPayException { diff --git a/src/main/java/com/bitpay/demo/invoice/infrastructure/ui/createinvoice/HttpCreateInvoice.java b/src/main/java/com/bitpay/demo/invoice/infrastructure/ui/createinvoice/HttpCreateInvoice.java index 6b95ad4..bcc401a 100644 --- a/src/main/java/com/bitpay/demo/invoice/infrastructure/ui/createinvoice/HttpCreateInvoice.java +++ b/src/main/java/com/bitpay/demo/invoice/infrastructure/ui/createinvoice/HttpCreateInvoice.java @@ -26,7 +26,9 @@ public HttpCreateInvoice(@NonNull final CreateInvoice createInvoice) { } @PostMapping("/invoice") - public ResponseEntity execute(@NonNull @RequestParam final Map params) throws BitPayException { + public ResponseEntity execute( + @NonNull @RequestParam final Map params + ) throws BitPayException { final String url = this.createInvoice.execute(params); final HttpHeaders headers = new HttpHeaders(); diff --git a/src/main/java/com/bitpay/demo/shared/infrastructure/CustomErrorViewResolver.java b/src/main/java/com/bitpay/demo/shared/infrastructure/CustomErrorViewResolver.java index f7269c4..7204a39 100644 --- a/src/main/java/com/bitpay/demo/shared/infrastructure/CustomErrorViewResolver.java +++ b/src/main/java/com/bitpay/demo/shared/infrastructure/CustomErrorViewResolver.java @@ -6,17 +6,13 @@ package com.bitpay.demo.shared.infrastructure; import com.bitpay.demo.shared.bitpayproperties.BitPayProperties; -import jakarta.servlet.http.HttpServletRequest; -import java.util.Map; import lombok.NonNull; -import org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpStatus; -import org.springframework.web.servlet.ModelAndView; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ModelAttribute; - -@Configuration -class CustomErrorViewResolver implements ErrorViewResolver { +@ControllerAdvice +class CustomErrorViewResolver { private final BitPayProperties bitPayProperties; @@ -24,16 +20,8 @@ class CustomErrorViewResolver implements ErrorViewResolver { this.bitPayProperties = bitPayProperties; } - @Override - public ModelAndView resolveErrorView( - @NonNull final HttpServletRequest request, - @NonNull final HttpStatus status, - @NonNull final Map model - ) { - if (!HttpStatus.NOT_FOUND.equals(status)) { - return null; - } - - return new ModelAndView("error/404", "design", this.bitPayProperties.getDesign()); + @ModelAttribute + public void addDesignAttribute(Model model) { + model.addAttribute("design", this.bitPayProperties.getDesign()); } } diff --git a/src/main/resources/META-INF/orm.xml b/src/main/resources/META-INF/orm.xml index bbe3466..c82ee1e 100644 --- a/src/main/resources/META-INF/orm.xml +++ b/src/main/resources/META-INF/orm.xml @@ -569,7 +569,7 @@ - + @@ -628,4 +628,4 @@ - \ No newline at end of file + diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index a25883d..0f483d6 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -58,6 +58,8 @@ bitpay: server: port: 8000 + error: + path: /error spring: datasource: @@ -75,5 +77,8 @@ spring: format: true main: banner-mode: off + web: + resources: + add-mappings: true -app-url: "https://localhost:8080" \ No newline at end of file +app-url: "https://localhost:8080" diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceBuyerFactoryTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceBuyerFactoryTest.java index 467dad0..384a513 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceBuyerFactoryTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceBuyerFactoryTest.java @@ -5,7 +5,6 @@ package com.bitpay.demo.invoice.application.features.tasks.createinvoice; -import com.bitpay.demo.UnitTest; import com.bitpay.demo.invoice.domain.buyer.BuyerEmailAddress; import com.bitpay.demo.invoice.domain.buyer.BuyerName; import com.bitpay.demo.invoice.domain.buyer.BuyerPhoneNumber; @@ -22,7 +21,7 @@ import org.mockito.Mockito; import org.skyscreamer.jsonassert.JSONAssert; -class InvoiceBuyerFactoryTest implements UnitTest, GetBitPayInvoice { +class InvoiceBuyerFactoryTest implements GetBitPayInvoice { @Test void shouldMapToInvoiceBuyer() throws JSONException { diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceBuyerProvidedInfoFactoryTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceBuyerProvidedInfoFactoryTest.java index c27ad10..cca87ab 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceBuyerProvidedInfoFactoryTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceBuyerProvidedInfoFactoryTest.java @@ -5,12 +5,11 @@ package com.bitpay.demo.invoice.application.features.tasks.createinvoice; -import com.bitpay.demo.UnitTest; import org.json.JSONException; import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; -class InvoiceBuyerProvidedInfoFactoryTest implements UnitTest, GetBitPayInvoice { +class InvoiceBuyerProvidedInfoFactoryTest implements GetBitPayInvoice { @Test void shouldMapToInvoiceBuyerProvidedInfo() throws JSONException { diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceFactoryTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceFactoryTest.java index 64b1d00..2b8431a 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceFactoryTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceFactoryTest.java @@ -5,7 +5,6 @@ package com.bitpay.demo.invoice.application.features.tasks.createinvoice; -import com.bitpay.demo.UnitTest; import com.bitpay.demo.invoice.domain.Amount; import com.bitpay.demo.invoice.domain.Invoice; import com.bitpay.demo.invoice.domain.InvoiceUuid; @@ -35,7 +34,7 @@ import org.skyscreamer.jsonassert.JSONCompareMode; import org.skyscreamer.jsonassert.comparator.CustomComparator; -class InvoiceFactoryTest implements UnitTest, GetBitPayInvoice { +class InvoiceFactoryTest implements GetBitPayInvoice { @Test void shouldMapToInvoice() throws JSONException { diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceItemizedDetailFactoryTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceItemizedDetailFactoryTest.java index 914df82..2597863 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceItemizedDetailFactoryTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceItemizedDetailFactoryTest.java @@ -5,13 +5,12 @@ package com.bitpay.demo.invoice.application.features.tasks.createinvoice; -import com.bitpay.demo.UnitTest; import com.bitpay.demo.invoice.domain.Invoice; import org.json.JSONException; import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; -class InvoiceItemizedDetailFactoryTest implements UnitTest, GetBitPayInvoice { +class InvoiceItemizedDetailFactoryTest implements GetBitPayInvoice { @Test void shouldMapToInvoiceItemizedDetail() throws JSONException { diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoicePaymentCurrencyFactoryTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoicePaymentCurrencyFactoryTest.java index b0b8337..7aa4e09 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoicePaymentCurrencyFactoryTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoicePaymentCurrencyFactoryTest.java @@ -5,14 +5,13 @@ package com.bitpay.demo.invoice.application.features.tasks.createinvoice; -import com.bitpay.demo.UnitTest; import com.bitpay.demo.invoice.domain.payment.InvoicePayment; import java.util.AbstractMap; import org.json.JSONException; import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; -class InvoicePaymentCurrencyFactoryTest implements UnitTest, GetBitPayInvoice { +class InvoicePaymentCurrencyFactoryTest implements GetBitPayInvoice { @Test void shouldMapToInvoicePaymentCurrency() throws JSONException { diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoicePaymentFactoryTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoicePaymentFactoryTest.java index 9538496..35def21 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoicePaymentFactoryTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoicePaymentFactoryTest.java @@ -5,7 +5,6 @@ package com.bitpay.demo.invoice.application.features.tasks.createinvoice; -import com.bitpay.demo.UnitTest; import com.bitpay.demo.invoice.domain.CurrencyCode; import com.bitpay.demo.invoice.domain.payment.DisplaySubtotal; import com.bitpay.demo.invoice.domain.payment.DisplayTotal; @@ -25,7 +24,7 @@ import org.mockito.Mockito; import org.skyscreamer.jsonassert.JSONAssert; -class InvoicePaymentFactoryTest implements UnitTest, GetBitPayInvoice { +class InvoicePaymentFactoryTest implements GetBitPayInvoice { @Test void shouldMapToInvoicePayment() throws JSONException { diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceRefundFactoryTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceRefundFactoryTest.java index 8302295..b2af2b5 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceRefundFactoryTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceRefundFactoryTest.java @@ -5,7 +5,6 @@ package com.bitpay.demo.invoice.application.features.tasks.createinvoice; -import com.bitpay.demo.UnitTest; import com.bitpay.demo.invoice.domain.CurrencyCode; import com.bitpay.demo.invoice.domain.refund.InvoiceRefund; import com.bitpay.demo.invoice.domain.refund.InvoiceRefundInfo; @@ -16,7 +15,7 @@ import org.mockito.Mockito; import org.skyscreamer.jsonassert.JSONAssert; -class InvoiceRefundFactoryTest implements UnitTest, GetBitPayInvoice { +class InvoiceRefundFactoryTest implements GetBitPayInvoice { @Test void shouldMapToInvoiceRefund() throws JSONException { diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceRefundInfoFactoryTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceRefundInfoFactoryTest.java index f312345..7a8e060 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceRefundInfoFactoryTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceRefundInfoFactoryTest.java @@ -5,14 +5,13 @@ package com.bitpay.demo.invoice.application.features.tasks.createinvoice; -import com.bitpay.demo.UnitTest; import com.bitpay.demo.invoice.domain.refund.InvoiceRefund; import org.json.JSONException; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.skyscreamer.jsonassert.JSONAssert; -class InvoiceRefundInfoFactoryTest implements UnitTest, GetBitPayInvoice { +class InvoiceRefundInfoFactoryTest implements GetBitPayInvoice { @Test void shouldMapToInvoiceRefundInfo() throws JSONException { diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceTransactionFactoryTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceTransactionFactoryTest.java index 30070c2..a6d34e8 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceTransactionFactoryTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/createinvoice/InvoiceTransactionFactoryTest.java @@ -5,14 +5,13 @@ package com.bitpay.demo.invoice.application.features.tasks.createinvoice; -import com.bitpay.demo.UnitTest; import com.bitpay.demo.invoice.domain.Invoice; import org.json.JSONException; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.skyscreamer.jsonassert.JSONAssert; -class InvoiceTransactionFactoryTest implements UnitTest, GetBitPayInvoice { +class InvoiceTransactionFactoryTest implements GetBitPayInvoice { @Test void shouldMapToInvoiceTransaction() throws JSONException { diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/updateinvoice/GetInvoiceWithUpdateDataTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/updateinvoice/GetInvoiceWithUpdateDataTest.java index 9a53b9d..21edb0a 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/updateinvoice/GetInvoiceWithUpdateDataTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/updateinvoice/GetInvoiceWithUpdateDataTest.java @@ -8,6 +8,7 @@ import com.bitpay.demo.UnitTest; import com.bitpay.demo.invoice.domain.Invoice; import com.bitpay.demo.shared.StringToObjectParser; +import com.google.gson.reflect.TypeToken; import java.util.Map; import org.json.JSONException; import org.junit.jupiter.api.Test; @@ -24,7 +25,10 @@ void shouldCreateNewInvoiceWithUpdateData() throws ReflectiveOperationException, final var invoiceJson = getDataFromFile("invoice.json"); final var invoice = toObject(invoiceJson, Invoice.class); final var updateDataJson = getDataFromFile("updateData.json"); - final var updateData = toObject(updateDataJson, Map.class); + final Map updateData = GSON.fromJson( + updateDataJson, + new TypeToken>(){}.getType() + ); // when final var result = getTestedClass().execute( diff --git a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/updateinvoice/ValidateUpdateDataTest.java b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/updateinvoice/ValidateUpdateDataTest.java index 99fdc19..ee2007b 100644 --- a/src/test/java/com/bitpay/demo/invoice/application/features/tasks/updateinvoice/ValidateUpdateDataTest.java +++ b/src/test/java/com/bitpay/demo/invoice/application/features/tasks/updateinvoice/ValidateUpdateDataTest.java @@ -8,6 +8,7 @@ import com.bitpay.demo.UnitTest; import com.bitpay.demo.invoice.domain.BitPayId; import com.bitpay.demo.shared.StringToObjectParser; +import com.google.gson.reflect.TypeToken; import java.util.Map; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -18,7 +19,10 @@ class ValidateUpdateDataTest implements UnitTest { void shouldPassValidation() { // given final var updateDataJson = getDataFromFile("updateData.json"); - final var updateData = toObject(updateDataJson, Map.class); + final Map updateData = GSON.fromJson( + updateDataJson, + new TypeToken>(){}.getType() + ); // when getTestedClass().execute( @@ -34,7 +38,10 @@ void shouldPassValidation() { void shouldNotPassValidation() { // given final var updateDataJson = getDataFromFile("invalidUpdateData.json"); - final var updateData = toObject(updateDataJson, Map.class); + final Map updateData = GSON.fromJson( + updateDataJson, + new TypeToken>(){}.getType() + ); try { // when