From 01d79871bcf7bf64f5d54a1aa4fa5845cf2e5ff7 Mon Sep 17 00:00:00 2001 From: Arthur Monney Date: Fri, 1 Nov 2024 20:38:25 +0100 Subject: [PATCH 1/2] feat: fix slug generation and add new tests --- .github/workflows/phpstan.yml | 2 +- composer.json | 11 +-- .../migrations/create_plan_features_table.php | 3 +- .../create_plan_subscription_usage_table.php | 3 +- .../create_plan_subscriptions_table.php | 3 +- database/migrations/create_plans_table.php | 3 +- ...ove_unique_slug_on_subscriptions_table.php | 17 +++++ pint.json | 40 ++--------- src/Models/Feature.php | 12 ++-- src/Models/Plan.php | 26 ++----- src/Models/Subscription.php | 10 ++- src/Models/SubscriptionUsage.php | 15 ++-- src/Services/Period.php | 4 +- src/SubscriptionServiceProvider.php | 1 + src/Traits/HasPlanSubscriptions.php | 6 +- src/Traits/HasSlug.php | 2 +- src/Traits/HasTranslations.php | 6 +- tests/Feature/PlanTest.php | 8 +-- tests/Feature/SubscribeTest.php | 69 +++++++++++++++++-- tests/database/factories/PlanFactory.php | 2 +- tests/database/factories/UserFactory.php | 2 +- .../migrations/create_users_table.php | 3 +- tests/src/TestCase.php | 4 +- 23 files changed, 143 insertions(+), 109 deletions(-) create mode 100644 database/migrations/remove_unique_slug_on_subscriptions_table.php diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index ab92542..6d7663f 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -44,4 +44,4 @@ jobs: run: composer install --prefer-dist --no-interaction - name: Run PHPStan - run: composer stan + run: composer types diff --git a/composer.json b/composer.json index 5bb68a5..f4d6121 100644 --- a/composer.json +++ b/composer.json @@ -42,10 +42,11 @@ "spatie/laravel-translatable": "^6.5.0" }, "require-dev": { - "laravel/pint": "^1.13", "larastan/larastan": "^2.0", + "laravel/pint": "^1.13", "orchestra/testbench": "^8.0|^9.0", - "pestphp/pest": "^2.18" + "pestphp/pest": "^2.18", + "spatie/test-time": "^1.3" }, "autoload": { "psr-4": { @@ -59,9 +60,9 @@ } }, "scripts": { - "pest": "./vendor/bin/pest", - "pint": "./vendor/bin/pint", - "stan": "./vendor/bin/phpstan analyse --memory-limit=2g" + "test": "./vendor/bin/pest", + "lint": "./vendor/bin/pint", + "types": "./vendor/bin/phpstan analyse --memory-limit=2g" }, "config": { "sort-packages": true, diff --git a/database/migrations/create_plan_features_table.php b/database/migrations/create_plan_features_table.php index 483c1a1..8e11e8f 100755 --- a/database/migrations/create_plan_features_table.php +++ b/database/migrations/create_plan_features_table.php @@ -6,7 +6,8 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class () extends Migration { +return new class extends Migration +{ public function up(): void { Schema::create(config('laravel-subscriptions.tables.features'), function (Blueprint $table): void { diff --git a/database/migrations/create_plan_subscription_usage_table.php b/database/migrations/create_plan_subscription_usage_table.php index 4a40ffd..c0fc082 100755 --- a/database/migrations/create_plan_subscription_usage_table.php +++ b/database/migrations/create_plan_subscription_usage_table.php @@ -6,7 +6,8 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class () extends Migration { +return new class extends Migration +{ public function up(): void { Schema::create(config('laravel-subscriptions.tables.subscription_usage'), function (Blueprint $table): void { diff --git a/database/migrations/create_plan_subscriptions_table.php b/database/migrations/create_plan_subscriptions_table.php index becc763..9fdbb9c 100755 --- a/database/migrations/create_plan_subscriptions_table.php +++ b/database/migrations/create_plan_subscriptions_table.php @@ -6,7 +6,8 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class () extends Migration { +return new class extends Migration +{ public function up(): void { Schema::create(config('laravel-subscriptions.tables.subscriptions'), function (Blueprint $table): void { diff --git a/database/migrations/create_plans_table.php b/database/migrations/create_plans_table.php index c7ca1ce..b810769 100755 --- a/database/migrations/create_plans_table.php +++ b/database/migrations/create_plans_table.php @@ -7,7 +7,8 @@ use Illuminate\Support\Facades\Schema; use Laravelcm\Subscriptions\Interval; -return new class () extends Migration { +return new class extends Migration +{ public function up(): void { Schema::create(config('laravel-subscriptions.tables.plans'), function (Blueprint $table): void { diff --git a/database/migrations/remove_unique_slug_on_subscriptions_table.php b/database/migrations/remove_unique_slug_on_subscriptions_table.php new file mode 100644 index 0000000..29cf771 --- /dev/null +++ b/database/migrations/remove_unique_slug_on_subscriptions_table.php @@ -0,0 +1,17 @@ +dropUnique(config('laravel-subscriptions.tables.subscriptions') . '_slug_unique'); + }); + } +}; diff --git a/pint.json b/pint.json index 9ba6868..66e5780 100644 --- a/pint.json +++ b/pint.json @@ -1,40 +1,14 @@ { - "preset": "psr12", + "preset": "laravel", "rules": { - "align_multiline_comment": true, + "concat_space": { + "spacing": "one" + }, "array_indentation": true, "array_syntax": true, - "blank_line_after_namespace": true, - "blank_line_after_opening_tag": true, - "combine_consecutive_issets": true, - "combine_consecutive_unsets": true, - "concat_space": true, - "declare_parentheses": true, + "blank_line_before_statement": true, "declare_strict_types": true, - "explicit_string_variable": true, - "final_internal_class": false, - "fully_qualified_strict_types": true, - "global_namespace_import": { - "import_classes": true, - "import_constants": true, - "import_functions": true - }, - "is_null": true, - "lambda_not_used_import": true, - "logical_operators": true, - "mb_str_functions": true, - "method_chaining_indentation": true, - "modernize_strpos": true, - "new_with_braces": true, - "no_empty_comment": true, - "not_operator_with_space": true, - "ordered_traits": true, - "protected_to_private": true, - "simplified_if_return": true, - "strict_comparison": true, - "ternary_to_null_coalescing": true, - "trim_array_spaces": true, - "use_arrow_functions": true, - "void_return": true + "declare_parentheses": true, + "ordered_traits": true } } diff --git a/src/Models/Feature.php b/src/Models/Feature.php index cb67aa8..b6cbf86 100755 --- a/src/Models/Feature.php +++ b/src/Models/Feature.php @@ -5,22 +5,20 @@ namespace Laravelcm\Subscriptions\Models; use Carbon\Carbon; -use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; -use Laravelcm\Subscriptions\Traits\HasSlug; -use Laravelcm\Subscriptions\Traits\HasTranslations; +use Illuminate\Database\Eloquent\SoftDeletes; use Laravelcm\Subscriptions\Services\Period; use Laravelcm\Subscriptions\Traits\BelongsToPlan; +use Laravelcm\Subscriptions\Traits\HasSlug; +use Laravelcm\Subscriptions\Traits\HasTranslations; use Spatie\EloquentSortable\Sortable; use Spatie\EloquentSortable\SortableTrait; use Spatie\Sluggable\SlugOptions; /** - * Laravelcm\Subscriptions\Models\PlanFeature. - * - * @property int $id + * @property-read int|string $id * @property string $slug * @property array $title * @property array $description diff --git a/src/Models/Plan.php b/src/Models/Plan.php index f32fbc9..80fa9b0 100755 --- a/src/Models/Plan.php +++ b/src/Models/Plan.php @@ -4,20 +4,18 @@ namespace Laravelcm\Subscriptions\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\HasMany; -use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\SoftDeletes; use Laravelcm\Subscriptions\Traits\HasSlug; use Laravelcm\Subscriptions\Traits\HasTranslations; +use Spatie\EloquentSortable\Sortable; use Spatie\EloquentSortable\SortableTrait; use Spatie\Sluggable\SlugOptions; -use Spatie\EloquentSortable\Sortable; /** - * Laravelcm\Subscriptions\Models\Plan. - * - * @property int $id + * @property-read int|string $id * @property string $slug * @property array $name * @property array $description @@ -96,22 +94,9 @@ class Plan extends Model implements Sortable ]; protected $casts = [ - 'slug' => 'string', 'is_active' => 'boolean', 'price' => 'float', 'signup_fee' => 'float', - 'currency' => 'string', - 'trial_period' => 'integer', - 'trial_interval' => 'string', - 'invoice_period' => 'integer', - 'invoice_interval' => 'string', - 'grace_period' => 'integer', - 'grace_interval' => 'string', - 'prorate_day' => 'integer', - 'prorate_period' => 'integer', - 'prorate_extend_due' => 'integer', - 'active_subscribers_limit' => 'integer', - 'sort_order' => 'integer', 'deleted_at' => 'datetime', ]; @@ -149,7 +134,8 @@ public function getSlugOptions(): SlugOptions return SlugOptions::create() ->doNotGenerateSlugsOnUpdate() ->generateSlugsFrom('name') - ->saveSlugsTo('slug'); + ->saveSlugsTo('slug') + ->allowDuplicateSlugs(); } public function features(): HasMany diff --git a/src/Models/Subscription.php b/src/Models/Subscription.php index bc8c291..a35f7be 100755 --- a/src/Models/Subscription.php +++ b/src/Models/Subscription.php @@ -20,9 +20,7 @@ use Spatie\Sluggable\SlugOptions; /** - * Laravelcm\Subscriptions\Models\Subscription. - * - * @property int $id + * @property-read int|string $id * @property string $subscriber_type * @property string $slug * @property array $title @@ -114,7 +112,7 @@ protected static function boot(): void parent::boot(); static::creating(function (self $model): void { - if ( ! $model->starts_at || ! $model->ends_at) { + if (! $model->starts_at || ! $model->ends_at) { $model->setNewPeriod(); } }); @@ -367,7 +365,7 @@ public function canUseFeature(string $featureSlug): bool // If the feature value is zero, let's return false since // there's no uses available. (useful to disable countable features) - if ( ! $usage || $usage->expired() || $featureValue === null || $featureValue === '0' || $featureValue === 'false') { + if (! $usage || $usage->expired() || $featureValue === null || $featureValue === '0' || $featureValue === 'false') { return false; } @@ -382,7 +380,7 @@ public function getFeatureUsage(string $featureSlug): int { $usage = $this->usage()->byFeatureSlug($featureSlug)->first(); - return ( ! $usage || $usage->expired()) ? 0 : $usage->used; + return (! $usage || $usage->expired()) ? 0 : $usage->used; } /** diff --git a/src/Models/SubscriptionUsage.php b/src/Models/SubscriptionUsage.php index 661761b..1afbcf9 100755 --- a/src/Models/SubscriptionUsage.php +++ b/src/Models/SubscriptionUsage.php @@ -5,16 +5,14 @@ namespace Laravelcm\Subscriptions\Models; use Carbon\Carbon; -use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\SoftDeletes; -use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\SoftDeletes; /** - * Laravelcm\Subscriptions\Models\SubscriptionUsage. - * - * @property int $id + * @property-read int|string $id * @property int $used * @property Carbon|null $valid_until * @property Carbon|null $created_at @@ -32,7 +30,6 @@ * @method static \Illuminate\Database\Eloquent\Builder|\Laravelcm\Subscriptions\Models\SubscriptionUsage whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\Laravelcm\Subscriptions\Models\SubscriptionUsage whereUsed($value) * @method static \Illuminate\Database\Eloquent\Builder|\Laravelcm\Subscriptions\Models\SubscriptionUsage whereValidUntil($value) - * */ class SubscriptionUsage extends Model { @@ -70,14 +67,14 @@ public function subscription(): BelongsTo public function scopeByFeatureSlug(Builder $builder, string $featureSlug): Builder { $model = config('laravel-subscriptions.models.feature', Feature::class); - $feature = tap(new $model())->where('slug', $featureSlug)->first(); + $feature = $model::where('slug', $featureSlug)->first(); return $builder->where('feature_id', $feature ? $feature->getKey() : null); } public function expired(): bool { - if ( ! $this->valid_until) { + if (! $this->valid_until) { return false; } diff --git a/src/Services/Period.php b/src/Services/Period.php index ef39c41..f02660c 100755 --- a/src/Services/Period.php +++ b/src/Services/Period.php @@ -28,7 +28,7 @@ public function __construct(string $interval = 'month', int $count = 1, ?Carbon if (empty($start)) { $this->start = Carbon::now(); - } elseif ( ! $start instanceof Carbon) { + } elseif (! $start instanceof Carbon) { $this->start = new Carbon($start); } else { $this->start = $start; @@ -36,7 +36,7 @@ public function __construct(string $interval = 'month', int $count = 1, ?Carbon $this->period = $count; $start = clone $this->start; - $method = 'add'.ucfirst($this->interval).'s'; + $method = 'add' . ucfirst($this->interval) . 's'; $this->end = $start->{$method}($this->period); } diff --git a/src/SubscriptionServiceProvider.php b/src/SubscriptionServiceProvider.php index 62bdb50..c83738b 100755 --- a/src/SubscriptionServiceProvider.php +++ b/src/SubscriptionServiceProvider.php @@ -19,6 +19,7 @@ public function configurePackage(Package $package): void 'create_plan_features_table', 'create_plan_subscriptions_table', 'create_plan_subscription_usage_table', + 'remove_unique_slug_on_subscriptions_table', ]) ->hasInstallCommand(function (InstallCommand $command): void { $command diff --git a/src/Traits/HasPlanSubscriptions.php b/src/Traits/HasPlanSubscriptions.php index 83844c3..e6f2b19 100755 --- a/src/Traits/HasPlanSubscriptions.php +++ b/src/Traits/HasPlanSubscriptions.php @@ -7,8 +7,8 @@ use Carbon\Carbon; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Relations\MorphMany; -use Laravelcm\Subscriptions\Models\Subscription; use Laravelcm\Subscriptions\Models\Plan; +use Laravelcm\Subscriptions\Models\Subscription; use Laravelcm\Subscriptions\Services\Period; trait HasPlanSubscriptions @@ -22,8 +22,6 @@ protected static function bootHasSubscriptions(): void /** * The subscriber may have many plan subscriptions. - * - * @return MorphMany */ public function planSubscriptions(): MorphMany { @@ -42,7 +40,7 @@ public function activePlanSubscriptions(): Collection public function planSubscription(string $subscriptionSlug): ?Subscription { - return $this->planSubscriptions()->where('slug', $subscriptionSlug)->first(); + return $this->planSubscriptions()->where('slug', 'like', '%' . $subscriptionSlug . '%')->first(); } public function subscribedPlans(): Collection diff --git a/src/Traits/HasSlug.php b/src/Traits/HasSlug.php index f4b79d3..9aeee19 100644 --- a/src/Traits/HasSlug.php +++ b/src/Traits/HasSlug.php @@ -17,7 +17,7 @@ protected static function bootHasSlug(): void static::creating(function (Model $model): void { if ($model->exists && $model->getSlugOptions()->generateSlugsOnUpdate) { $model->generateSlugOnUpdate(); - } elseif ( ! $model->exists && $model->getSlugOptions()->generateSlugsOnCreate) { + } elseif (! $model->exists && $model->getSlugOptions()->generateSlugsOnCreate) { $model->generateSlugOnCreate(); } }); diff --git a/src/Traits/HasTranslations.php b/src/Traits/HasTranslations.php index c19e5df..9e66f3c 100644 --- a/src/Traits/HasTranslations.php +++ b/src/Traits/HasTranslations.php @@ -16,7 +16,7 @@ trait HasTranslations public function getAttributeValue(mixed $key): mixed { - if ( ! $this->isTranslatableAttribute($key)) { + if (! $this->isTranslatableAttribute($key)) { return parent::getAttributeValue($key); } @@ -37,11 +37,11 @@ public function getTranslations(?string $key = null): array ); // Inject default translation if none supplied - if ( ! is_array($value)) { + if (! is_array($value)) { $oldValue = $value; if ($this->hasSetMutator($key)) { - $method = 'set'.Str::studly($key).'Attribute'; + $method = 'set' . Str::studly($key) . 'Attribute'; $value = $this->{$method}($value); } diff --git a/tests/Feature/PlanTest.php b/tests/Feature/PlanTest.php index 4a54d58..c37eed0 100644 --- a/tests/Feature/PlanTest.php +++ b/tests/Feature/PlanTest.php @@ -11,7 +11,7 @@ it('can create a plan', function (): void { expect(Plan::count())->toBe(1); -})->group('plan'); +}); it('a plan can have many features', function (): void { expect($this->plan->features()->count())->toBe(0); @@ -25,7 +25,7 @@ ]); expect($this->plan->features()->count())->toBe(2); -})->group('plan'); +}); it('a plan can be free with trial period', function (): void { $this->plan->update([ @@ -37,7 +37,7 @@ ->toBeTrue() ->and($this->plan->hasTrial()) ->toBeTrue(); -})->group('plan'); +}); it('a plan can have a grace period', function (): void { $this->plan->update([ @@ -47,4 +47,4 @@ expect($this->plan->hasGrace()) ->toBeTrue(); -})->group('plan'); +}); diff --git a/tests/Feature/SubscribeTest.php b/tests/Feature/SubscribeTest.php index ff3501b..88f326d 100644 --- a/tests/Feature/SubscribeTest.php +++ b/tests/Feature/SubscribeTest.php @@ -2,10 +2,15 @@ declare(strict_types=1); +use Laravelcm\Subscriptions\Models\Subscription; +use Spatie\TestTime\TestTime; +use Tests\Models\Feature; use Tests\Models\Plan; use Tests\Models\User; beforeEach(function (): void { + TestTime::freeze('Y-m-d H:i:s', '2024-11-01 00:00:01'); + $this->user = User::factory()->create(); $this->plan = Plan::factory()->create(); }); @@ -20,7 +25,7 @@ 'subscribedPlans', 'subscribedTo', ]); -})->group('subscribe'); +}); it('a user can subscribe to a plan', function (): void { $this->user->newPlanSubscription('main', $this->plan); @@ -29,7 +34,7 @@ ->toBeTrue() ->and($this->user->subscribedPlans()->count()) ->toBe(1); -})->group('subscribe'); +}); it('user can have a monthly active subscription plan', function (): void { $this->user->newPlanSubscription('main', $this->plan); @@ -38,7 +43,7 @@ ->toBeTrue() ->and($this->user->planSubscription('main')->ends_at->toDateString()) ->toBe(Carbon\Carbon::now()->addMonth()->addDays($this->plan->trial_period)->toDateString()); -})->group('subscribe'); +}); it('user can change plan', function (): void { $plan = Plan::factory()->create([ @@ -54,7 +59,7 @@ expect($this->user->subscribedTo($plan->id)) ->toBeTrue(); -})->group('subscribe'); +}); it('user can cancel a subscription', function (): void { $this->user->newPlanSubscription('main', $this->plan); @@ -66,4 +71,58 @@ expect($this->user->planSubscription('main')->canceled()) ->toBeTrue(); -})->group('subscribe'); +}); + +it('feature can be used by a user in a plan', function (): void { + Feature::factory(['plan_id' => $this->plan->id])->create(); + Feature::factory([ + 'name' => 'view_podcast', + 'value' => 2, + 'plan_id' => $this->plan->id, + ])->create(); + + expect($this->plan->features()->count()) + ->toBe(2); + + $this->user->newPlanSubscription('main', $this->plan); + + expect($this->user->planSubscription('main')) + ->toBeInstanceOf(Subscription::class) + ->and($this->user->planSubscription('main')->active()) + ->toBeTrue() + ->and($this->user->planSubscription('main')->canUseFeature('view-podcast')); +}); + +it('feature can be decrease for a user after usage on subscription', function (): void { + Feature::factory([ + 'name' => 'view_podcast', + 'value' => 2, + 'plan_id' => $this->plan->id, + ])->create(); + + $this->user->newPlanSubscription('main', $this->plan); + $this->user->planSubscription('main')->recordFeatureUsage('view-podcast'); + + expect($this->user->planSubscription('main')->getFeatureUsage('view-podcast')) + ->toBe(1) + ->and($this->user->planSubscription('main')->getFeatureRemainings('view-podcast')) + ->toBe(1); +}); + +it('feature can reduce for a user on a subscription', function (): void { + Feature::factory([ + 'name' => 'deploy sites', + 'value' => 5, + 'plan_id' => $this->plan->id, + ])->create(); + $featureSlug = 'deploy-sites'; + + $this->user->newPlanSubscription('main', $this->plan); + $this->user->planSubscription('main')->recordFeatureUsage($featureSlug, 2); + $this->user->planSubscription('main')->reduceFeatureUsage($featureSlug); + + expect($this->user->planSubscription('main')->getFeatureUsage($featureSlug)) + ->toBe(1) + ->and($this->user->planSubscription('main')->getFeatureRemainings($featureSlug)) + ->toBe(4); +}); diff --git a/tests/database/factories/PlanFactory.php b/tests/database/factories/PlanFactory.php index ea267f0..035cea1 100644 --- a/tests/database/factories/PlanFactory.php +++ b/tests/database/factories/PlanFactory.php @@ -8,7 +8,7 @@ use Laravelcm\Subscriptions\Interval; use Tests\Models\Plan; -final class PlanFactory extends Factory +class PlanFactory extends Factory { protected $model = Plan::class; diff --git a/tests/database/factories/UserFactory.php b/tests/database/factories/UserFactory.php index f384625..fb781d5 100644 --- a/tests/database/factories/UserFactory.php +++ b/tests/database/factories/UserFactory.php @@ -6,7 +6,7 @@ use Tests\Models\User; -final class UserFactory extends \Orchestra\Testbench\Factories\UserFactory +class UserFactory extends \Orchestra\Testbench\Factories\UserFactory { public function modelName(): string { diff --git a/tests/database/migrations/create_users_table.php b/tests/database/migrations/create_users_table.php index baf98cd..dc95226 100644 --- a/tests/database/migrations/create_users_table.php +++ b/tests/database/migrations/create_users_table.php @@ -6,7 +6,8 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class () extends Migration { +return new class extends Migration +{ public function up(): void { Schema::create('users', function (Blueprint $table): void { diff --git a/tests/src/TestCase.php b/tests/src/TestCase.php index b8d7999..3701df6 100644 --- a/tests/src/TestCase.php +++ b/tests/src/TestCase.php @@ -23,8 +23,8 @@ protected function getPackageProviders($app): array protected function defineDatabaseMigrations(): void { $this->loadMigrationsFrom([ - __DIR__.'/../database/migrations', - __DIR__.'/../../database/migrations', + __DIR__ . '/../database/migrations', + __DIR__ . '/../../database/migrations', ]); } From 825e38c9f5aa8726923fca945869a0410aaef39e Mon Sep 17 00:00:00 2001 From: Arthur Monney Date: Fri, 1 Nov 2024 21:37:23 +0100 Subject: [PATCH 2/2] fix: phpstan return type --- src/Models/Subscription.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Models/Subscription.php b/src/Models/Subscription.php index a35f7be..71dbe74 100755 --- a/src/Models/Subscription.php +++ b/src/Models/Subscription.php @@ -102,7 +102,7 @@ class Subscription extends Model 'description', ]; - public function getTable(): string + public function getTable() { return config('laravel-subscriptions.tables.subscriptions'); }