quick end-to-end test

And some bug fixes too!
This commit is contained in:
2026-07-01 13:13:39 +02:00
parent 4ba70d7d6e
commit 26c4b1eb26
3 changed files with 76 additions and 7 deletions

View File

@@ -2,16 +2,21 @@ package com.frankenergie.smartasset.service
import com.frankenergie.smartasset.domain.OrderBook
import com.frankenergie.smartasset.model.DeliveryPeriod
import com.frankenergie.smartasset.model.ExecutedPurchase
import com.frankenergie.smartasset.model.MarketOverviewResponse
import com.frankenergie.smartasset.model.OrderSide
import com.frankenergie.smartasset.model.OrderUpdateRequest
import com.frankenergie.smartasset.model.OrderUpdateResponse
import com.frankenergie.smartasset.model.QuarterOverview
import org.springframework.stereotype.Service
import java.math.BigDecimal
import java.time.Instant
import java.util.UUID
@Service
class OrderBookService {
class OrderBookService(
private val purchaseTrackerService: PurchaseTrackerService
) {
private val orderBook = OrderBook()
@@ -21,13 +26,23 @@ class OrderBookService {
val period = DeliveryPeriod(request.deliveryStartTime, request.deliveryEndTime)
val matchedQuantity = orderBook.processOrder(period, request.orderSide, request.quantity, request.price)
val status = when {
matchedQuantity == request.quantity -> "FILLED"
matchedQuantity > java.math.BigDecimal.ZERO -> "PARTIALLY_FILLED"
else -> "ACCEPTED"
if (matchedQuantity > BigDecimal.ZERO && request.orderSide == OrderSide.BUY) {
purchaseTrackerService.recordPurchase(
ExecutedPurchase(
groupId = "default",
deliveryStart = request.deliveryStartTime,
deliveryEnd = request.deliveryEndTime,
quantity = matchedQuantity,
pricePerMWh = request.price
)
)
}
// TODO: write this to a file
val status = when {
matchedQuantity == request.quantity -> "FILLED"
matchedQuantity > BigDecimal.ZERO -> "PARTIALLY_FILLED"
else -> "ACCEPTED"
}
return OrderUpdateResponse(orderId = orderId, status = status, timestamp = Instant.now())
}

View File

@@ -11,10 +11,12 @@ import java.time.LocalDateTime
class OrderBookServiceTest {
private lateinit var service: OrderBookService
private lateinit var purchaseTrackerService: PurchaseTrackerService
@BeforeEach
fun setUp() {
service = OrderBookService()
purchaseTrackerService = PurchaseTrackerService()
service = OrderBookService(purchaseTrackerService)
}
@Test