feat: implement delete functionality for accommodations, entries, foods, and merchandise; enhance related services and tests
This commit is contained in:
@@ -125,6 +125,25 @@ class AccommodationControllerTest extends TestCase
|
||||
$this->assertDatabaseCount('variantes', 2);
|
||||
}
|
||||
|
||||
public function test_it_deletes_an_accommodation_and_its_empty_product(): void
|
||||
{
|
||||
[$tenant] = $this->configuredTenant();
|
||||
Sanctum::actingAs($this->createAdminAppUser($tenant));
|
||||
|
||||
$accommodationId = $this->postJson('/api/v1/adminapp/tenant/accommodations', [
|
||||
'variants' => [
|
||||
$this->variantPayload('Carpa', null, 100, 35000),
|
||||
],
|
||||
])->assertOk()->json('data.variants.0.id');
|
||||
|
||||
$this->deleteJson("/api/v1/adminapp/tenant/accommodations/{$accommodationId}")
|
||||
->assertNoContent();
|
||||
|
||||
$this->assertDatabaseCount('catalog_items', 0);
|
||||
$this->assertDatabaseCount('variantes', 0);
|
||||
$this->assertDatabaseCount('inventories', 0);
|
||||
}
|
||||
|
||||
public function test_it_rejects_duplicate_normalized_titles(): void
|
||||
{
|
||||
[$tenant] = $this->configuredTenant();
|
||||
|
||||
@@ -168,6 +168,35 @@ class EntryControllerTest extends TestCase
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_it_deletes_an_entry_and_its_inventory(): void
|
||||
{
|
||||
$tenant = $this->createFiestaTenant();
|
||||
$this->createEventDateAttribute($tenant);
|
||||
$eventDate = $tenant->eventDates()->create([
|
||||
'date' => '2026-10-09',
|
||||
'time_start' => '00:00',
|
||||
'time_end' => '23:59',
|
||||
]);
|
||||
Sanctum::actingAs($this->createAdminAppUser($tenant));
|
||||
|
||||
$entryId = $this->postJson('/api/v1/adminapp/tenant/entries', [
|
||||
'entries' => [[
|
||||
'title' => 'Entrada diaria',
|
||||
'description' => null,
|
||||
'event_date_ids' => [$eventDate->id],
|
||||
'stock' => 100,
|
||||
'price' => 5000,
|
||||
]],
|
||||
])->assertOk()->json('data.0.id');
|
||||
|
||||
$this->deleteJson("/api/v1/adminapp/tenant/entries/{$entryId}")
|
||||
->assertNoContent();
|
||||
|
||||
$this->assertDatabaseCount('catalog_items', 0);
|
||||
$this->assertDatabaseCount('variantes', 0);
|
||||
$this->assertDatabaseCount('inventories', 0);
|
||||
}
|
||||
|
||||
public function test_dates_must_belong_to_the_authenticated_tenant(): void
|
||||
{
|
||||
$tenant = $this->createFiestaTenant();
|
||||
|
||||
@@ -123,6 +123,39 @@ class FoodControllerTest extends TestCase
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_it_deletes_food_records_and_removes_the_empty_product(): void
|
||||
{
|
||||
[$tenant, $firstDate, $secondDate] = $this->configuredTenant();
|
||||
Sanctum::actingAs($this->createAdminAppUser($tenant));
|
||||
|
||||
$created = $this->postJson('/api/v1/adminapp/tenant/foods', [
|
||||
'variants' => [
|
||||
$this->variantPayload($firstDate->id, 'Almuerzo', 'Comedor', 100, 10000),
|
||||
$this->variantPayload($secondDate->id, 'Cena', 'Vianda', 50, 8000),
|
||||
],
|
||||
])->assertOk();
|
||||
$firstId = $created->json('data.variants.0.id');
|
||||
$secondId = $created->json('data.variants.1.id');
|
||||
|
||||
$this->deleteJson("/api/v1/adminapp/tenant/foods/{$secondId}")
|
||||
->assertNoContent();
|
||||
|
||||
$this->assertDatabaseHas('catalog_items', [
|
||||
'tenant_code' => $tenant->codigo,
|
||||
'slug' => 'comida',
|
||||
'precio' => 10000,
|
||||
]);
|
||||
$this->assertDatabaseCount('variantes', 1);
|
||||
$this->assertDatabaseCount('inventories', 1);
|
||||
|
||||
$this->deleteJson("/api/v1/adminapp/tenant/foods/{$firstId}")
|
||||
->assertNoContent();
|
||||
|
||||
$this->assertDatabaseCount('catalog_items', 0);
|
||||
$this->assertDatabaseCount('variantes', 0);
|
||||
$this->assertDatabaseCount('inventories', 0);
|
||||
}
|
||||
|
||||
public function test_it_rejects_duplicate_combinations(): void
|
||||
{
|
||||
[$tenant, $firstDate] = $this->configuredTenant();
|
||||
|
||||
@@ -139,6 +139,40 @@ class MerchandiseControllerTest extends TestCase
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_it_deletes_merchandise_records_and_removes_the_empty_item(): void
|
||||
{
|
||||
[$tenant] = $this->configuredTenant();
|
||||
Sanctum::actingAs($this->createAdminAppUser($tenant));
|
||||
|
||||
$created = $this->postJson('/api/v1/adminapp/tenant/merchandise', [
|
||||
'items' => [
|
||||
$this->itemPayload('Camiseta', 3, [
|
||||
$this->variantPayload('Verde', 'S', 100, 10000),
|
||||
$this->variantPayload('Blanco', 'M', 50, 15000),
|
||||
]),
|
||||
],
|
||||
])->assertOk();
|
||||
$itemId = $created->json('data.0.id');
|
||||
$firstId = $created->json('data.0.variants.0.id');
|
||||
$secondId = $created->json('data.0.variants.1.id');
|
||||
|
||||
$this->deleteJson("/api/v1/adminapp/tenant/merchandise/{$firstId}")
|
||||
->assertNoContent();
|
||||
|
||||
$this->assertDatabaseHas('catalog_items', [
|
||||
'id' => $itemId,
|
||||
'precio' => 15000,
|
||||
]);
|
||||
$this->assertDatabaseCount('variantes', 1);
|
||||
|
||||
$this->deleteJson("/api/v1/adminapp/tenant/merchandise/{$secondId}")
|
||||
->assertNoContent();
|
||||
|
||||
$this->assertDatabaseMissing('catalog_items', ['id' => $itemId]);
|
||||
$this->assertDatabaseCount('variantes', 0);
|
||||
$this->assertDatabaseCount('inventories', 0);
|
||||
}
|
||||
|
||||
public function test_it_rejects_duplicate_color_and_size_combinations(): void
|
||||
{
|
||||
[$tenant] = $this->configuredTenant();
|
||||
|
||||
Reference in New Issue
Block a user