Browse Source

Add outlet listing api endpoint

pull/3/head
Nafies Luthfi 7 years ago
parent
commit
878575a88b
  1. 18
      app/Http/Controllers/Api/OutletController.php
  2. 19
      app/Http/Resources/Outlet.php
  3. 19
      app/Http/Resources/OutletCollection.php
  4. 4
      app/Outlet.php
  5. 7
      routes/api.php
  6. 26
      tests/Feature/Api/OutletListingTest.php

18
app/Http/Controllers/Api/OutletController.php

@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api;
use App\Outlet;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\OutletCollection;
class OutletController extends Controller
{
public function index(Request $request)
{
$outlets = Outlet::all();
return new OutletCollection($outlets);
}
}

19
app/Http/Resources/Outlet.php

@ -0,0 +1,19 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class Outlet extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
}

19
app/Http/Resources/OutletCollection.php

@ -0,0 +1,19 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\ResourceCollection;
class OutletCollection extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
}

4
app/Outlet.php

@ -11,6 +11,10 @@ class Outlet extends Model
'name', 'address', 'latitude', 'longitude', 'creator_id',
];
public $appends = [
'coordinate', 'map_popup_content',
];
public function getNameLinkAttribute()
{
$title = __('app.show_detail_title', [

7
routes/api.php

@ -16,3 +16,10 @@ use Illuminate\Http\Request;
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::group(['as' => 'api.', 'namespace' => 'Api'], function () {
/*
* Outlets Endpoints
*/
Route::get('outlets', 'OutletController@index')->name('outlets.index');
});

26
tests/Feature/Api/OutletListingTest.php

@ -0,0 +1,26 @@
<?php
namespace Tests\Feature\Api;
use App\Outlet;
use Tests\BrowserKitTest as TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class OutletListingTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function guest_can_retrieve_outlet_list()
{
$outlet = factory(Outlet::class)->create();
$this->getJson(route('api.outlets.index'));
$this->seeJson([
'name' => $outlet->name,
'address' => $outlet->address,
'coordinate' => $outlet->coordinate,
]);
}
}
Loading…
Cancel
Save