|
| 1 | +<?php |
| 2 | + |
| 3 | +use Cerbero\Enum\Enums; |
| 4 | +use Cerbero\Enum\Services\Generator; |
| 5 | + |
| 6 | +it('returns true if an enum already exists', function() { |
| 7 | + $outcome = (new Generator('App\Enums\Enum1', []))->generate(); |
| 8 | + |
| 9 | + expect($outcome)->toBeTrue(); |
| 10 | +}); |
| 11 | + |
| 12 | +it('generates annotated enums', function(string $enum, ?string $backed) { |
| 13 | + Enums::setBasePath(__DIR__ . '/../Skeleton'); |
| 14 | + Enums::setPaths('app/Enums', 'domain/*/Enums'); |
| 15 | + |
| 16 | + expect(fn() => (new Generator($enum, ['CaseOne', 'CaseTwo'], $backed))->generate())->toGenerate($enum); |
| 17 | + |
| 18 | + (fn() => self::$paths = [])->bindTo(null, Enums::class)(); |
| 19 | + (fn() => self::$basePath = null)->bindTo(null, Enums::class)(); |
| 20 | +})->with([ |
| 21 | + ['App\Enums\Generated1', 'bitwise'], |
| 22 | + ['Domain\Common\Enums\Generated2', 'snake'], |
| 23 | +]); |
| 24 | + |
| 25 | +it('creates sub-directories if needed', function() { |
| 26 | + Enums::setBasePath(__DIR__ . '/../Skeleton'); |
| 27 | + Enums::setPaths('app/Enums', 'domain/*/Enums'); |
| 28 | + |
| 29 | + $enum = 'SubDirectory\Generated3'; |
| 30 | + |
| 31 | + try { |
| 32 | + expect(fn() => (new Generator($enum, ['CaseOne', 'CaseTwo']))->generate())->toGenerate($enum); |
| 33 | + } finally { |
| 34 | + rmdir(Enums::basePath('SubDirectory')); |
| 35 | + } |
| 36 | + |
| 37 | + (fn() => self::$paths = [])->bindTo(null, Enums::class)(); |
| 38 | + (fn() => self::$basePath = null)->bindTo(null, Enums::class)(); |
| 39 | +}); |
0 commit comments