added it_update_settings, it_get_page, it_update_settings_image test

This commit is contained in:
Peter Papp
2021-03-05 11:57:48 +01:00
parent e514994b08
commit ce08240355
10 changed files with 250 additions and 194 deletions

View File

@@ -97,11 +97,6 @@ class SetupDevEnvironment extends Command
->each(function ($content) {
Setting::updateOrCreate($content);
});
collect(config('content.pages'))
->each(function ($page) {
Page::updateOrCreate($page);
});
}
/**
@@ -189,6 +184,8 @@ class SetupDevEnvironment extends Command
$this->call('migrate:fresh', [
'--force' => true
]);
$this->setup->seed_default_pages();
}
/**

View File

@@ -21,8 +21,7 @@ class PagesController extends Controller
public function index()
{
return new PageCollection(
Page::sortable()
->paginate(10)
Page::sortable()->paginate(10)
);
}
@@ -34,9 +33,7 @@ class PagesController extends Controller
*/
public function show(Page $page)
{
return new PageResource(
$page
);
return new PageResource($page);
}
/**
@@ -52,7 +49,9 @@ class PagesController extends Controller
return Demo::response_204();
}
$page->update(make_single_input($request));
$page->update(
make_single_input($request)
);
return response(new PageResource($page), 204);
}

View File

@@ -336,17 +336,17 @@ class SetupWizardController extends Controller
// Store Logo
if ($request->hasFile('logo')) {
$logo = store_system_image($request->file('logo'), 'system');
$logo = store_system_image($request->file('logo'));
}
// Store Logo horizontal
if ($request->hasFile('logo_horizontal')) {
$logo_horizontal = store_system_image($request->file('logo_horizontal'), 'system');
$logo_horizontal = store_system_image($request->file('logo_horizontal'));
}
// Store favicon
if ($request->hasFile('favicon')) {
$favicon = store_system_image($request->file('favicon'), 'system');
$favicon = store_system_image($request->file('favicon'));
}
// Get options
@@ -467,13 +467,6 @@ class SetupWizardController extends Controller
'value' => $request->purchase_code,
]);
// Create legal pages and index content
$content = $request->license === 'Extended' ? collect(config('content.content_extended')) : collect(config('content.content_regular'));
$content->each(function ($content) {
Setting::updateOrCreate($content);
});
// Retrieve access token
$response = Route::dispatch(self::make_login_request($request));
@@ -503,7 +496,7 @@ class SetupWizardController extends Controller
'--force' => true
]);
$this->setup->seed_pages();
$this->setup->seed_default_pages();
}
/**

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers;
use App\Http\Tools\Demo;
use App\Setting;
use App\Models\Setting;
use Artisan;
use Stripe;
use Cartalyst\Stripe\Exception\UnauthorizedException;
@@ -40,7 +40,6 @@ class SettingController extends Controller
*/
public function update(Request $request)
{
// Check if is demo
if (env('APP_DEMO')) {
return Demo::response_204();
}
@@ -48,21 +47,23 @@ class SettingController extends Controller
// Store image if exist
if ($request->hasFile($request->name)) {
// Store image
$image_path = store_system_image($request->file($request->name), 'system');
// Find and update image path
Setting::updateOrCreate(['name' => $request->name], [
'value' => $image_path
Setting::updateOrCreate([
'name' => $request->name
], [
'value' => store_system_image(
$request->file($request->name)
)
]);
return response('Done', 204);
}
// Find and update variable
Setting::updateOrCreate(['name' => $request->name], [
'value' => $request->value
]);
Setting::updateOrCreate(
['name' => $request->name],
['value' => $request->value]
);
return response('Done', 204);
}

View File

@@ -35,9 +35,7 @@ function obfuscate_email($email)
*/
function get_setting($setting)
{
$row = Setting::where('name', $setting)->first();
return $row ? $row->value : null;
return Setting::find($setting)->value ?? null;
}
/**
@@ -256,13 +254,13 @@ function store_avatar($image)
function store_system_image($image)
{
// Store avatar
$image_path = Str::random(8) . '-' . str_replace(' ', '', $image->getClientOriginalName());
$filename = Str::random(8) . '-' . str_replace(' ', '', $image->getClientOriginalName());
// Store image to disk
Storage::putFileAs('system', $image, $image_path);
Storage::putFileAs('system', $image, $filename);
// Return path to image
return `system/$image_path`;
return "system/$filename";
}
/**

View File

@@ -9,7 +9,13 @@ class Setting extends Model
{
use HasFactory;
protected $fillable = [
'value',
];
public $timestamps = false;
protected $guarded = ['id'];
protected $primaryKey = 'name';
protected $keyType = 'string';
}

View File

@@ -1,10 +1,9 @@
<?php
namespace App\Services;
use App\Models\Page;
use App\Models\Setting;
use Illuminate\Support\Facades\Storage;
class SetupService
@@ -29,11 +28,24 @@ class SetupService
/**
* Store default pages content like Terms of Service, Privacy Policy and Cookie Policy into database
*/
public function seed_pages()
public function seed_default_pages()
{
collect(config('content.pages'))
->each(function ($page) {
Page::updateOrCreate($page);
});
}
/**
* Store default VueFileManager settings into database
*
* @param $license
*/
public function seed_default_settings($license)
{
collect(config('content.content.' . strtolower($license)))
->each(function ($content) {
Setting::forceCreate($content);
});
}
}

View File

@@ -21,7 +21,8 @@ return [
'content' => 'Metus penatibus ligula dolor natoque non habitasse laoreet facilisis, libero vivamus eget semper vulputate interdum integer, phasellus lorem enim blandit consectetur nullam sollicitudin. Hendrerit interdum luctus ut in molestie himenaeos eros cum laoreet parturient est, eu lectus hac et netus viverra dictumst congue elit sem senectus litora, fames scelerisque adipiscing inceptos fringilla montes sociosqu suscipit auctor potenti. Elementum lacus vulputate viverra ac morbi ligula ipsum facilisi, sit eu imperdiet lacinia congue dis vitae.',
],
],
'content_regular' => [
'content' => [
'regular' => [
[
'name' => 'section_features',
'value' => 0,
@@ -91,7 +92,7 @@ return [
'value' => 1,
],
],
'content_extended' => [
'extended' => [
[
'name' => 'section_features',
'value' => '1',
@@ -168,5 +169,6 @@ return [
'name' => 'footer_content',
'value' => '© 2021 Simple & Powerful Personal Cloud Storage. Developed by <a href="https://hi5ve.digital" target="_blank">Hi5Ve.Digital</a>',
],
]
],
];

View File

@@ -14,7 +14,7 @@ class CreateSettingsTable extends Migration
public function up()
{
Schema::create('settings', function (Blueprint $table) {
$table->string('name')->unique();
$table->string('name')->unique()->primary();
$table->longText('value')->nullable();
});
}

View File

@@ -42,7 +42,7 @@ class AdminTest extends TestCase
->count(2)
->create(['filesize' => 1000000]);
Setting::create([
Setting::forceCreate([
'name' => 'license',
'value' => 'Regular'
]);
@@ -442,7 +442,7 @@ class AdminTest extends TestCase
*/
public function it_get_all_pages()
{
$this->setup->seed_pages();
$this->setup->seed_default_pages();
collect(['terms-of-service', 'privacy-policy', 'cookie-policy'])
->each(function ($slug) {
@@ -459,7 +459,7 @@ class AdminTest extends TestCase
*/
public function it_get_page()
{
$this->setup->seed_pages();
$this->setup->seed_default_pages();
$this->getJson('/api/admin/pages/terms-of-service')
->assertStatus(200)
@@ -473,7 +473,7 @@ class AdminTest extends TestCase
*/
public function it_update_page()
{
$this->setup->seed_pages();
$this->setup->seed_default_pages();
$this->patchJson('/api/admin/pages/terms-of-service', [
'name' => 'title',
@@ -484,4 +484,52 @@ class AdminTest extends TestCase
'title' => 'New Title'
]);
}
/**
* @test
*/
public function it_update_settings()
{
$this->setup->seed_default_settings('Extended');
$this->patchJson('/api/admin/settings', [
'name' => 'header_title',
'value' => 'New Header Title'
])->assertStatus(204);
$this->assertDatabaseHas('settings', [
'value' => 'New Header Title'
]);
}
/**
* @test
*/
public function it_update_settings_image()
{
Storage::fake('local');
$this->setup->create_directories();
Setting::forceCreate([
'name' => 'app_logo',
'value' => null,
]);
$logo = UploadedFile::fake()
->image('fake-image.jpg');
$this->patchJson('/api/admin/settings', [
'name' => 'app_logo',
'app_logo' => $logo
])->assertStatus(204);
$this->assertDatabaseMissing('settings', [
'app_logo' => null
]);
Storage::assertExists(
get_setting('app_logo')
);
}
}