From 16a35fc5c525e010614c0df108a1edf0934287cc Mon Sep 17 00:00:00 2001 From: Bart Jaskulski <bartek.jaskulski@wpdesk.net> Date: Mon, 12 Dec 2022 12:33:19 +0100 Subject: [PATCH] test: assert correct migrations order Signed-off-by: Bart Jaskulski <bartek.jaskulski@wpdesk.net> --- .../FilesystemMigrationsRepositoryTest.php | 39 +++++++++++++++++++ .../Version/AlphabeticalComparatorTest.php | 35 +++++++++++++++++ tests/bootstrap.php | 3 ++ tests/fixtures/migrations/Version_10.php | 11 ++++++ tests/fixtures/migrations/Version_11.php | 11 ++++++ tests/stubs/wpdb.php | 6 +++ 6 files changed, 105 insertions(+) create mode 100644 tests/WPDesk/Migrations/Tests/FilesystemMigrationsRepositoryTest.php create mode 100644 tests/WPDesk/Migrations/Tests/Version/AlphabeticalComparatorTest.php create mode 100644 tests/bootstrap.php create mode 100644 tests/fixtures/migrations/Version_10.php create mode 100644 tests/fixtures/migrations/Version_11.php create mode 100644 tests/stubs/wpdb.php diff --git a/tests/WPDesk/Migrations/Tests/FilesystemMigrationsRepositoryTest.php b/tests/WPDesk/Migrations/Tests/FilesystemMigrationsRepositoryTest.php new file mode 100644 index 0000000..58187d7 --- /dev/null +++ b/tests/WPDesk/Migrations/Tests/FilesystemMigrationsRepositoryTest.php @@ -0,0 +1,39 @@ +<?php + +namespace WPDesk\Migrations\Tests; + +use Psr\Log\NullLogger; +use WPDesk\Migrations\FilesystemMigrationsRepository; +use PHPUnit\Framework\TestCase; +use WPDesk\Migrations\Finder\GlobFinder; +use WPDesk\Migrations\Version\AlphabeticalComparator; +use WPDesk\Migrations\Version\WpdbMigrationFactory; + +class FilesystemMigrationsRepositoryTest extends TestCase { + + public function test_migrations_sorted() { + $migration_directories = [ + __DIR__ . '/../../../fixtures/migrations' + ]; + $migrations_repository = new FilesystemMigrationsRepository( + $migration_directories, + new GlobFinder(), + new WpdbMigrationFactory( + new \wpdb(), + new NullLogger() + ), + new AlphabeticalComparator() + ); + + $sorted_migrations = $migrations_repository->get_migrations(); + self::assertEquals( + (string) $sorted_migrations[0]->get_version(), + 'WPDesk\Migrations\Tests\fixtures\migrations\Version_10' + ); + self::assertEquals( + (string) $sorted_migrations[1]->get_version(), + 'WPDesk\Migrations\Tests\fixtures\migrations\Version_11' + ); + } + +} diff --git a/tests/WPDesk/Migrations/Tests/Version/AlphabeticalComparatorTest.php b/tests/WPDesk/Migrations/Tests/Version/AlphabeticalComparatorTest.php new file mode 100644 index 0000000..c3fa37e --- /dev/null +++ b/tests/WPDesk/Migrations/Tests/Version/AlphabeticalComparatorTest.php @@ -0,0 +1,35 @@ +<?php + +namespace WPDesk\Migrations\Tests\Version; + +use PHPUnit\Framework\TestCase; +use WPDesk\Migrations\Version\AlphabeticalComparator; +use WPDesk\Migrations\Version\Version; + +class AlphabeticalComparatorTest extends TestCase { + + public function test_10_is_less_than_11() { + $comparator = new AlphabeticalComparator(); + + $result = $comparator->compare( + new Version('Version_10'), + new Version('Version_11') + ); + + self::assertTrue($result === -1); + + $result = $comparator->compare( + new Version('Version_11'), + new Version('Version_10') + ); + + self::assertTrue($result === 1); + + $result = $comparator->compare( + new Version('Version_10'), + new Version('Version_10') + ); + + self::assertTrue($result === 0); + } +} diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..d21c14d --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,3 @@ +<?php + +require __DIR__ . '/../vendor/autoload.php'; diff --git a/tests/fixtures/migrations/Version_10.php b/tests/fixtures/migrations/Version_10.php new file mode 100644 index 0000000..ed8011d --- /dev/null +++ b/tests/fixtures/migrations/Version_10.php @@ -0,0 +1,11 @@ +<?php +declare( strict_types=1 ); + +namespace WPDesk\Migrations\Tests\fixtures\migrations; + +class Version_10 extends \WPDesk\Migrations\AbstractMigration { + + public function up(): bool { + return true; + } +} diff --git a/tests/fixtures/migrations/Version_11.php b/tests/fixtures/migrations/Version_11.php new file mode 100644 index 0000000..d1c5a26 --- /dev/null +++ b/tests/fixtures/migrations/Version_11.php @@ -0,0 +1,11 @@ +<?php +declare( strict_types=1 ); + +namespace WPDesk\Migrations\Tests\fixtures\migrations; + +class Version_11 extends \WPDesk\Migrations\AbstractMigration { + + public function up(): bool { + return true; + } +} diff --git a/tests/stubs/wpdb.php b/tests/stubs/wpdb.php new file mode 100644 index 0000000..3fd492e --- /dev/null +++ b/tests/stubs/wpdb.php @@ -0,0 +1,6 @@ +<?php +declare( strict_types=1 ); + +class wpdb { + +} -- GitLab