Fix production referral service wiring
Bind the referral route interface to its service and extend the module regression test to cover every route-facing operations boundary.
This commit is contained in:
@@ -83,6 +83,7 @@ import com.osglab.account.features.inviteweb.InviteWebConfig
|
||||
import com.osglab.account.features.inviteweb.ReferralLookupPort
|
||||
import com.osglab.account.features.inviteweb.configureInviteWebRoutes
|
||||
import com.osglab.account.features.referrals.routes.referralRoutes
|
||||
import com.osglab.account.features.referrals.services.ReferralOperations
|
||||
import com.osglab.account.features.referrals.services.ReferralService
|
||||
import com.osglab.account.features.referrals.services.ReferralRiskIdentity
|
||||
import com.osglab.account.features.referrals.services.ReferralRiskProvider
|
||||
@@ -422,6 +423,7 @@ fun accountServerModule(config: AppConfig): Module = module {
|
||||
bindingWindow = Duration.ofDays(config.credits.referralBindingDays),
|
||||
)
|
||||
}
|
||||
single<ReferralOperations> { get<ReferralService>() }
|
||||
single<ReferralLookupPort> {
|
||||
val transactions = get<BillingTransactionRunner>()
|
||||
ReferralLookupPort { code ->
|
||||
|
||||
@@ -5,6 +5,8 @@ import com.osglab.account.features.credits.repositories.BillingTransactionRunner
|
||||
import com.osglab.account.features.credits.repositories.BillingUnitOfWork
|
||||
import com.osglab.account.features.credits.services.CreditOperations
|
||||
import com.osglab.account.features.credits.services.CreditService
|
||||
import com.osglab.account.features.referrals.services.ReferralOperations
|
||||
import com.osglab.account.features.referrals.services.ReferralService
|
||||
import io.kotest.matchers.shouldBe
|
||||
import io.ktor.client.request.get
|
||||
import io.ktor.http.HttpStatusCode
|
||||
@@ -27,7 +29,7 @@ class ApplicationTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `application module exposes credit operations through its interface`() {
|
||||
fun `application module exposes route services through their interfaces`() {
|
||||
val transactionRunner = object : BillingTransactionRunner {
|
||||
override suspend fun <T> inTransaction(block: (BillingUnitOfWork) -> T): T =
|
||||
error("Transaction runner is not used while resolving dependencies")
|
||||
@@ -41,6 +43,8 @@ class ApplicationTest {
|
||||
try {
|
||||
application.koin.get<CreditOperations>() shouldBe
|
||||
application.koin.get<CreditService>()
|
||||
application.koin.get<ReferralOperations>() shouldBe
|
||||
application.koin.get<ReferralService>()
|
||||
} finally {
|
||||
application.close()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user