Расчет средних ЗРВ

This commit is contained in:
emelianov
2026-05-28 16:47:43 +03:00
parent 2c65f412cf
commit 7dfa1163e9
5 changed files with 91 additions and 21 deletions
@@ -10,6 +10,8 @@ import org.springframework.boot.test.web.server.LocalServerPort
import org.springframework.test.context.bean.override.mockito.MockitoBean
import org.springframework.web.reactive.function.client.WebClient
import reactor.core.publisher.Flux
import reactor.core.publisher.Mono
import space.nstart.pcp.pcp_types_lib.dto.ballistics.PositionDTO
import space.nstart.pcp.pcp_types_lib.dto.ballistics.RevolutionSign
import space.nstart.pcp.pcp_types_lib.dto.ballistics.StationDTO
import space.nstart.pcp.pcp_types_lib.dto.requests.ComplexPlanProcessRequestDTO
@@ -61,6 +63,18 @@ class MapControllerComplexPlanTest {
private val objectMapper = ObjectMapper()
private fun stationEllipseRadius(stationId: String, orbitHeightKm: Double): Double {
val actual = WebClient.create("http://localhost:$port")
.post()
.uri("/requests/station/$stationId?view=true&orbitHeightKm=$orbitHeightKm")
.retrieve()
.bodyToMono(String::class.java)
.map(objectMapper::readTree)
.block()!!
return actual[1]["ellipse"]["semiMajorAxis"].asDouble()
}
@Test
fun `local post api requests delegates to earth service facade`() {
val responseId = UUID.fromString("11111111-1111-4111-8111-111111111111")
@@ -256,11 +270,34 @@ class MapControllerComplexPlanTest {
.block()!!
assertTrue(body.contains("cesiumContainer"))
assertTrue(body.contains("stationOrbitHeightKm"))
assertTrue(body.contains("Высота орбиты, км"))
assertTrue(body.contains("dynamic_plan_map_layers.js"))
assertTrue(body.contains("PcpDynamicPlanMapLayers"))
verify(earthService).reqs()
}
@Test
fun `station czml endpoint uses orbit height for visibility zone`() {
val stationId = "11111111-1111-4111-8111-111111111111"
doReturn(
Mono.just(
StationDTO(
id = UUID.fromString(stationId),
number = 1,
name = "Station 1",
position = PositionDTO(lat = 55.0, long = 37.0, height = 200.0),
elevationMin = 5.0
)
)
).`when`(stationService).station(stationId)
val baseRadius = stationEllipseRadius(stationId, 500.0)
val higherOrbitRadius = stationEllipseRadius(stationId, 700.0)
assertTrue(higherOrbitRadius > baseRadius)
}
@Test
fun `dynamic plan map layer keeps only one visible run`() {
val body = WebClient.create("http://localhost:$port")