diff --git a/app/Database/factories/NewsFactory.php b/app/Database/factories/NewsFactory.php new file mode 100644 index 00000000..eda10901 --- /dev/null +++ b/app/Database/factories/NewsFactory.php @@ -0,0 +1,14 @@ +define(App\Models\News::class, function (Faker $faker) { + return [ + 'id' => null, + 'user_id' => function() { + return factory(App\Models\User::class)->create()->id; + }, + 'subject' => $faker->text(), + 'body' => $faker->sentence, + ]; +}); diff --git a/app/Http/Controllers/Api/NewsController.php b/app/Http/Controllers/Api/NewsController.php new file mode 100644 index 00000000..0b8e1c4d --- /dev/null +++ b/app/Http/Controllers/Api/NewsController.php @@ -0,0 +1,38 @@ +newsRepo = $newsRepo; + } + + /** + * Return all the airlines, paginated + * @param Request $request + * @return mixed + */ + public function index(Request $request) + { + $news = $this->newsRepo + ->orderBy('created_at', 'desc') + ->paginate(); + + return NewsResource::collection($news); + } +} diff --git a/app/Http/Resources/News.php b/app/Http/Resources/News.php new file mode 100644 index 00000000..8262b310 --- /dev/null +++ b/app/Http/Resources/News.php @@ -0,0 +1,30 @@ + $this->user->id, + 'name' => $this->user->name, + ]; + + return $resp; + } +} diff --git a/app/Routes/api.php b/app/Routes/api.php index 41d6ad73..6c67b283 100755 --- a/app/Routes/api.php +++ b/app/Routes/api.php @@ -7,6 +7,7 @@ Route::group([], function () { Route::get('acars', 'AcarsController@index'); Route::get('pireps/{pirep_id}/acars/geojson', 'PirepController@acars_geojson'); + Route::get('news', 'NewsController@index'); Route::get('status', 'StatusController@status'); Route::get('version', 'StatusController@status'); }); diff --git a/tests/ApiTest.php b/tests/ApiTest.php index 827f0927..5241bbe7 100644 --- a/tests/ApiTest.php +++ b/tests/ApiTest.php @@ -62,6 +62,18 @@ class ApiTest extends TestCase $this->get($uri)->assertStatus(401); } + /** + * Test getting the news from the API + */ + public function testGetNews(): void + { + factory(App\Models\News::class)->create(); + $response = $this->get('/api/news')->json(); + + $this->assertCount(1, $response['data']); + $this->assertTrue(array_key_exists('user', $response['data'][0])); + } + /** * */