cashpal -> buckpal
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.adapter.persistence;
|
package io.reflectoring.buckpal.adapter.persistence;
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.GeneratedValue;
|
import javax.persistence.GeneratedValue;
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
package io.reflectoring.cashpal.adapter.persistence;
|
package io.reflectoring.buckpal.adapter.persistence;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account;
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import io.reflectoring.cashpal.domain.Activity;
|
import io.reflectoring.buckpal.domain.Activity;
|
||||||
import io.reflectoring.cashpal.domain.Activity.ActivityId;
|
import io.reflectoring.buckpal.domain.Activity.ActivityId;
|
||||||
import io.reflectoring.cashpal.domain.ActivityWindow;
|
import io.reflectoring.buckpal.domain.ActivityWindow;
|
||||||
import io.reflectoring.cashpal.domain.Money;
|
import io.reflectoring.buckpal.domain.Money;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
package io.reflectoring.cashpal.adapter.persistence;
|
package io.reflectoring.buckpal.adapter.persistence;
|
||||||
|
|
||||||
import javax.persistence.EntityNotFoundException;
|
import javax.persistence.EntityNotFoundException;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.application.port.out.LoadAccountPort;
|
import io.reflectoring.buckpal.application.port.out.LoadAccountPort;
|
||||||
import io.reflectoring.cashpal.application.port.out.UpdateAccountStatePort;
|
import io.reflectoring.buckpal.application.port.out.UpdateAccountStatePort;
|
||||||
import io.reflectoring.cashpal.testdata.PersistenceAdapter;
|
import io.reflectoring.buckpal.testdata.PersistenceAdapter;
|
||||||
import io.reflectoring.cashpal.domain.Account;
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import io.reflectoring.cashpal.domain.Activity;
|
import io.reflectoring.buckpal.domain.Activity;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.adapter.persistence;
|
package io.reflectoring.buckpal.adapter.persistence;
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.adapter.persistence;
|
package io.reflectoring.buckpal.adapter.persistence;
|
||||||
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.adapter.persistence;
|
package io.reflectoring.buckpal.adapter.persistence;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
package io.reflectoring.cashpal.adapter.persistence;
|
package io.reflectoring.buckpal.adapter.persistence;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account;
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import io.reflectoring.cashpal.domain.ActivityWindow;
|
import io.reflectoring.buckpal.domain.ActivityWindow;
|
||||||
import io.reflectoring.cashpal.domain.Money;
|
import io.reflectoring.buckpal.domain.Money;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
import org.springframework.test.context.jdbc.Sql;
|
import org.springframework.test.context.jdbc.Sql;
|
||||||
import static io.reflectoring.cashpal.testdata.AccountTestData.*;
|
import static io.reflectoring.buckpal.testdata.AccountTestData.*;
|
||||||
import static io.reflectoring.cashpal.testdata.ActivityTestData.*;
|
import static io.reflectoring.buckpal.testdata.ActivityTestData.*;
|
||||||
import static org.assertj.core.api.Assertions.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
@DataJpaTest
|
@DataJpaTest
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.adapter.persistence;
|
package io.reflectoring.buckpal.adapter.persistence;
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation project(':common')
|
implementation project(':common')
|
||||||
implementation project(':cashpal-application')
|
implementation project(':buckpal-application')
|
||||||
|
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
package io.reflectoring.buckpal.adapter.web;
|
||||||
|
|
||||||
|
class AccountResource {
|
||||||
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package io.reflectoring.cashpal.adapter.web;
|
package io.reflectoring.buckpal.adapter.web;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.application.port.in.SendMoneyUseCase;
|
import io.reflectoring.buckpal.application.port.in.SendMoneyUseCase;
|
||||||
import io.reflectoring.cashpal.application.port.in.SendMoneyUseCase.SendMoneyCommand;
|
import io.reflectoring.buckpal.application.port.in.SendMoneyUseCase.SendMoneyCommand;
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import io.reflectoring.cashpal.domain.Money;
|
import io.reflectoring.buckpal.domain.Money;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package io.reflectoring.cashpal.adapter.web;
|
package io.reflectoring.buckpal.adapter.web;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.application.port.in.SendMoneyUseCase;
|
import io.reflectoring.buckpal.application.port.in.SendMoneyUseCase;
|
||||||
import io.reflectoring.cashpal.application.port.in.SendMoneyUseCase.SendMoneyCommand;
|
import io.reflectoring.buckpal.application.port.in.SendMoneyUseCase.SendMoneyCommand;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.adapter.web;
|
package io.reflectoring.buckpal.adapter.web;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
package io.reflectoring.cashpal.adapter.web;
|
|
||||||
|
|
||||||
class AccountResource {
|
|
||||||
}
|
|
||||||
@@ -17,7 +17,7 @@ dependencies {
|
|||||||
testImplementation 'com.tngtech.archunit:archunit:0.9.3'
|
testImplementation 'com.tngtech.archunit:archunit:0.9.3'
|
||||||
testImplementation 'de.adesso:junit-insights:1.1.0'
|
testImplementation 'de.adesso:junit-insights:1.1.0'
|
||||||
testImplementation 'org.junit.platform:junit-platform-launcher:1.4.2'
|
testImplementation 'org.junit.platform:junit-platform-launcher:1.4.2'
|
||||||
testImplementation project(':cashpal-testdata')
|
testImplementation project(':buckpal-testdata')
|
||||||
}
|
}
|
||||||
|
|
||||||
test {
|
test {
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package io.reflectoring.buckpal.application.port.in;
|
||||||
|
|
||||||
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
|
import io.reflectoring.buckpal.domain.Money;
|
||||||
|
|
||||||
|
public interface GetAccountBalanceQuery {
|
||||||
|
|
||||||
|
Money getAccountBalance(AccountId accountId);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package io.reflectoring.cashpal.application.port.in;
|
package io.reflectoring.buckpal.application.port.in;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.testdata.SelfValidating;
|
import io.reflectoring.buckpal.testdata.SelfValidating;
|
||||||
import io.reflectoring.cashpal.domain.Account;
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
import io.reflectoring.cashpal.domain.Money;
|
import io.reflectoring.buckpal.domain.Money;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Value;
|
import lombok.Value;
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package io.reflectoring.cashpal.application.port.out;
|
package io.reflectoring.buckpal.application.port.out;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account;
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
|
|
||||||
public interface AccountLock {
|
public interface AccountLock {
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package io.reflectoring.buckpal.application.port.out;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
|
|
||||||
|
public interface LoadAccountPort {
|
||||||
|
|
||||||
|
Account loadAccount(AccountId accountId, LocalDateTime baselineDate);
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package io.reflectoring.buckpal.application.port.out;
|
||||||
|
|
||||||
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
|
|
||||||
|
public interface UpdateAccountStatePort {
|
||||||
|
|
||||||
|
void updateActivities(Account account);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package io.reflectoring.cashpal.application.service;
|
package io.reflectoring.buckpal.application.service;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.application.port.in.GetAccountBalanceQuery;
|
import io.reflectoring.buckpal.application.port.in.GetAccountBalanceQuery;
|
||||||
import io.reflectoring.cashpal.application.port.out.LoadAccountPort;
|
import io.reflectoring.buckpal.application.port.out.LoadAccountPort;
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import io.reflectoring.cashpal.domain.Money;
|
import io.reflectoring.buckpal.domain.Money;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package io.reflectoring.cashpal.application.service;
|
package io.reflectoring.buckpal.application.service;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.application.port.out.AccountLock;
|
import io.reflectoring.buckpal.application.port.out.AccountLock;
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
package io.reflectoring.cashpal.application.service;
|
package io.reflectoring.buckpal.application.service;
|
||||||
|
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.application.port.in.SendMoneyUseCase;
|
import io.reflectoring.buckpal.application.port.in.SendMoneyUseCase;
|
||||||
import io.reflectoring.cashpal.application.port.out.AccountLock;
|
import io.reflectoring.buckpal.application.port.out.AccountLock;
|
||||||
import io.reflectoring.cashpal.application.port.out.LoadAccountPort;
|
import io.reflectoring.buckpal.application.port.out.LoadAccountPort;
|
||||||
import io.reflectoring.cashpal.application.port.out.UpdateAccountStatePort;
|
import io.reflectoring.buckpal.application.port.out.UpdateAccountStatePort;
|
||||||
import io.reflectoring.cashpal.domain.Account;
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
import io.reflectoring.cashpal.testdata.UseCase;
|
import io.reflectoring.buckpal.testdata.UseCase;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.domain;
|
package io.reflectoring.buckpal.domain;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.domain;
|
package io.reflectoring.buckpal.domain;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.domain;
|
package io.reflectoring.buckpal.domain;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -6,7 +6,7 @@ import java.util.Arrays;
|
|||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.domain;
|
package io.reflectoring.buckpal.domain;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
package io.reflectoring.cashpal.application.service;
|
package io.reflectoring.buckpal.application.service;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.application.port.in.SendMoneyUseCase.SendMoneyCommand;
|
import io.reflectoring.buckpal.application.port.in.SendMoneyUseCase.SendMoneyCommand;
|
||||||
import io.reflectoring.cashpal.application.port.out.AccountLock;
|
import io.reflectoring.buckpal.application.port.out.AccountLock;
|
||||||
import io.reflectoring.cashpal.application.port.out.LoadAccountPort;
|
import io.reflectoring.buckpal.application.port.out.LoadAccountPort;
|
||||||
import io.reflectoring.cashpal.application.port.out.UpdateAccountStatePort;
|
import io.reflectoring.buckpal.application.port.out.UpdateAccountStatePort;
|
||||||
import io.reflectoring.cashpal.domain.Account;
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import io.reflectoring.cashpal.domain.Money;
|
import io.reflectoring.buckpal.domain.Money;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package io.reflectoring.cashpal.domain;
|
package io.reflectoring.buckpal.domain;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import static io.reflectoring.cashpal.testdata.AccountTestData.*;
|
import static io.reflectoring.buckpal.testdata.AccountTestData.*;
|
||||||
import static io.reflectoring.cashpal.testdata.ActivityTestData.*;
|
import static io.reflectoring.buckpal.testdata.ActivityTestData.*;
|
||||||
import static org.assertj.core.api.Assertions.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
class AccountTest {
|
class AccountTest {
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package io.reflectoring.cashpal.domain;
|
package io.reflectoring.buckpal.domain;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import org.assertj.core.api.Assertions;
|
import org.assertj.core.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import static io.reflectoring.cashpal.testdata.ActivityTestData.*;
|
import static io.reflectoring.buckpal.testdata.ActivityTestData.*;
|
||||||
|
|
||||||
class ActivityWindowTest {
|
class ActivityWindowTest {
|
||||||
|
|
||||||
@@ -5,9 +5,9 @@ plugins {
|
|||||||
dependencies {
|
dependencies {
|
||||||
|
|
||||||
implementation project(':common')
|
implementation project(':common')
|
||||||
implementation project(':cashpal-application')
|
implementation project(':buckpal-application')
|
||||||
implementation project(':adapters:cashpal-persistence')
|
implementation project(':adapters:buckpal-persistence')
|
||||||
implementation project(':adapters:cashpal-web')
|
implementation project(':adapters:buckpal-web')
|
||||||
implementation ('org.springframework.boot:spring-boot-starter-web')
|
implementation ('org.springframework.boot:spring-boot-starter-web')
|
||||||
|
|
||||||
testImplementation('org.springframework.boot:spring-boot-starter-test') {
|
testImplementation('org.springframework.boot:spring-boot-starter-test') {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal;
|
package io.reflectoring.buckpal;
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal;
|
package io.reflectoring.buckpal;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package io.reflectoring.cashpal;
|
package io.reflectoring.buckpal;
|
||||||
|
|
||||||
import com.tngtech.archunit.core.importer.ClassFileImporter;
|
import com.tngtech.archunit.core.importer.ClassFileImporter;
|
||||||
import io.reflectoring.cashpal.archunit.HexagonalArchitecture;
|
import io.reflectoring.buckpal.archunit.HexagonalArchitecture;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.*;
|
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.*;
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@ class DependencyRuleTests {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void validateRegistrationContextArchitecture() {
|
void validateRegistrationContextArchitecture() {
|
||||||
HexagonalArchitecture.boundedContext("io.reflectoring.cashpal")
|
HexagonalArchitecture.boundedContext("io.reflectoring.buckpal")
|
||||||
|
|
||||||
.withDomainLayer("domain")
|
.withDomainLayer("domain")
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ class DependencyRuleTests {
|
|||||||
|
|
||||||
.withConfiguration("configuration")
|
.withConfiguration("configuration")
|
||||||
.check(new ClassFileImporter()
|
.check(new ClassFileImporter()
|
||||||
.importPackages("io.reflectoring.cashpal.."));
|
.importPackages("io.reflectoring.buckpal.."));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
package io.reflectoring.buckpal;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import io.reflectoring.buckpal.application.port.out.LoadAccountPort;
|
||||||
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
|
import io.reflectoring.buckpal.domain.Money;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||||
|
import org.springframework.boot.test.web.client.TestRestTemplate;
|
||||||
|
import org.springframework.http.HttpEntity;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.test.context.jdbc.Sql;
|
||||||
|
import static org.assertj.core.api.BDDAssertions.*;
|
||||||
|
|
||||||
|
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
|
||||||
|
class SendMoneySystemTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TestRestTemplate restTemplate;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LoadAccountPort loadAccountPort;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Sql("SendMoneySystemTest.sql")
|
||||||
|
void sendMoney() {
|
||||||
|
|
||||||
|
Money initialSourceBalance = sourceAccount().calculateBalance();
|
||||||
|
Money initialTargetBalance = targetAccount().calculateBalance();
|
||||||
|
|
||||||
|
ResponseEntity response = whenSendMoney(
|
||||||
|
sourceAccountId(),
|
||||||
|
targetAccountId(),
|
||||||
|
transferredAmount());
|
||||||
|
|
||||||
|
then(response.getStatusCode())
|
||||||
|
.isEqualTo(HttpStatus.OK);
|
||||||
|
|
||||||
|
then(sourceAccount().calculateBalance())
|
||||||
|
.isEqualTo(initialSourceBalance.minus(transferredAmount()));
|
||||||
|
|
||||||
|
then(targetAccount().calculateBalance())
|
||||||
|
.isEqualTo(initialTargetBalance.plus(transferredAmount()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private Account sourceAccount() {
|
||||||
|
return loadAccount(sourceAccountId());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Account targetAccount() {
|
||||||
|
return loadAccount(targetAccountId());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Account loadAccount(AccountId accountId) {
|
||||||
|
return loadAccountPort.loadAccount(
|
||||||
|
accountId,
|
||||||
|
LocalDateTime.now());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private ResponseEntity whenSendMoney(
|
||||||
|
AccountId sourceAccountId,
|
||||||
|
AccountId targetAccountId,
|
||||||
|
Money amount) {
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.add("Content-Type", "application/json");
|
||||||
|
HttpEntity<Void> request = new HttpEntity<>(null, headers);
|
||||||
|
|
||||||
|
return restTemplate.exchange(
|
||||||
|
"/accounts/sendMoney/{sourceAccountId}/{targetAccountId}/{amount}",
|
||||||
|
HttpMethod.POST,
|
||||||
|
request,
|
||||||
|
Object.class,
|
||||||
|
sourceAccountId.getValue(),
|
||||||
|
targetAccountId.getValue(),
|
||||||
|
amount.getAmount());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Money transferredAmount() {
|
||||||
|
return Money.of(500L);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Money balanceOf(AccountId accountId) {
|
||||||
|
Account account = loadAccountPort.loadAccount(accountId, LocalDateTime.now());
|
||||||
|
return account.calculateBalance();
|
||||||
|
}
|
||||||
|
|
||||||
|
private AccountId sourceAccountId() {
|
||||||
|
return new AccountId(1L);
|
||||||
|
}
|
||||||
|
|
||||||
|
private AccountId targetAccountId() {
|
||||||
|
return new AccountId(2L);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.archunit;
|
package io.reflectoring.buckpal.archunit;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.archunit;
|
package io.reflectoring.buckpal.archunit;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.archunit;
|
package io.reflectoring.buckpal.archunit;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.archunit;
|
package io.reflectoring.buckpal.archunit;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package io.reflectoring.cashpal.testdata;
|
package io.reflectoring.buckpal.testdata;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account;
|
import io.reflectoring.buckpal.domain.Account;
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import io.reflectoring.cashpal.domain.ActivityWindow;
|
import io.reflectoring.buckpal.domain.ActivityWindow;
|
||||||
import io.reflectoring.cashpal.domain.Money;
|
import io.reflectoring.buckpal.domain.Money;
|
||||||
|
|
||||||
public class AccountTestData {
|
public class AccountTestData {
|
||||||
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package io.reflectoring.cashpal.testdata;
|
package io.reflectoring.buckpal.testdata;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
import io.reflectoring.buckpal.domain.Account.AccountId;
|
||||||
import io.reflectoring.cashpal.domain.Activity;
|
import io.reflectoring.buckpal.domain.Activity;
|
||||||
import io.reflectoring.cashpal.domain.Activity.ActivityId;
|
import io.reflectoring.buckpal.domain.Activity.ActivityId;
|
||||||
import io.reflectoring.cashpal.domain.Money;
|
import io.reflectoring.buckpal.domain.Money;
|
||||||
|
|
||||||
public class ActivityTestData {
|
public class ActivityTestData {
|
||||||
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
package io.reflectoring.cashpal.application.port.in;
|
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
|
||||||
import io.reflectoring.cashpal.domain.Money;
|
|
||||||
|
|
||||||
public interface GetAccountBalanceQuery {
|
|
||||||
|
|
||||||
Money getAccountBalance(AccountId accountId);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
package io.reflectoring.cashpal.application.port.out;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account;
|
|
||||||
import io.reflectoring.cashpal.domain.Account.AccountId;
|
|
||||||
|
|
||||||
public interface LoadAccountPort {
|
|
||||||
|
|
||||||
Account loadAccount(AccountId accountId, LocalDateTime baselineDate);
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
package io.reflectoring.cashpal.application.port.out;
|
|
||||||
|
|
||||||
import io.reflectoring.cashpal.domain.Account;
|
|
||||||
|
|
||||||
public interface UpdateAccountStatePort {
|
|
||||||
|
|
||||||
void updateActivities(Account account);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.testdata;
|
package io.reflectoring.buckpal.testdata;
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
import java.lang.annotation.Documented;
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.testdata;
|
package io.reflectoring.buckpal.testdata;
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
import java.lang.annotation.Documented;
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.testdata;
|
package io.reflectoring.buckpal.testdata;
|
||||||
|
|
||||||
import javax.validation.ConstraintViolation;
|
import javax.validation.ConstraintViolation;
|
||||||
import javax.validation.ConstraintViolationException;
|
import javax.validation.ConstraintViolationException;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.testdata;
|
package io.reflectoring.buckpal.testdata;
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
import java.lang.annotation.Documented;
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.reflectoring.cashpal.testdata;
|
package io.reflectoring.buckpal.testdata;
|
||||||
|
|
||||||
import org.springframework.core.annotation.AliasFor;
|
import org.springframework.core.annotation.AliasFor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
include 'common'
|
include 'common'
|
||||||
include 'cashpal-configuration'
|
include 'buckpal-configuration'
|
||||||
|
|
||||||
include 'adapters:cashpal-web'
|
include 'adapters:buckpal-web'
|
||||||
include 'adapters:cashpal-persistence'
|
include 'adapters:buckpal-persistence'
|
||||||
include 'cashpal-application'
|
include 'buckpal-application'
|
||||||
include 'cashpal-testdata'
|
include 'buckpal-testdata'
|
||||||
Reference in New Issue
Block a user