|
@@ -70,6 +70,36 @@ class SparePartOrderControllerTest extends TestCase
|
|
|
$response->assertViewIs('spare_parts.index');
|
|
$response->assertViewIs('spare_parts.index');
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public function test_index_passes_only_ordered_order_numbers_to_view(): void
|
|
|
|
|
+ {
|
|
|
|
|
+ SparePartOrder::factory()->ordered()->create([
|
|
|
|
|
+ 'order_number' => 'SP-BULK-001',
|
|
|
|
|
+ ]);
|
|
|
|
|
+ SparePartOrder::factory()->ordered()->create([
|
|
|
|
|
+ 'order_number' => 'SP-BULK-001',
|
|
|
|
|
+ ]);
|
|
|
|
|
+ SparePartOrder::factory()->ordered()->create([
|
|
|
|
|
+ 'order_number' => 'SP-BULK-002',
|
|
|
|
|
+ ]);
|
|
|
|
|
+ SparePartOrder::factory()->inStock()->create([
|
|
|
|
|
+ 'order_number' => 'SP-IN-STOCK-001',
|
|
|
|
|
+ ]);
|
|
|
|
|
+ SparePartOrder::factory()->ordered()->create([
|
|
|
|
|
+ 'order_number' => '',
|
|
|
|
|
+ ]);
|
|
|
|
|
+ SparePartOrder::factory()->ordered()->create([
|
|
|
|
|
+ 'order_number' => null,
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ $response = $this->actingAs($this->adminUser)
|
|
|
|
|
+ ->get(route('spare_part_orders.index'));
|
|
|
|
|
+
|
|
|
|
|
+ $response->assertStatus(200);
|
|
|
|
|
+ $response->assertViewHas('order_numbers', function ($orderNumbers) {
|
|
|
|
|
+ return $orderNumbers->values()->all() === ['SP-BULK-001', 'SP-BULK-002'];
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// ==================== Show ====================
|
|
// ==================== Show ====================
|
|
|
|
|
|
|
|
public function test_admin_can_view_spare_part_order(): void
|
|
public function test_admin_can_view_spare_part_order(): void
|
|
@@ -319,6 +349,62 @@ class SparePartOrderControllerTest extends TestCase
|
|
|
$response->assertRedirect(route('login'));
|
|
$response->assertRedirect(route('login'));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public function test_admin_can_set_whole_order_in_stock_by_order_number(): void
|
|
|
|
|
+ {
|
|
|
|
|
+ $first = SparePartOrder::factory()->ordered()->create([
|
|
|
|
|
+ 'order_number' => 'SP-BULK-100',
|
|
|
|
|
+ ]);
|
|
|
|
|
+ $second = SparePartOrder::factory()->ordered()->create([
|
|
|
|
|
+ 'order_number' => 'SP-BULK-100',
|
|
|
|
|
+ ]);
|
|
|
|
|
+ $sameNumberInStock = SparePartOrder::factory()->inStock()->create([
|
|
|
|
|
+ 'order_number' => 'SP-BULK-100',
|
|
|
|
|
+ ]);
|
|
|
|
|
+ $other = SparePartOrder::factory()->ordered()->create([
|
|
|
|
|
+ 'order_number' => 'SP-BULK-200',
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ $response = $this->actingAs($this->adminUser)
|
|
|
|
|
+ ->post(route('spare_part_orders.set_order_in_stock'), [
|
|
|
|
|
+ 'bulk_order_number' => 'SP-BULK-100',
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ $response->assertRedirect(route('spare_part_orders.index'));
|
|
|
|
|
+ $response->assertSessionHas('success');
|
|
|
|
|
+ $this->assertDatabaseHas('spare_part_orders', [
|
|
|
|
|
+ 'id' => $first->id,
|
|
|
|
|
+ 'status' => SparePartOrder::STATUS_IN_STOCK,
|
|
|
|
|
+ ]);
|
|
|
|
|
+ $this->assertDatabaseHas('spare_part_orders', [
|
|
|
|
|
+ 'id' => $second->id,
|
|
|
|
|
+ 'status' => SparePartOrder::STATUS_IN_STOCK,
|
|
|
|
|
+ ]);
|
|
|
|
|
+ $this->assertDatabaseHas('spare_part_orders', [
|
|
|
|
|
+ 'id' => $sameNumberInStock->id,
|
|
|
|
|
+ 'status' => SparePartOrder::STATUS_IN_STOCK,
|
|
|
|
|
+ ]);
|
|
|
|
|
+ $this->assertDatabaseHas('spare_part_orders', [
|
|
|
|
|
+ 'id' => $other->id,
|
|
|
|
|
+ 'status' => SparePartOrder::STATUS_ORDERED,
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function test_bulk_set_order_in_stock_validates_selected_number_has_ordered_rows(): void
|
|
|
|
|
+ {
|
|
|
|
|
+ SparePartOrder::factory()->inStock()->create([
|
|
|
|
|
+ 'order_number' => 'SP-NOT-ORDERED',
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ $response = $this->from(route('spare_part_orders.index'))
|
|
|
|
|
+ ->actingAs($this->adminUser)
|
|
|
|
|
+ ->post(route('spare_part_orders.set_order_in_stock'), [
|
|
|
|
|
+ 'bulk_order_number' => 'SP-NOT-ORDERED',
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ $response->assertRedirect(route('spare_part_orders.index'));
|
|
|
|
|
+ $response->assertSessionHasErrors('bulk_order_number');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// ==================== Ship ====================
|
|
// ==================== Ship ====================
|
|
|
|
|
|
|
|
public function test_admin_can_ship_spare_part_order(): void
|
|
public function test_admin_can_ship_spare_part_order(): void
|