@@ -81,4 +81,87 @@ void shouldCreateNestedDTOs() {
8181 assertThat (position .latitude ()).isEqualTo (20.0 );
8282 assertThat (position .onGround ()).isFalse ();
8383 }
84+
85+ @ Test
86+ void shouldConvertToFlightDataDTO () {
87+ // Given
88+ var id = UUID .randomUUID ();
89+ var lastUpdate = Instant .now ();
90+ var aircraft = new PingDTO .Aircraft (
91+ "ABC123" ,
92+ "FL123" ,
93+ "US" ,
94+ Instant .now (),
95+ "7700" ,
96+ true ,
97+ new Integer []{1 , 2 }
98+ );
99+ var vector = new PingDTO .Vector (500.0 , 180.0 , 0.0 );
100+ var position = new PingDTO .Position (
101+ 10.0 ,
102+ 20.0 ,
103+ 30000.0 ,
104+ 29000.0 ,
105+ false ,
106+ 1 ,
107+ Instant .now ()
108+ );
109+ var dto = new PingDTO (id , aircraft , vector , position , lastUpdate );
110+
111+ // When
112+ var flightDataDTO = dto .toFlightDataDTO ();
113+
114+ // Then
115+ assertThat (flightDataDTO .icao24 ()).isEqualTo (aircraft .icao24 ());
116+ assertThat (flightDataDTO .callsign ()).isEqualTo (aircraft .callsign ());
117+ assertThat (flightDataDTO .originCountry ()).isEqualTo (aircraft .originCountry ());
118+ assertThat (flightDataDTO .timePosition ()).isEqualTo (position .time ().getEpochSecond ());
119+ assertThat (flightDataDTO .lastContact ()).isEqualTo (aircraft .lastContact ().getEpochSecond ());
120+ assertThat (flightDataDTO .longitude ()).isEqualTo (position .longitude ());
121+ assertThat (flightDataDTO .latitude ()).isEqualTo (position .latitude ());
122+ assertThat (flightDataDTO .baroAltitude ()).isEqualTo (position .baroAltitude ());
123+ assertThat (flightDataDTO .onGround ()).isEqualTo (position .onGround ());
124+ assertThat (flightDataDTO .velocity ()).isEqualTo (vector .velocity ());
125+ assertThat (flightDataDTO .trueTrack ()).isEqualTo (vector .trueTrack ());
126+ assertThat (flightDataDTO .verticalRate ()).isEqualTo (vector .verticalRate ());
127+ assertThat (flightDataDTO .sensors ()).isEqualTo (aircraft .sensors ());
128+ assertThat (flightDataDTO .geoAltitude ()).isEqualTo (position .geoAltitude ());
129+ assertThat (flightDataDTO .squawk ()).isEqualTo (aircraft .squawk ());
130+ assertThat (flightDataDTO .spi ()).isEqualTo (aircraft .spi ());
131+ assertThat (flightDataDTO .positionSource ()).isEqualTo (position .source ());
132+ }
133+
134+ @ Test
135+ void shouldHandleNullTimestampsInFlightDataDTO () {
136+ // Given
137+ var id = UUID .randomUUID ();
138+ var lastUpdate = Instant .now ();
139+ var aircraft = new PingDTO .Aircraft (
140+ "ABC123" ,
141+ "FL123" ,
142+ "US" ,
143+ null ,
144+ "7700" ,
145+ true ,
146+ new Integer []{1 , 2 }
147+ );
148+ var vector = new PingDTO .Vector (500.0 , 180.0 , 0.0 );
149+ var position = new PingDTO .Position (
150+ 10.0 ,
151+ 20.0 ,
152+ 30000.0 ,
153+ 29000.0 ,
154+ false ,
155+ 1 ,
156+ null
157+ );
158+ var dto = new PingDTO (id , aircraft , vector , position , lastUpdate );
159+
160+ // When
161+ var flightDataDTO = dto .toFlightDataDTO ();
162+
163+ // Then
164+ assertThat (flightDataDTO .lastContact ()).isNull ();
165+ assertThat (flightDataDTO .timePosition ()).isNull ();
166+ }
84167}
0 commit comments