From b85c60d84e85bf690fdb94f3a8a353052a8eecd4 Mon Sep 17 00:00:00 2001 From: Tang Cheng Date: Mon, 16 Dec 2019 14:08:27 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=20transaction=20service=20ini?= =?utf8?q?t=20=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../dlpay/transaction_service_test.kt | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 payapi/src/test/kotlin/com/supwisdom/dlpay/transaction_service_test.kt diff --git a/payapi/src/test/kotlin/com/supwisdom/dlpay/transaction_service_test.kt b/payapi/src/test/kotlin/com/supwisdom/dlpay/transaction_service_test.kt new file mode 100644 index 00000000..cfacc165 --- /dev/null +++ b/payapi/src/test/kotlin/com/supwisdom/dlpay/transaction_service_test.kt @@ -0,0 +1,131 @@ +package com.supwisdom.dlpay + +import com.supwisdom.dlpay.api.TransactionBuilder +import com.supwisdom.dlpay.api.dao.TransactionMainDao +import com.supwisdom.dlpay.api.domain.TAccount +import com.supwisdom.dlpay.api.domain.TSourceType +import com.supwisdom.dlpay.api.domain.TTransactionMain +import com.supwisdom.dlpay.api.repositories.AccountService +import com.supwisdom.dlpay.api.service.AccountUtilServcie +import com.supwisdom.dlpay.api.service.SourceTypeService +import com.supwisdom.dlpay.api.service.TransactionService +import com.supwisdom.dlpay.api.service.impl.TransactionServiceImpl +import com.supwisdom.dlpay.framework.data.SystemDateTime +import com.supwisdom.dlpay.framework.domain.TShopacc +import com.supwisdom.dlpay.framework.service.SystemUtilService +import com.supwisdom.dlpay.framework.util.Subject +import com.supwisdom.dlpay.framework.util.TradeCode +import com.supwisdom.dlpay.framework.util.TradeDict +import io.mockk.MockKAnnotations +import io.mockk.every +import io.mockk.impl.annotations.InjectMockKs +import io.mockk.impl.annotations.MockK +import io.mockk.junit5.MockKExtension +import io.mockk.mockk +import io.mockk.verify +import org.hamcrest.CoreMatchers.notNullValue +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.equalTo +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith +import java.sql.Timestamp +import java.util.* + +@ExtendWith(MockKExtension::class) +class TransactionServcieTest { + companion object { + const val OutId = "1000" + const val OutTransNo = "12" + const val OperatorID = "3454" + const val OperatorType = "operator" + const val Refno = "20191216103421000001" + const val Accdate = "20191216" + } + + @InjectMockKs + var transactionService: TransactionService = TransactionServiceImpl() + + @MockK + private lateinit var transactionMainDao: TransactionMainDao + + @MockK + private lateinit var accountService: AccountService + + @MockK + private lateinit var accountUtilService: AccountUtilServcie + + @MockK + private lateinit var systemUtilService: SystemUtilService + + @MockK + private lateinit var sourceTypeService: SourceTypeService + + + init { + MockKAnnotations.init(this) + } + + private fun testAccount(): TAccount { + return TAccount().apply { + accno = "1200203303" + accname = "test" + transStatus = TradeDict.STATUS_NORMAL + } + } + + private fun testShop(): TShopacc { + return TShopacc().apply { + shopaccno = "4001" + shopid = 1 + shopname = "test shop" + status = TradeDict.STATUS_NORMAL + } + } + + @Test + fun testTransaction() { + val builder = TransactionBuilder() + val person = testAccount() + val shop = testShop() + val amount = 1600 + builder.apply { + setTransInfo("20191205", "134521", TradeCode.TRANSCODE_CARD_BIZ, "balance") + setOutTransInfo(OutId, OutTransNo) + operator(OperatorID, OperatorType) + dtltype = "restaurant" + }.person(person).apply { + setOpposite(shop.shopaccno, shop.shopname) + setAmount(amount / 100.0, TradeDict.TRADE_FLAG_OUT) + }.and().shop(shop).apply { + setOpposite(person.accno, person.accname) + setAmount(amount / 100.0, TradeDict.TRADE_FLAG_IN) + }.and() + .addDebitCreditRecord(person.accno, Subject.SUBJNO_PERSONAL_DEPOSIT, + shop.shopaccno, Subject.SUBJNO_MACHANT_INCOME, + amount / 100.0, "消费") + + every { systemUtilService.refno } returns Refno + every { systemUtilService.accdate } returns Accdate + every { sourceTypeService.getBySourceType(builder.sourceType) } returns TSourceType().apply { + sourceType = "balance" + checkable = false + } + every { systemUtilService.sysdatetime } returns mockk { + every { hostdate } returns "20191216" + every { hosttime } returns "131725" + every { hostdatetime } returns "20191216131725" + every { sysdate } returns Timestamp(System.currentTimeMillis()) + } + + every { transactionMainDao.save(any()) } answers { + arg(0) + } + + val transaction = transactionService.init(builder) + assertThat(transaction.refno, equalTo(Refno)) + assertThat(transaction.accdate, equalTo(Accdate)) + verify(exactly = 1) { systemUtilService.refno } + verify(atLeast = 1) { systemUtilService.accdate } + verify(exactly = 1) { sourceTypeService.getBySourceType(builder.sourceType) } + } +} \ No newline at end of file -- 2.17.1