37 lines
2.5 KiB
Java
37 lines
2.5 KiB
Java
package com.baiyue.finance;
|
|
|
|
import com.baiyue.finance.mapper.FinanceSettlementDetailMapper;
|
|
import com.baiyue.finance.repository.FinanceSettlementDetailRepository;
|
|
import org.apache.ibatis.mapping.Environment;
|
|
import org.apache.ibatis.session.Configuration;
|
|
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
|
|
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
import org.springframework.jdbc.datasource.DriverManagerDataSource;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
class FinanceSettlementDetailMapperTest {
|
|
/** 真实执行付款查询,业务号必须来自本客户本结算的流水,空号不以其他字段替代。 */
|
|
@Test
|
|
void paymentNumbersRemainScopedToCustomerAndSettlement() {
|
|
var source = new DriverManagerDataSource("jdbc:h2:mem:settlement-number;MODE=MySQL;DB_CLOSE_DELAY=-1", "sa", "");
|
|
var jdbc = new JdbcTemplate(source);
|
|
jdbc.execute("CREATE TABLE fin_settlement_payment (id BIGINT PRIMARY KEY,tenant_id BIGINT,settlement_id BIGINT,transaction_no VARCHAR(32),transaction_type VARCHAR(32),transaction_date DATE,amount DECIMAL(18,2),method VARCHAR(32),reference_no VARCHAR(64),voucher_file_ids VARCHAR(255),created_by BIGINT,created_by_name VARCHAR(64),created_at TIMESTAMP,remark VARCHAR(255))");
|
|
jdbc.update("INSERT INTO fin_settlement_payment (id,tenant_id,settlement_id,transaction_no,transaction_type,reference_no) VALUES (1,10,20,'PAY202610210001','PAYMENT','BANK-1'),(2,11,20,'PAY202610210002','PAYMENT','BANK-2'),(3,10,21,'PAY202610210003','PAYMENT','BANK-3'),(4,10,22,NULL,'PAYMENT','BANK-4')");
|
|
var configuration = new Configuration(new Environment("test", new JdbcTransactionFactory(), source));
|
|
configuration.addMapper(FinanceSettlementDetailMapper.class);
|
|
try (var session = new SqlSessionFactoryBuilder().build(configuration).openSession()) {
|
|
var repository = new FinanceSettlementDetailRepository(session.getMapper(FinanceSettlementDetailMapper.class));
|
|
var rows = repository.payments(10, 20);
|
|
assertThat(rows).hasSize(1);
|
|
assertThat(rows.get(0).get("transaction_no")).isEqualTo("PAY202610210001");
|
|
assertThat(rows.get(0).get("reference_no")).isEqualTo("BANK-1");
|
|
assertThat(repository.payments(11, 21)).isEmpty();
|
|
assertThat(repository.payments(10, 22)).hasSize(1);
|
|
assertThat(repository.payments(10, 22).get(0).get("transaction_no")).isNull();
|
|
}
|
|
}
|
|
}
|