@@ -116,6 +116,96 @@ test('It should return the next launch', async () => {
116116 expect ( response . statusCode ) . toBe ( 200 ) ;
117117} ) ;
118118
119+ //------------------------------------------------------------
120+ // Upcoming Launches
121+ //------------------------------------------------------------
122+
123+ test ( 'It should return all upcoming launches' , async ( ) => {
124+ const response = await request ( app . callback ( ) ) . get ( '/v2/launches/upcoming' ) ;
125+ expect ( response . statusCode ) . toBe ( 200 ) ;
126+ response . body . forEach ( ( item ) => {
127+ expect ( item ) . toHaveProperty ( 'flight_number' , expect . anything ( ) ) ;
128+ expect ( item ) . toHaveProperty ( 'mission_name' , expect . anything ( ) ) ;
129+ expect ( item ) . toHaveProperty ( 'launch_year' ) ;
130+ expect ( item ) . toHaveProperty ( 'launch_date_unix' ) ;
131+ expect ( item ) . toHaveProperty ( 'launch_date_utc' ) ;
132+ expect ( item ) . toHaveProperty ( 'launch_date_local' ) ;
133+ expect ( item ) . toHaveProperty ( 'rocket.rocket_id' ) ;
134+ expect ( item ) . toHaveProperty ( 'rocket.rocket_name' ) ;
135+ expect ( item ) . toHaveProperty ( 'rocket.rocket_type' ) ;
136+ expect ( item . rocket . first_stage . cores . length ) . toBeGreaterThan ( 0 ) ;
137+ item . rocket . first_stage . cores . forEach ( ( core ) => {
138+ expect ( core ) . toHaveProperty ( 'core_serial' ) ;
139+ expect ( core ) . toHaveProperty ( 'flight' ) ;
140+ expect ( core ) . toHaveProperty ( 'block' ) ;
141+ expect ( core ) . toHaveProperty ( 'reused' ) ;
142+ expect ( core ) . toHaveProperty ( 'land_success' ) ;
143+ expect ( core ) . toHaveProperty ( 'landing_type' ) ;
144+ expect ( core ) . toHaveProperty ( 'landing_vehicle' ) ;
145+ } ) ;
146+ expect ( item . rocket . second_stage ) . toHaveProperty ( 'block' ) ;
147+ expect ( item . rocket . second_stage . payloads . length ) . toBeGreaterThan ( 0 ) ;
148+ if ( item . hasOwnProperty . call ( 'cap_serial' ) ) {
149+ item . rocket . second_stage . payloads . forEach ( ( payload ) => {
150+ expect ( payload ) . toHaveProperty ( 'payload_id' ) ;
151+ expect ( payload ) . toHaveProperty ( 'reused' ) ;
152+ expect ( payload ) . toHaveProperty ( 'cap_serial' ) ;
153+ expect ( payload . customers . length ) . toBeGreaterThan ( 0 ) ;
154+ expect ( payload ) . toHaveProperty ( 'payload_mass_kg' ) ;
155+ expect ( payload ) . toHaveProperty ( 'payload_mass_lbs' ) ;
156+ expect ( payload ) . toHaveProperty ( 'orbit' ) ;
157+ expect ( payload ) . toHaveProperty ( 'orbit_params' ) ;
158+ expect ( payload ) . toHaveProperty ( 'orbit_params.reference_system' ) ;
159+ expect ( payload ) . toHaveProperty ( 'orbit_params.regime' ) ;
160+ expect ( payload ) . toHaveProperty ( 'orbit_params.longitude' ) ;
161+ expect ( payload ) . toHaveProperty ( 'orbit_params.semi_major_axis_km' ) ;
162+ expect ( payload ) . toHaveProperty ( 'orbit_params.eccentricity' ) ;
163+ expect ( payload ) . toHaveProperty ( 'orbit_params.periapsis_km' ) ;
164+ expect ( payload ) . toHaveProperty ( 'orbit_params.apoapsis_km' ) ;
165+ expect ( payload ) . toHaveProperty ( 'orbit_params.inclination_deg' ) ;
166+ expect ( payload ) . toHaveProperty ( 'orbit_params.period_min' ) ;
167+ expect ( payload ) . toHaveProperty ( 'orbit_params.lifespan_years' ) ;
168+ expect ( payload ) . toHaveProperty ( 'mass_returned_kg' ) ;
169+ expect ( payload ) . toHaveProperty ( 'mass_returned_lbs' ) ;
170+ expect ( payload ) . toHaveProperty ( 'flight_time_sec' ) ;
171+ expect ( payload ) . toHaveProperty ( 'cargo_manifest' ) ;
172+ } ) ;
173+ } else {
174+ item . rocket . second_stage . payloads . forEach ( ( payload ) => {
175+ expect ( payload ) . toHaveProperty ( 'payload_id' ) ;
176+ expect ( payload ) . toHaveProperty ( 'reused' ) ;
177+ expect ( payload . customers . length ) . toBeGreaterThan ( 0 ) ;
178+ expect ( payload ) . toHaveProperty ( 'payload_mass_kg' ) ;
179+ expect ( payload ) . toHaveProperty ( 'payload_mass_lbs' ) ;
180+ expect ( payload ) . toHaveProperty ( 'orbit' ) ;
181+ expect ( payload ) . toHaveProperty ( 'orbit_params' ) ;
182+ expect ( payload ) . toHaveProperty ( 'orbit_params.reference_system' ) ;
183+ expect ( payload ) . toHaveProperty ( 'orbit_params.regime' ) ;
184+ expect ( payload ) . toHaveProperty ( 'orbit_params.longitude' ) ;
185+ expect ( payload ) . toHaveProperty ( 'orbit_params.semi_major_axis_km' ) ;
186+ expect ( payload ) . toHaveProperty ( 'orbit_params.eccentricity' ) ;
187+ expect ( payload ) . toHaveProperty ( 'orbit_params.periapsis_km' ) ;
188+ expect ( payload ) . toHaveProperty ( 'orbit_params.apoapsis_km' ) ;
189+ expect ( payload ) . toHaveProperty ( 'orbit_params.inclination_deg' ) ;
190+ expect ( payload ) . toHaveProperty ( 'orbit_params.period_min' ) ;
191+ expect ( payload ) . toHaveProperty ( 'orbit_params.lifespan_years' ) ;
192+ } ) ;
193+ }
194+ expect ( item ) . toHaveProperty ( 'telemetry.flight_club' ) ;
195+ expect ( item ) . toHaveProperty ( 'reuse.core' ) ;
196+ expect ( item ) . toHaveProperty ( 'reuse.side_core1' ) ;
197+ expect ( item ) . toHaveProperty ( 'reuse.side_core2' ) ;
198+ expect ( item ) . toHaveProperty ( 'reuse.fairings' ) ;
199+ expect ( item ) . toHaveProperty ( 'reuse.capsule' ) ;
200+ expect ( item ) . toHaveProperty ( 'launch_site.site_id' ) ;
201+ expect ( item ) . toHaveProperty ( 'launch_site.site_name' ) ;
202+ expect ( item ) . toHaveProperty ( 'launch_site.site_name_long' ) ;
203+ expect ( item ) . toHaveProperty ( 'launch_success' ) ;
204+ expect ( item ) . toHaveProperty ( 'links' ) ;
205+ expect ( item ) . toHaveProperty ( 'details' ) ;
206+ } ) ;
207+ } ) ;
208+
119209//------------------------------------------------------------
120210// All Launches
121211//------------------------------------------------------------
0 commit comments