|
|
@@ -17,6 +17,7 @@ class MafOrderControllerTest extends TestCase
|
|
|
|
|
|
private User $adminUser;
|
|
|
private User $managerUser;
|
|
|
+ private User $assistantHeadUser;
|
|
|
|
|
|
protected function setUp(): void
|
|
|
{
|
|
|
@@ -24,6 +25,7 @@ class MafOrderControllerTest extends TestCase
|
|
|
|
|
|
$this->adminUser = User::factory()->create(['role' => Role::ADMIN]);
|
|
|
$this->managerUser = User::factory()->create(['role' => Role::MANAGER]);
|
|
|
+ $this->assistantHeadUser = User::factory()->create(['role' => Role::ASSISTANT_HEAD]);
|
|
|
}
|
|
|
|
|
|
// ==================== Authentication ====================
|
|
|
@@ -52,6 +54,15 @@ class MafOrderControllerTest extends TestCase
|
|
|
$response->assertStatus(403);
|
|
|
}
|
|
|
|
|
|
+ public function test_assistant_head_can_access_maf_orders_index(): void
|
|
|
+ {
|
|
|
+ $response = $this->actingAs($this->assistantHeadUser)
|
|
|
+ ->get(route('maf_order.index'));
|
|
|
+
|
|
|
+ $response->assertStatus(200);
|
|
|
+ $response->assertViewIs('maf_orders.index');
|
|
|
+ }
|
|
|
+
|
|
|
// ==================== Index ====================
|
|
|
|
|
|
public function test_maf_orders_index_displays_orders(): void
|
|
|
@@ -231,4 +242,57 @@ class MafOrderControllerTest extends TestCase
|
|
|
|
|
|
$response->assertRedirect(route('login'));
|
|
|
}
|
|
|
+
|
|
|
+ public function test_set_order_in_stock_updates_all_rows_by_order_number(): void
|
|
|
+ {
|
|
|
+ $first = MafOrder::factory()->create([
|
|
|
+ 'order_number' => 'MO-BULK-001',
|
|
|
+ 'quantity' => 3,
|
|
|
+ 'in_stock' => 0,
|
|
|
+ 'status' => 'заказан',
|
|
|
+ ]);
|
|
|
+ $second = MafOrder::factory()->create([
|
|
|
+ 'order_number' => 'MO-BULK-001',
|
|
|
+ 'quantity' => 7,
|
|
|
+ 'in_stock' => 1,
|
|
|
+ 'status' => 'заказан',
|
|
|
+ ]);
|
|
|
+ $other = MafOrder::factory()->create([
|
|
|
+ 'order_number' => 'MO-BULK-002',
|
|
|
+ 'quantity' => 9,
|
|
|
+ 'in_stock' => 2,
|
|
|
+ 'status' => 'заказан',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $response = $this->actingAs($this->adminUser)
|
|
|
+ ->post(route('maf_order.set_order_in_stock'), [
|
|
|
+ 'bulk_order_number' => 'MO-BULK-001',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $response->assertRedirect(route('maf_order.index'));
|
|
|
+ $this->assertDatabaseHas('maf_orders', [
|
|
|
+ 'id' => $first->id,
|
|
|
+ 'in_stock' => 3,
|
|
|
+ 'status' => 'на складе',
|
|
|
+ ]);
|
|
|
+ $this->assertDatabaseHas('maf_orders', [
|
|
|
+ 'id' => $second->id,
|
|
|
+ 'in_stock' => 7,
|
|
|
+ 'status' => 'на складе',
|
|
|
+ ]);
|
|
|
+ $this->assertDatabaseHas('maf_orders', [
|
|
|
+ 'id' => $other->id,
|
|
|
+ 'in_stock' => 2,
|
|
|
+ 'status' => 'заказан',
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function test_guest_cannot_set_order_in_stock(): void
|
|
|
+ {
|
|
|
+ $response = $this->post(route('maf_order.set_order_in_stock'), [
|
|
|
+ 'bulk_order_number' => 'MO-BULK-001',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $response->assertRedirect(route('login'));
|
|
|
+ }
|
|
|
}
|