r-spacex / SpaceX-API

:rocket: Open Source REST API for SpaceX launch, rocket, core, capsule, starlink, launchpad, and landing pad data.
Apache License 2.0
10.42k stars 919 forks source link

How to run/test locally #82

Closed ahatzz11 closed 6 years ago

ahatzz11 commented 6 years ago

I've been playing with this API a little bit, and I'd love to submit a PR at some point in the future. I see the contributions page, but I don't see very much info on how to run the test suite locally. I checked out what travis-ci is doing, and when I run yarn test all of the tests fail. I think I'm missing a step getting the data from mongo. A little doc about how to get tests running locally would be great!

Thanks

jakewmeyer commented 6 years ago

The wiki has docker instructions, but I need to add local instructions for the wiki and contributing.

git clone https://github.com/r-spacex/SpaceX-API.git yarn install yarn test

That should let the tests run. The mongo connection is read-only and hardcoded in the application, so that shouldn't be the issue.

ahatzz11 commented 6 years ago

Previously I was getting an error on yarn install that I didn't have the right version of node:

error spacex-api@2.4.0: The engine "node" is incompatible with this module. Expected version "9.x.x". 

I upgraded and am now using node v9.10.1. The yarn install works fine, but yarn test still has 75/75 failing tests. I've tried having docker up and running (using docker-compose build and docker-compose up) before running yarn test, but that also fails.

jakewmeyer commented 6 years ago

Are you able to run yarn start and access the endpoints normally?

Also, what do the tests return? Is it returning 404's or 500's?

ahatzz11 commented 6 years ago

I can use yarn start and hit the API locally! So that's a start.

~/code/SpaceX-API(branch:master) » curl http://localhost:80/v2/launches/latest                   7 ↵
{"flight_number":59,"launch_year":"2018","launch_date_unix":1522701041,"launch_date_utc":"2018-04-02T20:30:41Z","launch_date_local":"2018-04-02T16:30:41-04:00","rocket":{"rocket_id":"falcon9","rocket_name":"Falcon 9","rocket_type":"FT","first_stage":{"cores":[{"core_serial":"B1039","flight":2,"block":4,"reused":true,"land_success":null,"landing_type":null,"landing_vehicle":null}]},"second_stage":{"payloads":[{"payload_id":"SpaceX CRS-14","cap_serial":"C110","reused":true,"customers":["NASA (CRS)"],"payload_type":"Dragon 1.1","payload_mass_kg":2760,"payload_mass_lbs":6084.7,"orbit":"ISS","mass_returned_kg":null,"mass_returned_lbs":null,"flight_time_sec":null,"cargo_manifest":"https://www.nasa.gov/sites/default/files/atoms/files/spacex_crs-14_mision_overview_high_res.pdf"}]}},"telemetry":{"flight_club":"https://www.flightclub.io/results/?code=CR14"},"reuse":{"core":true,"side_core1":false,"side_core2":false,"fairings":false,"capsule":true},"launch_site":{"site_id":"ccafs_slc_40","site_name":"CCAFS SLC 40","site_name_long":"Cape Canaveral Air Force Station Space Launch Complex 40"},"launch_success":true,"links":{"mission_patch":"https://i.imgur.com/eHxbiG3.png","reddit_campaign":"https://www.reddit.com/r/spacex/comments/82op7a/crs14_launch_campaign_thread/","reddit_launch":"https://www.reddit.com/r/spacex/comments/88s8a7/rspacex_crs14_official_launch_discussion_updates/","reddit_recovery":null,"reddit_media":"https://www.reddit.com/r/spacex/comments/88l52i/rspacex_crs14_media_thread_videos_images_gifs/","presskit":"http://www.spacex.com/sites/spacex/files/crs-14presskit2018.pdf","article_link":null,"video_link":"https://www.youtube.com/watch?v=BPQHG-LevZM"},"details":"The launch used a refurbished booster (from CRS-12) for the 11th time, and a refurbished capsule (C110 from CRS-8) for the third time. External payloads include a materials research platform MISSE-FF phase 3 of the Robotic Refueling Mission TSIS, heliophysics sensor several crystallization experiments, and the RemoveDebris spacecraft aimed at space junk removal. The booster was expended in order to test a new landing profile."}%

The failures I'm getting are all 500's. Here's a sample log from yarn test:

test logs

``` FAIL test/routes/v2-parts.test.js (5.142s) ● Console console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-parts.js:14:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-parts.js:25:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-parts.js:35:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-parts.js:46:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 ● It should return all v2 capsules Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return all v2 capsules expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 15 | test('It should return all v2 capsules', async () => { 16 | const response = await request(app.callback()).get('/v2/parts/caps'); > 17 | expect(response.statusCode).toBe(200); 18 | response.body.forEach((item) => { 19 | expect(item).toHaveProperty('capsule_serial'); 20 | expect(item).toHaveProperty('capsule_id'); at Object..test (test/routes/v2-parts.test.js:17:31) ● It should return capsule C101 Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return capsule C101 expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 30 | test('It should return capsule C101', async () => { 31 | const response = await request(app.callback()).get('/v2/parts/caps/C101'); > 32 | expect(response.statusCode).toBe(200); 33 | expect(response.body).toHaveProperty('capsule_serial', 'C101'); 34 | }); 35 | at Object..test (test/routes/v2-parts.test.js:32:31) ● It should return all v2 cores Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return all v2 cores expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 40 | test('It should return all v2 cores', async () => { 41 | const response = await request(app.callback()).get('/v2/parts/cores'); > 42 | expect(response.statusCode).toBe(200); 43 | response.body.forEach((item) => { 44 | expect(item).toHaveProperty('core_serial'); 45 | expect(item).toHaveProperty('status'); at Object..test (test/routes/v2-parts.test.js:42:31) ● It should return core B0007 Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return core B0007 expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 57 | test('It should return core B0007', async () => { 58 | const response = await request(app.callback()).get('/v2/parts/cores/B0007'); > 59 | expect(response.statusCode).toBe(200); 60 | expect(response.body).toHaveProperty('core_serial', 'B0007'); 61 | }); 62 | at Object..test (test/routes/v2-parts.test.js:59:31) FAIL test/routes/v2-capsules.test.js (5.144s) ● Console console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-capsules.js:12:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-capsules.js:22:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 ● It should return Dragon data Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return Dragon data expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 16 | test('It should return Dragon data', async () => { 17 | const response = await request(app.callback()).get('/v2/capsules'); > 18 | expect(response.statusCode).toBe(200); 19 | response.body.forEach((item) => { 20 | expect(item).toHaveProperty('crew_capacity', expect.any(Number)); 21 | expect(item).toHaveProperty('sidewall_angle_deg', expect.any(Number)); at Object..test (test/routes/v2-capsules.test.js:18:31) ● It should return dragon1 capsule Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return dragon1 capsule expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 53 | test('It should return dragon1 capsule', async () => { 54 | const response = await request(app.callback()).get('/v2/capsules/dragon1'); > 55 | expect(response.statusCode).toBe(200); 56 | }); 57 | at Object..test (test/routes/v2-capsules.test.js:55:31) FAIL test/routes/v2-rockets.test.js (5.155s) ● Console console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-rockets.js:12:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-rockets.js:23:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-rockets.js:23:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 ● It should return all rocket info Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return all rocket info expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 16 | test('It should return all rocket info', async () => { 17 | const response = await request(app.callback()).get('/v2/rockets'); > 18 | expect(response.statusCode).toBe(200); 19 | expect(response.body).toHaveLength(3); 20 | expect(response.body[0]).toHaveProperty('name', 'Falcon 1'); 21 | expect(response.body[1]).toHaveProperty('name', 'Falcon 9'); at Object..test (test/routes/v2-rockets.test.js:18:31) ● It should return Falcon 1 info Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return Falcon 1 info expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 49 | test('It should return Falcon 1 info', async () => { 50 | const response = await request(app.callback()).get('/v2/rockets/falcon1'); > 51 | expect(response.statusCode).toBe(200); 52 | expect(response.body).toHaveProperty('name', 'Falcon 1'); 53 | expect(response.body).toHaveProperty('stages', 2); 54 | expect(response.body).toHaveProperty('cost_per_launch'); at Object..test (test/routes/v2-rockets.test.js:51:31) ● It should return Falcon Heavy info Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return Falcon Heavy info expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 62 | test('It should return Falcon Heavy info', async () => { 63 | const response = await request(app.callback()).get('/v2/rockets/falconheavy'); > 64 | expect(response.statusCode).toBe(200); 65 | expect(response.body).toHaveProperty('name', 'Falcon Heavy'); 66 | expect(response.body).toHaveProperty('stages', 2); 67 | expect(response.body).toHaveProperty('cost_per_launch'); at Object..test (test/routes/v2-rockets.test.js:64:31) FAIL test/routes/v2-errors.test.js (5.12s) ● It should return 404 error Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) FAIL test/routes/v2-info.test.js (5.115s) ● Console console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-info.js:12:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 ● It should return company info Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return company info expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 15 | test('It should return company info', async () => { 16 | const response = await request(app.callback()).get('/v2/info'); > 17 | expect(response.statusCode).toBe(200); 18 | expect(response.body).toHaveProperty('name', 'SpaceX'); 19 | expect(response.body).toHaveProperty('founder', 'Elon Musk'); 20 | expect(response.body).toHaveProperty('founded', 2002); at Object..test (test/routes/v2-info.test.js:17:31) FAIL test/routes/v2-home.test.js (5.124s) ● Console console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-home.js:14:6) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 ● It should return home info Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return home info expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 15 | test('It should return home info', async () => { 16 | const response = await request(app.callback()).get('/v2'); > 17 | expect(response.statusCode).toBe(200); 18 | expect(response.body).toHaveProperty('description'); 19 | expect(response.body).toHaveProperty('organization', 'r/SpaceX'); 20 | expect(response.body).toHaveProperty('organization_link', 'https://github.com/r-spacex'); at Object..test (test/routes/v2-home.test.js:17:31) FAIL test/routes/v2-upcoming.test.js (5.124s) ● Console console.error node_modules/koa/lib/application.js:194 console.error node_modules/koa/lib/application.js:195 TypeError: Cannot read property 'collection' of undefined at Object..module.exports.fetchLaunch (/Users/Alex/code/SpaceX-API/src/helpers/launch-database.js:15:6) at Object..v2.get (/Users/Alex/code/SpaceX-API/src/v2-routes/v2-upcoming.js:12:22) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:45:18) at /Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:346:16 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:44:32) at /Users/Alex/code/SpaceX-API/node_modules/koa-compose/index.js:36:12 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:351:31) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa-router/lib/router.js:332:32) at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at /Users/Alex/code/SpaceX-API/node_modules/koa2-cors/dist/index.js:89:15 at dispatch (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:42:32) at next (/Users/Alex/code/SpaceX-API/node_modules/koa/node_modules/koa-compose/index.js:43:18) at at process._tickCallback (internal/process/next_tick.js:118:7) console.error node_modules/koa/lib/application.js:196 ● It should return all upcoming launches Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● It should return all upcoming launches expect(received).toBe(expected) // Object.is equality Expected value to be: 200 Received: 500 15 | test('It should return all upcoming launches', async () => { 16 | const response = await request(app.callback()).get('/v2/launches/upcoming'); > 17 | expect(response.statusCode).toBe(200); 18 | response.body.forEach((item) => { 19 | expect(item).toHaveProperty('flight_number', expect.anything()); 20 | expect(item).toHaveProperty('launch_year'); at Object..test (test/routes/v2-upcoming.test.js:17:31) FAIL test/helpers/launch-database.test.js (5.141s) ● Helpers - Launch database › Should call the launchQuery and launchSort functions Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● Helpers - Launch database › Should call the launchQuery and launchSort functions TypeError: Cannot read property 'collection' of undefined 13 | module.exports.fetchLaunch = async (collection, request) => { 14 | return global.db > 15 | .collection(collection) 16 | .find(launch.launchQuery(request)) 17 | .project(project.queryProject(request)) 18 | .sort(sort.launchSort(request)) at Object..module.exports.fetchLaunch (src/helpers/launch-database.js:15:6) at Object.it (test/helpers/launch-database.test.js:17:11) ● Helpers - Launch database › Should work for the launches collections Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● Helpers - Launch database › Should work for the launches collections TypeError: Cannot read property 'collection' of undefined 13 | module.exports.fetchLaunch = async (collection, request) => { 14 | return global.db > 15 | .collection(collection) 16 | .find(launch.launchQuery(request)) 17 | .project(project.queryProject(request)) 18 | .sort(sort.launchSort(request)) at Object..module.exports.fetchLaunch (src/helpers/launch-database.js:15:6) at Object.it (test/helpers/launch-database.test.js:26:28) ● Helpers - Launch database › Should work for the upcoming collections Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout. at node_modules/jest-jasmine2/build/queue_runner.js:68:21 at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:628:19) ● Helpers - Launch database › Should work for the upcoming collections TypeError: Cannot read property 'collection' of undefined 13 | module.exports.fetchLaunch = async (collection, request) => { 14 | return global.db > 15 | .collection(collection) 16 | .find(launch.launchQuery(request)) 17 | .project(project.queryProject(request)) 18 | .sort(sort.launchSort(request)) at Object..module.exports.fetchLaunch (src/helpers/launch-database.js:15:6) at Object.it (test/helpers/launch-database.test.js:35:28) ---------------------|----------|----------|----------|----------|-------------------| File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s | ---------------------|----------|----------|----------|----------|-------------------| All files | 45.55 | 3.17 | 73.08 | 45.55 | | src | 80 | 30 | 50 | 80 | | app.js | 80 | 30 | 50 | 80 |... 86,88,90,91,92 | src/builders | 6.3 | 0 | 0 | 6.3 | | capsule-query.js | 5.88 | 0 | 0 | 5.88 |... 26,27,29,30,32 | core-query.js | 4.35 | 0 | 0 | 4.35 |... 35,36,38,39,41 | launch-query.js | 2.78 | 0 | 0 | 2.78 |... 18,120,121,123 | launch-sort.js | 22.22 | 0 | 0 | 22.22 |... 15,16,17,19,22 | project-query.js | 33.33 | 0 | 0 | 33.33 | 12,14,17,20 | src/db | 66.67 | 50 | 100 | 66.67 | | redis.js | 66.67 | 50 | 100 | 66.67 | 11,12 | src/helpers | 100 | 100 | 100 | 100 | | launch-database.js | 100 | 100 | 100 | 100 | | src/v2-routes | 75 | 0 | 100 | 75 | | v2-capsules.js | 77.78 | 100 | 100 | 77.78 | 16,26 | v2-home.js | 63.64 | 0 | 100 | 63.64 | 18,19,20,22 | v2-info.js | 83.33 | 100 | 100 | 83.33 | 16 | v2-launches.js | 68.75 | 100 | 100 | 68.75 | 20,26,32,33,34 | v2-launchpad.js | 77.78 | 100 | 100 | 77.78 | 16,26 | v2-parts.js | 76.47 | 100 | 100 | 76.47 | 19,29,40,50 | v2-rockets.js | 77.78 | 100 | 100 | 77.78 | 17,27 | v2-upcoming.js | 85.71 | 100 | 100 | 85.71 | 13 | src/validators | 100 | 100 | 100 | 100 | | home.js | 100 | 100 | 100 | 100 | | ---------------------|----------|----------|----------|----------|-------------------| Test Suites: 14 failed, 14 total Tests: 75 failed, 75 total Snapshots: 0 total Time: 74.753s Ran all test suites. error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. ```

jakewmeyer commented 6 years ago

Definitely a mongo connection issue, looking into this

jakewmeyer commented 6 years ago

Do you have a PORT environment variable set?

Because I saw you had it running on port 80, and the test command sets PORT to 0 to allow for random port assignments during tests.

Now that we're using Koa, there's a better solution to this, but it's in the pipeline.

ahatzz11 commented 6 years ago

I do not have a PORT env variable. What is the default port that the api should live on when using yarn start? I'm pretty new to node.js, so I looked around online and tried a few different ports I saw until 80 finally worked for me.

~ » echo $PORT

------------------------------------------------------------
~ »
jakewmeyer commented 6 years ago

Default PORT should be 5000

const port = process.env.PORT || 5000;

Were you running it in Docker-Compose? For Docker-Compose I have the port set to 80

ahatzz11 commented 6 years ago

This is interesting - I can hit the api from both ports.

~/code/SpaceX-API(branch:master*) » curl http://localhost:80/v2/launches/latest
{"flight_number":59,"launch_year":"2018","launch_date_unix":1522701041,"launch_date_utc":"2018-04-02T20:30:41Z","launch_date_local":"2018-04-02T16:30:41-04:00","rocket":{"rocket_id":"falcon9","rocket_name":"Falcon 9","rocket_type":"FT","first_stage":{"cores":[{"core_serial":"B1039","flight":2,"block":4,"reused":true,"land_success":null,"landing_type":null,"landing_vehicle":null}]},"second_stage":{"payloads":[{"payload_id":"SpaceX CRS-14","cap_serial":"C110","reused":true,"customers":["NASA (CRS)"],"payload_type":"Dragon 1.1","payload_mass_kg":2760,"payload_mass_lbs":6084.7,"orbit":"ISS","mass_returned_kg":null,"mass_returned_lbs":null,"flight_time_sec":null,"cargo_manifest":"https://www.nasa.gov/sites/default/files/atoms/files/spacex_crs-14_mision_overview_high_res.pdf"}]}},"telemetry":{"flight_club":"https://www.flightclub.io/results/?code=CR14"},"reuse":{"core":true,"side_core1":false,"side_core2":false,"fairings":false,"capsule":true},"launch_site":{"site_id":"ccafs_slc_40","site_name":"CCAFS SLC 40","site_name_long":"Cape Canaveral Air Force Station Space Launch Complex 40"},"launch_success":true,"links":{"mission_patch":"https://i.imgur.com/eHxbiG3.png","reddit_campaign":"https://www.reddit.com/r/spacex/comments/82op7a/crs14_launch_campaign_thread/","reddit_launch":"https://www.reddit.com/r/spacex/comments/88s8a7/rspacex_crs14_official_launch_discussion_updates/","reddit_recovery":null,"reddit_media":"https://www.reddit.com/r/spacex/comments/88l52i/rspacex_crs14_media_thread_videos_images_gifs/","presskit":"http://www.spacex.com/sites/spacex/files/crs-14presskit2018.pdf","article_link":null,"video_link":"https://www.youtube.com/watch?v=BPQHG-LevZM"},"details":"The launch used a refurbished booster (from CRS-12) for the 11th time, and a refurbished capsule (C110 from CRS-8) for the third time. External payloads include a materials research platform MISSE-FF phase 3 of the Robotic Refueling Mission TSIS, heliophysics sensor several crystallization experiments, and the RemoveDebris spacecraft aimed at space junk removal. The booster was expended in order to test a new landing profile."}%                                                                                                

------------------------------------------------------------

~/code/SpaceX-API(branch:master*) » curl http://localhost:5000/v2/launches/latest
{"flight_number":59,"launch_year":"2018","launch_date_unix":1522701041,"launch_date_utc":"2018-04-02T20:30:41Z","launch_date_local":"2018-04-02T16:30:41-04:00","rocket":{"rocket_id":"falcon9","rocket_name":"Falcon 9","rocket_type":"FT","first_stage":{"cores":[{"core_serial":"B1039","flight":2,"block":4,"reused":true,"land_success":null,"landing_type":null,"landing_vehicle":null}]},"second_stage":{"payloads":[{"payload_id":"SpaceX CRS-14","cap_serial":"C110","reused":true,"customers":["NASA (CRS)"],"payload_type":"Dragon 1.1","payload_mass_kg":2760,"payload_mass_lbs":6084.7,"orbit":"ISS","mass_returned_kg":null,"mass_returned_lbs":null,"flight_time_sec":null,"cargo_manifest":"https://www.nasa.gov/sites/default/files/atoms/files/spacex_crs-14_mision_overview_high_res.pdf"}]}},"telemetry":{"flight_club":"https://www.flightclub.io/results/?code=CR14"},"reuse":{"core":true,"side_core1":false,"side_core2":false,"fairings":false,"capsule":true},"launch_site":{"site_id":"ccafs_slc_40","site_name":"CCAFS SLC 40","site_name_long":"Cape Canaveral Air Force Station Space Launch Complex 40"},"launch_success":true,"links":{"mission_patch":"https://i.imgur.com/eHxbiG3.png","reddit_campaign":"https://www.reddit.com/r/spacex/comments/82op7a/crs14_launch_campaign_thread/","reddit_launch":"https://www.reddit.com/r/spacex/comments/88s8a7/rspacex_crs14_official_launch_discussion_updates/","reddit_recovery":null,"reddit_media":"https://www.reddit.com/r/spacex/comments/88l52i/rspacex_crs14_media_thread_videos_images_gifs/","presskit":"http://www.spacex.com/sites/spacex/files/crs-14presskit2018.pdf","article_link":null,"video_link":"https://www.youtube.com/watch?v=BPQHG-LevZM"},"details":"The launch used a refurbished booster (from CRS-12) for the 11th time, and a refurbished capsule (C110 from CRS-8) for the third time. External payloads include a materials research platform MISSE-FF phase 3 of the Robotic Refueling Mission TSIS, heliophysics sensor several crystallization experiments, and the RemoveDebris spacecraft aimed at space junk removal. The booster was expended in order to test a new landing profile."}%
jakewmeyer commented 6 years ago

Are you only running it once?

jakewmeyer commented 6 years ago

Did you get it working?