From 5b9c294bf2bed1b70f6d37184567381549b143e8 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Wed, 8 Jul 2026 15:35:26 +0700 Subject: [PATCH] feat: refactor cache configuration to use class constants for improved readability and maintainability; update Cutting and Order tests to utilize service classes directly --- config/cache.php | 216 ++++++++++++++------- tests/Feature/Admin/Manage/CuttingTest.php | 13 +- tests/Feature/Admin/Manage/OrderTest.php | 23 +-- 3 files changed, 163 insertions(+), 89 deletions(-) diff --git a/config/cache.php b/config/cache.php index c30aa4d..4ee3a86 100644 --- a/config/cache.php +++ b/config/cache.php @@ -1,6 +1,78 @@ [ // Core PHP and Laravel Classes - Illuminate\Support\Collection::class, + Collection::class, Illuminate\Database\Eloquent\Collection::class, Carbon\Carbon::class, Illuminate\Support\Carbon::class, stdClass::class, - Illuminate\Database\Eloquent\Relations\Pivot::class, - Illuminate\Database\Eloquent\Relations\MorphPivot::class, + Pivot::class, + MorphPivot::class, // Spatie Packages Classes Spatie\Permission\Models\Role::class, Spatie\Permission\Models\Permission::class, - Spatie\Activitylog\Models\Activity::class, - Spatie\MediaLibrary\MediaCollections\Models\Media::class, + Activity::class, + Media::class, // Application Settings - App\Settings\HomepageSettings::class, - App\Settings\HrSettings::class, - App\Settings\MarketplaceSettings::class, - App\Settings\SocialMediaSettings::class, - App\Settings\SystemSettings::class, + HomepageSettings::class, + HrSettings::class, + MarketplaceSettings::class, + SocialMediaSettings::class, + SystemSettings::class, // Application Models - App\Models\Attendance::class, - App\Models\CashAccount::class, - App\Models\CashTransaction::class, - App\Models\Category::class, - App\Models\Customer::class, - App\Models\Cutting::class, - App\Models\CuttingMaterial::class, - App\Models\CuttingMaterialCombination::class, - App\Models\CuttingResult::class, - App\Models\CuttingResultPrice::class, - App\Models\Employee::class, - App\Models\EmployeeAdvance::class, - App\Models\EmployeeAdvancePayment::class, - App\Models\Expense::class, - App\Models\HomepageConfiguration::class, - App\Models\LeaveRequest::class, - App\Models\Notification::class, - App\Models\Order::class, - App\Models\OrderItem::class, - App\Models\OwnerVerificationRequest::class, - App\Models\Payroll::class, - App\Models\PayrollAdjustment::class, - App\Models\PayrollPeriod::class, - App\Models\Product::class, - App\Models\ProductPrice::class, - App\Models\ProductVariant::class, - App\Models\Purchase::class, - App\Models\PurchaseItem::class, - App\Models\PushSubscription::class, - App\Models\RawMaterial::class, - App\Models\RawMaterialPrice::class, - App\Models\Rejection::class, - App\Models\RetailStockHistory::class, - App\Models\StokOpname::class, - App\Models\StokOpnameItem::class, - App\Models\Supplier::class, - App\Models\SystemConfiguration::class, - App\Models\User::class, - App\Models\UserProfile::class, + Attendance::class, + CashAccount::class, + CashTransaction::class, + Category::class, + Customer::class, + Cutting::class, + CuttingMaterial::class, + CuttingMaterialCombination::class, + CuttingResult::class, + CuttingResultPrice::class, + Employee::class, + EmployeeAdvance::class, + EmployeeAdvancePayment::class, + Expense::class, + HomepageConfiguration::class, + LeaveRequest::class, + Notification::class, + Order::class, + OrderItem::class, + OwnerVerificationRequest::class, + Payroll::class, + PayrollAdjustment::class, + PayrollPeriod::class, + Product::class, + ProductPrice::class, + ProductVariant::class, + Purchase::class, + PurchaseItem::class, + PushSubscription::class, + RawMaterial::class, + RawMaterialPrice::class, + Rejection::class, + RetailStockHistory::class, + StokOpname::class, + StokOpnameItem::class, + Supplier::class, + SystemConfiguration::class, + User::class, + UserProfile::class, // Application Enums - App\Enums\ActivityEventLabel::class, - App\Enums\CashTransactionType::class, - App\Enums\CuttingStatus::class, - App\Enums\EmployeeAdvanceStatus::class, - App\Enums\EmploymentStatus::class, - App\Enums\Gender::class, - App\Enums\LeaveRequestStatus::class, - App\Enums\MarketplaceFeeScope::class, - App\Enums\MarketplaceFeeValueType::class, - App\Enums\OrderChannel::class, - App\Enums\OrderStatus::class, - App\Enums\OwnerVerificationAction::class, - App\Enums\OwnerVerificationStatus::class, - App\Enums\PaymentType::class, - App\Enums\PayrollAdjustmentType::class, - App\Enums\PayrollPeriodStatus::class, - App\Enums\PayrollStatus::class, - App\Enums\Permission::class, - App\Enums\PriceType::class, - App\Enums\ProductStockQuality::class, - App\Enums\RawMaterialUnit::class, - App\Enums\Role::class, - App\Enums\StokOpnameStatus::class, + ActivityEventLabel::class, + CashTransactionType::class, + CuttingStatus::class, + EmployeeAdvanceStatus::class, + EmploymentStatus::class, + Gender::class, + LeaveRequestStatus::class, + MarketplaceFeeScope::class, + MarketplaceFeeValueType::class, + OrderChannel::class, + OrderStatus::class, + OwnerVerificationAction::class, + OwnerVerificationStatus::class, + PaymentType::class, + PayrollAdjustmentType::class, + PayrollPeriodStatus::class, + PayrollStatus::class, + Permission::class, + PriceType::class, + ProductStockQuality::class, + RawMaterialUnit::class, + Role::class, + StokOpnameStatus::class, ], ]; diff --git a/tests/Feature/Admin/Manage/CuttingTest.php b/tests/Feature/Admin/Manage/CuttingTest.php index 24150df..03482f0 100644 --- a/tests/Feature/Admin/Manage/CuttingTest.php +++ b/tests/Feature/Admin/Manage/CuttingTest.php @@ -12,6 +12,7 @@ use App\Models\RawMaterial; use App\Models\RawMaterialPrice; use App\Models\User; +use App\Services\Manage\CuttingService; use Database\Seeders\RolePermissionSeeder; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Storage; @@ -1130,15 +1131,15 @@ function setupDraftItems(User $user): array $user = createCuttingUserWithPermission(PermissionEnum::CUTTINGS_VIEW, PermissionEnum::CUTTINGS_CREATE); $rawMaterial = RawMaterial::factory()->create(['is_active' => true]); - $priceWithStock = RawMaterialPrice::factory()->create(['raw_material_id' => $rawMaterial->id, 'stock' => 10]); + $priceWithStock = RawMaterialPrice::factory()->create(['raw_material_id' => $rawMaterial->id, 'stock' => 10]); $priceWithoutStock = RawMaterialPrice::factory()->create(['raw_material_id' => $rawMaterial->id, 'stock' => 0]); $this->actingAs($user) ->get(route('admin.manage.cuttings.create')) ->assertOk(); - $service = app(\App\Services\Manage\CuttingService::class); - $catalog = $service->rawMaterialCatalog(user: $user); + $service = app(CuttingService::class); + $catalog = $service->rawMaterialCatalog(user: $user); $material = $catalog->firstWhere('id', $rawMaterial->id); $priceIds = $material->prices->pluck('id')->all(); @@ -1155,12 +1156,12 @@ function setupDraftItems(User $user): array $cutting = Cutting::factory()->create(['created_by_id' => $user->id]); CuttingMaterial::factory()->create([ - 'cutting_id' => $cutting->id, + 'cutting_id' => $cutting->id, 'raw_material_price_id' => $priceZeroStock->id, ]); - $service = app(\App\Services\Manage\CuttingService::class); - $catalog = $service->rawMaterialCatalog($cutting); + $service = app(CuttingService::class); + $catalog = $service->rawMaterialCatalog($cutting); $material = $catalog->firstWhere('id', $rawMaterial->id); $priceIds = $material?->prices->pluck('id')->all() ?? []; diff --git a/tests/Feature/Admin/Manage/OrderTest.php b/tests/Feature/Admin/Manage/OrderTest.php index 9dbd684..99a0548 100644 --- a/tests/Feature/Admin/Manage/OrderTest.php +++ b/tests/Feature/Admin/Manage/OrderTest.php @@ -12,6 +12,7 @@ use App\Models\ProductPrice; use App\Models\ProductVariant; use App\Models\User; +use App\Services\Manage\OrderService; use Database\Seeders\CashAccountSeeder; use Database\Seeders\RolePermissionSeeder; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -622,14 +623,14 @@ function setupOrderDraftItems(User $user): ProductVariant $product = Product::factory()->create(['is_active' => true]); - $variantWithStock = ProductVariant::factory()->create(['product_id' => $product->id, 'stock' => 10, 'reject_stock' => 0, 'retail_stock' => 0]); - $variantAllZero = ProductVariant::factory()->create(['product_id' => $product->id, 'stock' => 0, 'reject_stock' => 0, 'retail_stock' => 0]); - $variantRejectOnly = ProductVariant::factory()->create(['product_id' => $product->id, 'stock' => 0, 'reject_stock' => 5, 'retail_stock' => 0]); - $variantRetailOnly = ProductVariant::factory()->create(['product_id' => $product->id, 'stock' => 0, 'reject_stock' => 0, 'retail_stock' => 3]); + $variantWithStock = ProductVariant::factory()->create(['product_id' => $product->id, 'stock' => 10, 'reject_stock' => 0, 'retail_stock' => 0]); + $variantAllZero = ProductVariant::factory()->create(['product_id' => $product->id, 'stock' => 0, 'reject_stock' => 0, 'retail_stock' => 0]); + $variantRejectOnly = ProductVariant::factory()->create(['product_id' => $product->id, 'stock' => 0, 'reject_stock' => 5, 'retail_stock' => 0]); + $variantRetailOnly = ProductVariant::factory()->create(['product_id' => $product->id, 'stock' => 0, 'reject_stock' => 0, 'retail_stock' => 3]); - $service = app(\App\Services\Manage\OrderService::class); + $service = app(OrderService::class); $catalog = $service->catalogItems(user: $user); - $found = $catalog->firstWhere('id', $product->id); + $found = $catalog->firstWhere('id', $product->id); $variantIds = $found?->variants->pluck('id')->all() ?? []; @@ -644,21 +645,21 @@ function setupOrderDraftItems(User $user): ProductVariant $product = Product::factory()->create(['is_active' => true]); $variantAllZero = ProductVariant::factory()->create([ - 'product_id' => $product->id, - 'stock' => 0, + 'product_id' => $product->id, + 'stock' => 0, 'reject_stock' => 0, 'retail_stock' => 0, ]); $order = Order::factory()->create(['created_by_id' => $user->id]); OrderItem::factory()->create([ - 'order_id' => $order->id, + 'order_id' => $order->id, 'product_variant_id' => $variantAllZero->id, ]); - $service = app(\App\Services\Manage\OrderService::class); + $service = app(OrderService::class); $catalog = $service->catalogItems($order); - $found = $catalog->firstWhere('id', $product->id); + $found = $catalog->firstWhere('id', $product->id); $variantIds = $found?->variants->pluck('id')->all() ?? [];