|
|
@@ -0,0 +1,60 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Tests\Unit;
|
|
|
+
|
|
|
+use App\Http\Requests\ProductRequest;
|
|
|
+use App\Models\Product;
|
|
|
+use App\Services\ProductService;
|
|
|
+use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
+use Illuminate\Support\Facades\Validator;
|
|
|
+use Tests\TestCase;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Regressão: produtos não apareciam pra franqueada porque visible_franchisee
|
|
|
+ * nunca estava nas rules() do ProductRequest — o toggle "Visível para
|
|
|
+ * Franqueado" do cadastro de produto era descartado antes de chegar no
|
|
|
+ * banco, então todo produto ficava com visible_franchisee=false (default da
|
|
|
+ * coluna), e o filtro `visible_franchisee=true` usado na tela de Proposta
|
|
|
+ * Comercial da franqueada nunca retornava nada.
|
|
|
+ */
|
|
|
+class ProductVisibleFranchiseeTest extends TestCase
|
|
|
+{
|
|
|
+ use RefreshDatabase;
|
|
|
+
|
|
|
+ public function test_request_accepts_visible_franchisee(): void
|
|
|
+ {
|
|
|
+ $request = ProductRequest::create('/product', 'POST', [
|
|
|
+ 'name' => 'Produto Teste',
|
|
|
+ 'price_sale' => 10,
|
|
|
+ 'quantity' => 1,
|
|
|
+ 'visible_franchisee' => true,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $validator = Validator::make($request->all(), $request->rules());
|
|
|
+
|
|
|
+ $this->assertFalse($validator->fails());
|
|
|
+ }
|
|
|
+
|
|
|
+ public function test_service_persists_visible_franchisee_and_select_filter_finds_it(): void
|
|
|
+ {
|
|
|
+ $service = new ProductService();
|
|
|
+
|
|
|
+ $service->create([
|
|
|
+ 'name' => 'Visível pro Franqueado',
|
|
|
+ 'price_sale' => 10,
|
|
|
+ 'quantity' => 1,
|
|
|
+ 'visible_franchisee' => true,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $service->create([
|
|
|
+ 'name' => 'Só Franqueadora',
|
|
|
+ 'price_sale' => 10,
|
|
|
+ 'quantity' => 1,
|
|
|
+ 'visible_franchisee' => false,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $visibleForFranchisee = Product::query()->where('visible_franchisee', true)->pluck('name');
|
|
|
+
|
|
|
+ $this->assertSame(['Visível pro Franqueado'], $visibleForFranchisee->all());
|
|
|
+ }
|
|
|
+}
|