create(['name' => 'Admin', 'email' => 'stats-admin-sub@example.com', 'roles' => ['admin']]); $it = Category::query()->create(['name' => 'IT-Pomoc']); $vpn = $it->subcategories()->create(['name' => 'VPN']); $printers = $it->subcategories()->create(['name' => 'Drukarki']); $orders = Category::query()->create(['name' => 'Zamówienia']); $hardware = $orders->subcategories()->create(['name' => 'Sprzęt']); makeTicket(['number' => '4001', 'subcategory_id' => $vpn->id]); makeTicket(['number' => '4002', 'subcategory_id' => $vpn->id]); makeTicket(['number' => '4003', 'subcategory_id' => $printers->id]); makeTicket(['number' => '4004', 'subcategory_id' => $hardware->id]); makeTicket(['number' => '4005', 'subcategory_id' => null]); $rows = Livewire::actingAs($admin)->test(Stats::class)->instance()->bySubcategory; expect($rows->firstWhere('label', 'IT-Pomoc / VPN'))->toBe(['label' => 'IT-Pomoc / VPN', 'count' => 2]) ->and($rows->firstWhere('label', 'IT-Pomoc / Drukarki'))->toBe(['label' => 'IT-Pomoc / Drukarki', 'count' => 1]) ->and($rows->firstWhere('label', 'Zamówienia / Sprzęt'))->toBe(['label' => 'Zamówienia / Sprzęt', 'count' => 1]) ->and($rows->count())->toBe(3); }); test('bySubcategory gives tickets routed to a bare category (no subcategory) their own "(bez podkategorii)" row', function () { seedStatusesAndPriorities(); $admin = User::query()->create(['name' => 'Admin', 'email' => 'stats-admin-sub-2@example.com', 'roles' => ['admin']]); $it = Category::query()->create(['name' => 'IT-Pomoc']); $vpn = $it->subcategories()->create(['name' => 'VPN']); $delegacje = Category::query()->create(['name' => 'Delegacje']); makeTicket(['number' => '4101', 'subcategory_id' => $vpn->id]); makeTicket(['number' => '4102', 'category_id' => $delegacje->id]); makeTicket(['number' => '4103', 'category_id' => $delegacje->id]); $rows = Livewire::actingAs($admin)->test(Stats::class)->instance()->bySubcategory; expect($rows->firstWhere('label', 'IT-Pomoc / VPN'))->toBe(['label' => 'IT-Pomoc / VPN', 'count' => 1]) ->and($rows->firstWhere('label', 'Delegacje (bez podkategorii)'))->toBe(['label' => 'Delegacje (bez podkategorii)', 'count' => 2]) ->and($rows->count())->toBe(2); });