mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
added it_get_all_pages, it_get_page, it_update_page test
This commit is contained in:
@@ -6,8 +6,10 @@ use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\PageCollection;
|
||||
use App\Http\Resources\PageResource;
|
||||
use App\Http\Tools\Demo;
|
||||
use App\Page;
|
||||
use App\Models\Page;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class PagesController extends Controller
|
||||
{
|
||||
@@ -19,20 +21,21 @@ class PagesController extends Controller
|
||||
public function index()
|
||||
{
|
||||
return new PageCollection(
|
||||
Page::sortable()->paginate(10)
|
||||
Page::sortable()
|
||||
->paginate(10)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get page resource
|
||||
*
|
||||
* @param $slug
|
||||
* @param $page
|
||||
* @return PageResource
|
||||
*/
|
||||
public function show($slug)
|
||||
public function show(Page $page)
|
||||
{
|
||||
return new PageResource(
|
||||
Page::where('slug', $slug)->first()
|
||||
$page
|
||||
);
|
||||
}
|
||||
|
||||
@@ -40,22 +43,17 @@ class PagesController extends Controller
|
||||
* Update page content
|
||||
*
|
||||
* @param Request $request
|
||||
* @param $slug
|
||||
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
|
||||
* @param Page $page
|
||||
* @return ResponseFactory|Response
|
||||
*/
|
||||
public function update(Request $request, $slug)
|
||||
public function update(Request $request, Page $page)
|
||||
{
|
||||
// Check if is demo
|
||||
if (env('APP_DEMO')) {
|
||||
return Demo::response_204();
|
||||
}
|
||||
|
||||
// Get page
|
||||
$page = Page::where('slug', $slug)->first();
|
||||
|
||||
// Update page
|
||||
$page->update(make_single_input($request));
|
||||
|
||||
return response('Done', 204);
|
||||
return response(new PageResource($page), 204);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ use App\Http\Requests\SetupWizard\StoreStripeBillingRequest;
|
||||
use App\Http\Requests\SetupWizard\StoreStripeCredentialsRequest;
|
||||
use App\Http\Requests\SetupWizard\StoreStripePlansRequest;
|
||||
use App\Page;
|
||||
use App\Services\SetupService;
|
||||
use App\Services\StripeService;
|
||||
use App\Setting;
|
||||
use App\User;
|
||||
@@ -34,9 +35,10 @@ class SetupWizardController extends Controller
|
||||
/**
|
||||
* Inject Stripe Service
|
||||
*/
|
||||
public function __construct(StripeService $stripe)
|
||||
public function __construct()
|
||||
{
|
||||
$this->stripe = $stripe;
|
||||
$this->stripe = resolve(StripeService::class);
|
||||
$this->setup = resolve(SetupService::class);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -466,17 +468,12 @@ class SetupWizardController extends Controller
|
||||
]);
|
||||
|
||||
// Create legal pages and index content
|
||||
$pages = collect(config('content.pages'));
|
||||
$content = $request->license === 'Extended' ? collect(config('content.content_extended')) : collect(config('content.content_regular'));
|
||||
|
||||
$content->each(function ($content) {
|
||||
Setting::updateOrCreate($content);
|
||||
});
|
||||
|
||||
$pages->each(function ($page) {
|
||||
Page::updateOrCreate($page);
|
||||
});
|
||||
|
||||
// Retrieve access token
|
||||
$response = Route::dispatch(self::make_login_request($request));
|
||||
|
||||
@@ -506,31 +503,7 @@ class SetupWizardController extends Controller
|
||||
'--force' => true
|
||||
]);
|
||||
|
||||
// Create Passport Keys
|
||||
Artisan::call('passport:keys', [
|
||||
'--force' => true
|
||||
]);
|
||||
|
||||
// Create Password grant client
|
||||
Artisan::call('passport:client', [
|
||||
'--password' => true,
|
||||
'--name' => 'vuefilemanager',
|
||||
]);
|
||||
|
||||
// Create Personal access client
|
||||
Artisan::call('passport:client', [
|
||||
'--personal' => true,
|
||||
'--name' => 'shared',
|
||||
]);
|
||||
|
||||
// Get generated client
|
||||
$client = \DB::table('oauth_clients')->where('name', '=', 'vuefilemanager')->first();
|
||||
|
||||
// Set passport client to .env
|
||||
setEnvironmentValue([
|
||||
'PASSPORT_CLIENT_ID' => $client->id,
|
||||
'PASSPORT_CLIENT_SECRET' => $client->secret,
|
||||
]);
|
||||
$this->setup->seed_pages();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use App\Models\Page;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class PageResource extends JsonResource
|
||||
@@ -16,7 +17,7 @@ class PageResource extends JsonResource
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'id' => $this->slug,
|
||||
'type' => 'pages',
|
||||
'attributes' => [
|
||||
'visibility' => $this->visibility,
|
||||
|
||||
@@ -28,5 +28,9 @@ class Page extends Model
|
||||
'content',
|
||||
];
|
||||
|
||||
protected $primaryKey = 'slug';
|
||||
|
||||
protected $keyType = 'string';
|
||||
|
||||
public $timestamps = false;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
namespace App\Services;
|
||||
|
||||
|
||||
use App\Models\Page;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class SetupService
|
||||
@@ -24,4 +25,15 @@ class SetupService
|
||||
Storage::makeDirectory($directory);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Store default pages content like Terms of Service, Privacy Policy and Cookie Policy into database
|
||||
*/
|
||||
public function seed_pages()
|
||||
{
|
||||
collect(config('content.pages'))
|
||||
->each(function ($page) {
|
||||
Page::updateOrCreate($page);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -40,8 +40,8 @@ Route::group(['prefix' => 'plans'], function () {
|
||||
|
||||
// Pages
|
||||
Route::group(['prefix' => 'pages'], function () {
|
||||
Route::patch('/{slug}', [PagesController::class, 'update']);
|
||||
Route::get('/{slug}', [PagesController::class, 'show']);
|
||||
Route::patch('/{page}', [PagesController::class, 'update']);
|
||||
Route::get('/{page}', [PagesController::class, 'show']);
|
||||
Route::get('/', [PagesController::class, 'index']);
|
||||
});
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace Tests\Feature;
|
||||
|
||||
use App\Models\File;
|
||||
use App\Models\Folder;
|
||||
use App\Models\Page;
|
||||
use App\Models\Setting;
|
||||
use App\Models\Share;
|
||||
use App\Models\User;
|
||||
@@ -435,4 +436,52 @@ class AdminTest extends TestCase
|
||||
Storage::disk('local')
|
||||
->assertMissing($user->settings->getRawOriginal('avatar'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_get_all_pages()
|
||||
{
|
||||
$this->setup->seed_pages();
|
||||
|
||||
collect(['terms-of-service', 'privacy-policy', 'cookie-policy'])
|
||||
->each(function ($slug) {
|
||||
$this->getJson('/api/admin/pages')
|
||||
->assertStatus(200)
|
||||
->assertJsonFragment([
|
||||
'slug' => $slug
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_get_page()
|
||||
{
|
||||
$this->setup->seed_pages();
|
||||
|
||||
$this->getJson('/api/admin/pages/terms-of-service')
|
||||
->assertStatus(200)
|
||||
->assertJsonFragment([
|
||||
'slug' => 'terms-of-service'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_update_page()
|
||||
{
|
||||
$this->setup->seed_pages();
|
||||
|
||||
$this->patchJson('/api/admin/pages/terms-of-service', [
|
||||
'name' => 'title',
|
||||
'value' => 'New Title'
|
||||
])->assertStatus(204);
|
||||
|
||||
$this->assertDatabaseHas('pages', [
|
||||
'title' => 'New Title'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user