toBeInstanceOf(DiscoveryOptions::class); expect($options->scanType)->toBeInstanceOf(ScanType::class); expect($options->paths)->toBeArray(); expect($options->useCache)->toBeBool(); }); it('can be created with custom values', function () { $options = new DiscoveryOptions( scanType: ScanType::FULL, paths: ['/test/path1', '/test/path2'], useCache: true ); expect($options->scanType)->toBe(ScanType::FULL); expect($options->paths)->toBe(['/test/path1', '/test/path2']); expect($options->useCache)->toBeTrue(); }); it('can use default factory method', function () { $options = DiscoveryOptions::default(); expect($options)->toBeInstanceOf(DiscoveryOptions::class); }); it('can use comprehensive factory method', function () { $options = DiscoveryOptions::comprehensive(); expect($options)->toBeInstanceOf(DiscoveryOptions::class); }); it('can use minimal factory method', function () { $options = DiscoveryOptions::minimal(); expect($options)->toBeInstanceOf(DiscoveryOptions::class); }); it('supports incremental scan type', function () { $options = new DiscoveryOptions( scanType: ScanType::INCREMENTAL, paths: ['/test/path'], useCache: false ); expect($options->scanType)->toBe(ScanType::INCREMENTAL); }); it('supports full scan type', function () { $options = new DiscoveryOptions( scanType: ScanType::FULL, paths: ['/test/path'], useCache: true ); expect($options->scanType)->toBe(ScanType::FULL); }); });