diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..cb980fb --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,23 @@ + +## Description + + +## How has this been tested? +- [ ] Unit tests +- [ ] Integration tests +- [ ] Manual testing + +## Type of change +- [ ] Bug fix +- [ ] New feature +- [ ] Breaking change +- [ ] Documentation update +- [ ] Other (please describe): + +## Checklist + + +- [ ] I have performed a self-review of my own code. +- [ ] I have commented my code, particularly in hard-to-understand areas. +- [ ] I have made corresponding changes to the documentation if necessary. +- [ ] I have added tests that prove my fix is effective or that my feature works. diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4d168ff..9a29002 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,20 +13,18 @@ jobs: fail-fast: true matrix: os: [ubuntu-latest] - php: [8.2, 8.1] - laravel: [10.*, 9.*] + php: [8.4, 8.3, 8.2] + laravel: [12.*] stability: [prefer-lowest, prefer-stable] include: - - laravel: 10.* - testbench: 8.* - - laravel: 9.* - testbench: 7.* + - laravel: 12.* + testbench: 10.* name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }} services: mysql: - image: mysql:5.7 + image: mysql:8.0 env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: laravel-database-trigger @@ -36,7 +34,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -51,7 +49,7 @@ jobs: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - name: Install dependencies run: | - composer require "laravel/framework:${{ matrix.laravel }}" "nesbot/carbon:^2.64" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update + composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update composer update --${{ matrix.stability }} --prefer-dist --no-interaction - name: Execute tests run: vendor/bin/phpunit diff --git a/.gitignore b/.gitignore index 5e5f3b0..8225888 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ vendor composer.lock .phpunit.result.cache -.php-cs-fixer.cache \ No newline at end of file +.php-cs-fixer.cache +.phpunit.cache \ No newline at end of file diff --git a/composer.json b/composer.json index aea44c7..9bab35e 100644 --- a/composer.json +++ b/composer.json @@ -18,14 +18,14 @@ } ], "require": { - "php": "^8.1", - "illuminate/support": "^9.0|^10.0", - "illuminate/database": "^9.0|^10.0" + "php": "^8.2", + "illuminate/support": "^12.0", + "illuminate/database": "^12.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.5", - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.0" + "orchestra/testbench": "^10.0", + "phpunit/phpunit": "^11.0" }, "autoload": { "psr-4": { diff --git a/phpunit.xml b/phpunit.xml index 7500862..07801a8 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,32 +1,30 @@ - - - src/ - - - - - tests - - - - - - - - - + + + tests + + + + + + + + + + + + src/ + + diff --git a/src/Facades/Schema.php b/src/Facades/Schema.php index 4b4d011..0c9904d 100644 --- a/src/Facades/Schema.php +++ b/src/Facades/Schema.php @@ -21,7 +21,7 @@ public static function connection($name): Builder public static function getSchemaBuilder(Connection $connection): Builder { $getSchemaBuilderForGrammar = function (string $grammarClass, string $builderClass) use ($connection): Builder { - $connection->setSchemaGrammar($connection->withTablePrefix(new $grammarClass())); + $connection->setSchemaGrammar(new $grammarClass($connection)); return new $builderClass($connection); }; diff --git a/tests/Commands/MigrationCreatorTest.php b/tests/Commands/MigrationCreatorTest.php index f21c27e..cce20e1 100644 --- a/tests/Commands/MigrationCreatorTest.php +++ b/tests/Commands/MigrationCreatorTest.php @@ -2,6 +2,7 @@ namespace Esign\DatabaseTrigger\Commands; +use PHPUnit\Framework\Attributes\Test; use Esign\DatabaseTrigger\DatabaseTrigger; use Esign\DatabaseTrigger\Enums\TriggerEvent; use Esign\DatabaseTrigger\Enums\TriggerTiming; @@ -10,10 +11,10 @@ use Mockery; use PHPUnit\Framework\MockObject\MockObject; -class MigrationCreatorTest extends TestCase +final class MigrationCreatorTest extends TestCase { - /** @test */ - public function it_can_populate_the_stub_file() + #[Test] + public function it_can_populate_the_stub_file(): void { $creator = $this->getCreator(); $creator->expects($this->any())->method('getDatePrefix')->willReturn('foo'); @@ -44,8 +45,8 @@ public function it_can_populate_the_stub_file() ); } - /** @test */ - public function it_can_populate_the_stub_file_providing_a_statement() + #[Test] + public function it_can_populate_the_stub_file_providing_a_statement(): void { $creator = $this->getCreator(); $creator->expects($this->any())->method('getDatePrefix')->willReturn('foo'); diff --git a/tests/Commands/TriggerListCommandTest.php b/tests/Commands/TriggerListCommandTest.php index ae1e3ae..3278a99 100644 --- a/tests/Commands/TriggerListCommandTest.php +++ b/tests/Commands/TriggerListCommandTest.php @@ -2,6 +2,7 @@ namespace Esign\DatabaseTrigger\Tests\Commands; +use PHPUnit\Framework\Attributes\Test; use Esign\DatabaseTrigger\Commands\TriggerListCommand; use Esign\DatabaseTrigger\DatabaseTrigger; use Esign\DatabaseTrigger\Enums\TriggerEvent; @@ -9,10 +10,10 @@ use Esign\DatabaseTrigger\Facades\Schema; use Esign\DatabaseTrigger\Tests\TestCase; -class TriggerListCommandTest extends TestCase +final class TriggerListCommandTest extends TestCase { - /** @test */ - public function it_can_display_a_list_of_triggers() + #[Test] + public function it_can_display_a_list_of_triggers(): void { Schema::createTrigger('my_trigger', function (DatabaseTrigger $trigger) { $trigger->on('posts'); diff --git a/tests/Commands/TriggerMakeCommandTest.php b/tests/Commands/TriggerMakeCommandTest.php index 64a02b4..4addc2b 100644 --- a/tests/Commands/TriggerMakeCommandTest.php +++ b/tests/Commands/TriggerMakeCommandTest.php @@ -2,6 +2,7 @@ namespace Esign\DatabaseTrigger\Tests\Commands; +use PHPUnit\Framework\Attributes\Test; use Esign\DatabaseTrigger\Commands\MigrationCreator; use Esign\DatabaseTrigger\Commands\TriggerMakeCommand; use Esign\DatabaseTrigger\Enums\TriggerEvent; @@ -9,10 +10,10 @@ use Esign\DatabaseTrigger\Tests\TestCase; use Illuminate\Support\Composer; -class TriggerMakeCommandTest extends TestCase +final class TriggerMakeCommandTest extends TestCase { - /** @test */ - public function it_can_create_the_trigger_migration() + #[Test] + public function it_can_create_the_trigger_migration(): void { $this->mock(MigrationCreator::class, function ($mock) { $mock->shouldReceive('createTrigger')->once(); diff --git a/tests/DatabaseTriggerTest.php b/tests/DatabaseTriggerTest.php index 0863c84..de7f57d 100644 --- a/tests/DatabaseTriggerTest.php +++ b/tests/DatabaseTriggerTest.php @@ -2,46 +2,47 @@ namespace Esign\DatabaseTrigger\Tests; +use PHPUnit\Framework\Attributes\Test; use Esign\DatabaseTrigger\DatabaseTrigger; use Esign\DatabaseTrigger\Enums\TriggerEvent; use Esign\DatabaseTrigger\Enums\TriggerTiming; -class DatabaseTriggerTest extends TestCase +final class DatabaseTriggerTest extends TestCase { - /** @test */ - public function it_can_set_the_name() + #[Test] + public function it_can_set_the_name(): void { $trigger = (new DatabaseTrigger())->name('my_trigger'); $this->assertEquals('my_trigger', $trigger->name); } - /** @test */ - public function it_can_set_the_table_name() + #[Test] + public function it_can_set_the_table_name(): void { $trigger = (new DatabaseTrigger())->on('posts'); $this->assertEquals('posts', $trigger->table); } - /** @test */ - public function it_can_set_the_timing() + #[Test] + public function it_can_set_the_timing(): void { $trigger = (new DatabaseTrigger())->timing(TriggerTiming::AFTER); $this->assertEquals(TriggerTiming::AFTER->value, $trigger->timing); } - /** @test */ - public function it_can_set_the_event() + #[Test] + public function it_can_set_the_event(): void { $trigger = (new DatabaseTrigger())->event(TriggerEvent::INSERT); $this->assertEquals(TriggerEvent::INSERT->value, $trigger->event); } - /** @test */ - public function it_can_set_the_statement_as_a_closure() + #[Test] + public function it_can_set_the_statement_as_a_closure(): void { $trigger = (new DatabaseTrigger())->statement(function () { return "SET NEW.title = 'Default title';"; @@ -50,8 +51,8 @@ public function it_can_set_the_statement_as_a_closure() $this->assertEquals("SET NEW.title = 'Default title';", $trigger->statement); } - /** @test */ - public function it_can_set_the_statement_as_a_string() + #[Test] + public function it_can_set_the_statement_as_a_string(): void { $trigger = (new DatabaseTrigger())->statement("SET NEW.title = 'Default title';"); diff --git a/tests/Facades/SchemaTest.php b/tests/Facades/SchemaTest.php index 24bc88e..6cf12cd 100644 --- a/tests/Facades/SchemaTest.php +++ b/tests/Facades/SchemaTest.php @@ -2,16 +2,17 @@ namespace Esign\DatabaseTrigger\Tests\Facades; +use PHPUnit\Framework\Attributes\Test; use Esign\DatabaseTrigger\DatabaseTrigger; use Esign\DatabaseTrigger\Enums\TriggerEvent; use Esign\DatabaseTrigger\Enums\TriggerTiming; use Esign\DatabaseTrigger\Facades\Schema; use Esign\DatabaseTrigger\Tests\TestCase; -class SchemaTest extends TestCase +final class SchemaTest extends TestCase { - /** @test */ - public function it_can_create_a_trigger() + #[Test] + public function it_can_create_a_trigger(): void { Schema::createTrigger('my_trigger', function (DatabaseTrigger $trigger) { $trigger->on('posts'); @@ -23,8 +24,8 @@ public function it_can_create_a_trigger() $this->assertTrue(Schema::hasTrigger('my_trigger')); } - /** @test */ - public function it_can_drop_a_trigger() + #[Test] + public function it_can_drop_a_trigger(): void { Schema::createTrigger('my_trigger', function (DatabaseTrigger $trigger) { $trigger->on('posts'); @@ -38,16 +39,16 @@ public function it_can_drop_a_trigger() $this->assertFalse(Schema::hasTrigger('my_trigger')); } - /** @test */ - public function it_can_drop_a_trigger_if_it_exists() + #[Test] + public function it_can_drop_a_trigger_if_it_exists(): void { Schema::dropTriggerIfExists('my_trigger'); $this->assertFalse(Schema::hasTrigger('my_trigger')); } - /** @test */ - public function it_can_check_if_a_trigger_exists() + #[Test] + public function it_can_check_if_a_trigger_exists(): void { $this->assertFalse(Schema::hasTrigger('my_trigger'));