From c1b7abb60ee97621abd4cf3d04cf033315040b54 Mon Sep 17 00:00:00 2001 From: Fady Mondy Date: Wed, 30 Oct 2024 12:34:03 +0300 Subject: [PATCH 1/2] add full testing and update setting() helper to accept default --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6ee584f..36c402f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,6 +41,7 @@ jobs: collision: 7.* exclude: - laravel: 11.* + php: 8.1 name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }} steps: - name: Checkout Code From 5edfe2da48d984ef46e5d09c280526c9bb13350a Mon Sep 17 00:00:00 2001 From: Fady Mondy Date: Wed, 30 Oct 2024 12:39:24 +0300 Subject: [PATCH 2/2] update code standers --- src/Services/Contracts/SettingHold.php | 4 +- src/Settings/SitesSettings.php | 26 +++++----- src/Traits/UseShield.php | 20 +++++--- tests/database/database.sqlite | Bin 872448 -> 880640 bytes .../2010_12_14_083720_sites_settings.php | 12 ++--- tests/src/LocationSettingsPageTest.php | 36 +++++++++----- tests/src/MenuSettingsPageTest.php | 21 ++++---- tests/src/SettingHolderTest.php | 2 +- tests/src/SettingHubPageTest.php | 1 + tests/src/SiteSettingsPageTest.php | 45 +++++++++++------- tests/src/TestCase.php | 15 +----- tests/src/TestDollarGlobalHelper.php | 3 +- tests/src/TestSettingGlobalHelper.php | 3 +- 13 files changed, 99 insertions(+), 89 deletions(-) diff --git a/src/Services/Contracts/SettingHold.php b/src/Services/Contracts/SettingHold.php index 11dee2a..322b79d 100644 --- a/src/Services/Contracts/SettingHold.php +++ b/src/Services/Contracts/SettingHold.php @@ -47,9 +47,9 @@ class SettingHold public int $order = 1; - public static function make(): static + public static function make(): self { - return new static; + return new self; } public function toArray(): array diff --git a/src/Settings/SitesSettings.php b/src/Settings/SitesSettings.php index 79d50bf..494a8f5 100644 --- a/src/Settings/SitesSettings.php +++ b/src/Settings/SitesSettings.php @@ -8,31 +8,31 @@ class SitesSettings extends Settings { public string $site_name; - public ?string $site_description=null; + public ?string $site_description = null; - public ?string $site_keywords=null; + public ?string $site_keywords = null; - public mixed $site_profile=null; + public mixed $site_profile = null; - public mixed $site_logo=null; + public mixed $site_logo = null; - public ?string $site_author=null; + public ?string $site_author = null; - public ?string $site_address=null; + public ?string $site_address = null; - public ?string $site_email=null; + public ?string $site_email = null; - public ?string $site_phone=null; + public ?string $site_phone = null; - public ?string $site_phone_code=null; + public ?string $site_phone_code = null; - public ?string $site_location=null; + public ?string $site_location = null; - public ?string $site_currency=null; + public ?string $site_currency = null; - public ?string $site_language=null; + public ?string $site_language = null; - public ?array $site_social=[]; + public ?array $site_social = []; public static function group(): string { diff --git a/src/Traits/UseShield.php b/src/Traits/UseShield.php index b1e9abf..0c52cf4 100644 --- a/src/Traits/UseShield.php +++ b/src/Traits/UseShield.php @@ -4,6 +4,7 @@ use BezhanSalleh\FilamentShield\Support\Utils; use Filament\Facades\Filament; +use Filament\Notifications\Notification; use Illuminate\Support\Str; trait UseShield @@ -48,13 +49,18 @@ protected function getShieldRedirectPath(): string protected static function getPermissionName(): string { - return Str::of(class_basename(static::class)) - ->prepend( - Str::of(Utils::getPagePermissionPrefix()) - ->append('_') - ->toString() - ) - ->toString(); + if(class_exists('BezhanSalleh\FilamentShield\Support\Utils')) { + return Str::of(class_basename(static::class)) + ->prepend( + Str::of(Utils::getPagePermissionPrefix()) + ->append('_') + ->toString() + ) + ->toString(); + } + else { + return ""; + } } public static function canAccess(): bool diff --git a/tests/database/database.sqlite b/tests/database/database.sqlite index aecc50bcea50b099a4382bedd9bc37c378a622eb..de6558faf0da393bc2adf3c91df7ec3c274af349 100644 GIT binary patch delta 8211 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 diff --git a/tests/database/migrations/2010_12_14_083720_sites_settings.php b/tests/database/migrations/2010_12_14_083720_sites_settings.php index 0468bb1..2b348b3 100644 --- a/tests/database/migrations/2010_12_14_083720_sites_settings.php +++ b/tests/database/migrations/2010_12_14_083720_sites_settings.php @@ -22,12 +22,6 @@ public function up(): void $this->createSetting('sites.site_social', []); } - - /** - * @param string $setting - * @param mixed $value - * @return void - */ private function createSetting(string $setting, mixed $value): void { $exSetting = explode('.', $setting); @@ -36,10 +30,10 @@ private function createSetting(string $setting, mixed $value): void $settingExists = \Illuminate\Support\Facades\DB::table('settings') ->where('name', $name) - ->where('group', $group) + ->where('group', $group) ->first(); - if(!$settingExists){ + if (! $settingExists) { \Illuminate\Support\Facades\DB::table('settings') ->insert([ 'group' => $group, @@ -47,7 +41,7 @@ private function createSetting(string $setting, mixed $value): void 'locked' => 0, 'payload' => json_encode($value), 'created_at' => now(), - 'updated_at' => now() + 'updated_at' => now(), ]); } } diff --git a/tests/src/LocationSettingsPageTest.php b/tests/src/LocationSettingsPageTest.php index c5fff24..d5d4d3f 100644 --- a/tests/src/LocationSettingsPageTest.php +++ b/tests/src/LocationSettingsPageTest.php @@ -1,6 +1,7 @@ create()); }); +function checkLocationSettingExists($setting, $name): void +{ + assertDatabaseHas(\TomatoPHP\FilamentSettingsHub\Models\Setting::class, [ + 'name' => $name, + 'group' => 'sites', + 'payload' => is_null($setting->{$name}) ? json_encode(null) : json_encode($setting->{$name}), + ]); +} + it('has site site_address exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_address'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkLocationSettingExists($siteSettings, 'site_address'); }); it('has site site_phone_code exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_phone_code'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkLocationSettingExists($siteSettings, 'site_phone_code'); }); it('has site site_location exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_location'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkLocationSettingExists($siteSettings, 'site_location'); }); it('has site site_currency exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_currency'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkLocationSettingExists($siteSettings, 'site_currency'); }); it('has site site_language exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_language'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkLocationSettingExists($siteSettings, 'site_language'); }); it('can render location settings page resource', function () { @@ -52,9 +62,9 @@ }); it('can save site settings', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; $data = $siteSettings->toArray(); - $data['site_currency'] = "USD"; + $data['site_currency'] = 'USD'; livewire(\TomatoPHP\FilamentSettingsHub\Pages\LocationSettings::class) ->fillForm($data) @@ -63,6 +73,6 @@ assertDatabaseHas(\TomatoPHP\FilamentSettingsHub\Models\Setting::class, [ 'name' => 'site_currency', 'group' => 'sites', - 'payload' => json_encode("USD"), + 'payload' => json_encode('USD'), ]); }); diff --git a/tests/src/MenuSettingsPageTest.php b/tests/src/MenuSettingsPageTest.php index 4abc8e9..ccc2c30 100644 --- a/tests/src/MenuSettingsPageTest.php +++ b/tests/src/MenuSettingsPageTest.php @@ -1,7 +1,7 @@ checkSettingExists($siteSettings, 'site_social'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + + assertDatabaseHas(\TomatoPHP\FilamentSettingsHub\Models\Setting::class, [ + 'name' => 'site_social', + 'group' => 'sites', + 'payload' => is_null($siteSettings->site_social) ? json_encode(null) : json_encode($siteSettings->site_social), + ]); }); it('can render social menu settings page resource', function () { @@ -24,7 +29,7 @@ livewire(\TomatoPHP\FilamentSettingsHub\Pages\SocialMenuSettings::class) ->fillForm([ - 'site_social' => null + 'site_social' => null, ]) ->call('save') ->assertHasFormErrors([ @@ -33,13 +38,13 @@ }); it('can save social menu settings', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; $data = $siteSettings->toArray(); $data['site_social'] = [ [ - "vendor" => "facebook", - "link" => "https://facebook.com" - ] + 'vendor' => 'facebook', + 'link' => 'https://facebook.com', + ], ]; livewire(\TomatoPHP\FilamentSettingsHub\Pages\SocialMenuSettings::class) diff --git a/tests/src/SettingHolderTest.php b/tests/src/SettingHolderTest.php index 1219321..e89f5b8 100644 --- a/tests/src/SettingHolderTest.php +++ b/tests/src/SettingHolderTest.php @@ -11,7 +11,7 @@ ->label('filament-settings-hub::messages.settings.social.title') ->icon('heroicon-s-bars-3') ->description('filament-settings-hub::messages.settings.social.description') - ->group('filament-settings-hub::messages.group') + ->group('filament-settings-hub::messages.group'), ]); \PHPUnit\Framework\assertEquals(1, \TomatoPHP\FilamentSettingsHub\Facades\FilamentSettingsHub::load()->count()); diff --git a/tests/src/SettingHubPageTest.php b/tests/src/SettingHubPageTest.php index d8c29ab..1d27ae8 100644 --- a/tests/src/SettingHubPageTest.php +++ b/tests/src/SettingHubPageTest.php @@ -1,6 +1,7 @@ create()); }); +function checkSiteSettingExists($setting, $name): void +{ + assertDatabaseHas(\TomatoPHP\FilamentSettingsHub\Models\Setting::class, [ + 'name' => $name, + 'group' => 'sites', + 'payload' => is_null($setting->{$name}) ? json_encode(null) : json_encode($setting->{$name}), + ]); +} it('has site site_name exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_name'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkSiteSettingExists($siteSettings, 'site_name'); }); it('has site_description exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_description'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkSiteSettingExists($siteSettings, 'site_description'); }); it('has site_keywords exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_keywords'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkSiteSettingExists($siteSettings, 'site_keywords'); }); it('has site_phone exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; - $this->checkSettingExists($siteSettings, 'site_phone'); + checkSiteSettingExists($siteSettings, 'site_phone'); }); it('has site_profile exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_profile'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkSiteSettingExists($siteSettings, 'site_profile'); }); it('has site_author exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_author'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkSiteSettingExists($siteSettings, 'site_author'); }); it('has site_email exists', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); - $this->checkSettingExists($siteSettings, 'site_email'); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; + checkSiteSettingExists($siteSettings, 'site_email'); }); it('can render site settings page resource', function () { @@ -54,7 +63,7 @@ it('can validate site settings before save', function () { livewire(\TomatoPHP\FilamentSettingsHub\Pages\SiteSettings::class) ->fillForm([ - 'site_name' => null + 'site_name' => null, ]) ->call('save') ->assertHasFormErrors([ @@ -63,9 +72,9 @@ }); it('can save site settings', function () { - $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings(); + $siteSettings = new \TomatoPHP\FilamentSettingsHub\Settings\SitesSettings; $data = $siteSettings->toArray(); - $data['site_name'] = "new"; + $data['site_name'] = 'new'; livewire(\TomatoPHP\FilamentSettingsHub\Pages\SiteSettings::class) ->fillForm($data) @@ -74,6 +83,6 @@ assertDatabaseHas(\TomatoPHP\FilamentSettingsHub\Models\Setting::class, [ 'name' => 'site_name', 'group' => 'sites', - 'payload' => json_encode("new"), + 'payload' => json_encode('new'), ]); }); diff --git a/tests/src/TestCase.php b/tests/src/TestCase.php index b969f3b..c3e0b59 100644 --- a/tests/src/TestCase.php +++ b/tests/src/TestCase.php @@ -21,6 +21,7 @@ use Spatie\LaravelSettings\LaravelSettingsServiceProvider; use TomatoPHP\FilamentSettingsHub\FilamentSettingsHubServiceProvider; use TomatoPHP\FilamentSettingsHub\Tests\Models\User; + use function Pest\Laravel\assertDatabaseHas; abstract class TestCase extends BaseTestCase @@ -68,18 +69,4 @@ public function getEnvironmentSetUp($app): void __DIR__ . '/../resources/views', ]); } - - /** - * @param $setting - * @param $name - * @return void - */ - public function checkSettingExists($setting, $name): void - { - assertDatabaseHas(\TomatoPHP\FilamentSettingsHub\Models\Setting::class, [ - 'name' => $name, - 'group' => 'sites', - 'payload' => is_null($setting->{$name}) ? json_encode(null) : json_encode($setting->{$name}), - ]); - } } diff --git a/tests/src/TestDollarGlobalHelper.php b/tests/src/TestDollarGlobalHelper.php index 450b4fa..6026415 100644 --- a/tests/src/TestDollarGlobalHelper.php +++ b/tests/src/TestDollarGlobalHelper.php @@ -1,10 +1,9 @@ ' . number_format(2500, 2) . "".setting('site_currency')."", $setting); + assertEquals('' . number_format(2500, 2) . '' . setting('site_currency') . '', $setting); }); diff --git a/tests/src/TestSettingGlobalHelper.php b/tests/src/TestSettingGlobalHelper.php index ac9897d..3232716 100644 --- a/tests/src/TestSettingGlobalHelper.php +++ b/tests/src/TestSettingGlobalHelper.php @@ -1,13 +1,12 @@ 'site_name', 'group' => 'sites', - 'payload' => json_encode($setting) + 'payload' => json_encode($setting), ]); });