feat: refactor cache configuration to use class constants for improved readability and maintainability; update Cutting and Order tests to utilize service classes directly
This commit is contained in:
parent
1c4f82529c
commit
5b9c294bf2
216
config/cache.php
216
config/cache.php
@ -1,6 +1,78 @@
|
||||
<?php
|
||||
|
||||
use App\Enums\ActivityEventLabel;
|
||||
use App\Enums\CashTransactionType;
|
||||
use App\Enums\CuttingStatus;
|
||||
use App\Enums\EmployeeAdvanceStatus;
|
||||
use App\Enums\EmploymentStatus;
|
||||
use App\Enums\Gender;
|
||||
use App\Enums\LeaveRequestStatus;
|
||||
use App\Enums\MarketplaceFeeScope;
|
||||
use App\Enums\MarketplaceFeeValueType;
|
||||
use App\Enums\OrderChannel;
|
||||
use App\Enums\OrderStatus;
|
||||
use App\Enums\OwnerVerificationAction;
|
||||
use App\Enums\OwnerVerificationStatus;
|
||||
use App\Enums\PaymentType;
|
||||
use App\Enums\PayrollAdjustmentType;
|
||||
use App\Enums\PayrollPeriodStatus;
|
||||
use App\Enums\PayrollStatus;
|
||||
use App\Enums\Permission;
|
||||
use App\Enums\PriceType;
|
||||
use App\Enums\ProductStockQuality;
|
||||
use App\Enums\RawMaterialUnit;
|
||||
use App\Enums\Role;
|
||||
use App\Enums\StokOpnameStatus;
|
||||
use App\Models\Attendance;
|
||||
use App\Models\CashAccount;
|
||||
use App\Models\CashTransaction;
|
||||
use App\Models\Category;
|
||||
use App\Models\Customer;
|
||||
use App\Models\Cutting;
|
||||
use App\Models\CuttingMaterial;
|
||||
use App\Models\CuttingMaterialCombination;
|
||||
use App\Models\CuttingResult;
|
||||
use App\Models\CuttingResultPrice;
|
||||
use App\Models\Employee;
|
||||
use App\Models\EmployeeAdvance;
|
||||
use App\Models\EmployeeAdvancePayment;
|
||||
use App\Models\Expense;
|
||||
use App\Models\HomepageConfiguration;
|
||||
use App\Models\LeaveRequest;
|
||||
use App\Models\Notification;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderItem;
|
||||
use App\Models\OwnerVerificationRequest;
|
||||
use App\Models\Payroll;
|
||||
use App\Models\PayrollAdjustment;
|
||||
use App\Models\PayrollPeriod;
|
||||
use App\Models\Product;
|
||||
use App\Models\ProductPrice;
|
||||
use App\Models\ProductVariant;
|
||||
use App\Models\Purchase;
|
||||
use App\Models\PurchaseItem;
|
||||
use App\Models\PushSubscription;
|
||||
use App\Models\RawMaterial;
|
||||
use App\Models\RawMaterialPrice;
|
||||
use App\Models\Rejection;
|
||||
use App\Models\RetailStockHistory;
|
||||
use App\Models\StokOpname;
|
||||
use App\Models\StokOpnameItem;
|
||||
use App\Models\Supplier;
|
||||
use App\Models\SystemConfiguration;
|
||||
use App\Models\User;
|
||||
use App\Models\UserProfile;
|
||||
use App\Settings\HomepageSettings;
|
||||
use App\Settings\HrSettings;
|
||||
use App\Settings\MarketplaceSettings;
|
||||
use App\Settings\SocialMediaSettings;
|
||||
use App\Settings\SystemSettings;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphPivot;
|
||||
use Illuminate\Database\Eloquent\Relations\Pivot;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Str;
|
||||
use Spatie\Activitylog\Models\Activity;
|
||||
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
||||
|
||||
return [
|
||||
|
||||
@ -133,92 +205,92 @@
|
||||
|
||||
'serializable_classes' => [
|
||||
// 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,
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
@ -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() ?? [];
|
||||
|
||||
@ -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() ?? [];
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user