diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 61050db..dc0f465 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -168,7 +168,7 @@ jobs: - name: Code Quality (by PHPStan) run: ./vendor/bin/phpstan analyse - tests: + tests-sqlite: runs-on: ubuntu-latest needs: - check-dependencies @@ -206,3 +206,55 @@ jobs: - name: PHPUnit Tests run: ./vendor/bin/phpunit --testdox + + tests-mysql-8: + runs-on: ubuntu-latest + needs: + - check-dependencies + - xml-linting + strategy: + matrix: + php-version: + - 7.3 + - 7.4 + steps: + - uses: actions/checkout@v2 + + - name: Install PHP + uses: shivammathur/setup-php@v2 + with: + php-version: "${{ matrix.php-version }}" + + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + + - uses: actions/cache@v1 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + + - name: Use expected composer version + run: sudo composer selfupdate --2 + + - name: Setup MySQL + uses: mirromutth/mysql-action@v1.1 + with: + mysql version: '5.7' + mysql database: 'typo3' + mysql root password: 'root' + + - name: Install dependencies + run: composer install --prefer-dist --no-progress --no-suggest + + - name: PHPUnit Tests + run: |- + export typo3DatabaseDriver="pdo_mysql" + export typo3DatabaseName="typo3" + export typo3DatabaseHost="127.0.0.1" + export typo3DatabaseUsername="root" + export typo3DatabasePassword="root" + ./vendor/bin/phpunit --testdox diff --git a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForIsAccessibleForFree.xml b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForIsAccessibleForFree.xml index cba5b94..ad4a306 100644 --- a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForIsAccessibleForFree.xml +++ b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForIsAccessibleForFree.xml @@ -5,7 +5,7 @@ 3 Attraktion mit false - + 0
@@ -28,7 +28,7 @@ 3 Attraktion mit true - + 0
diff --git a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPets.xml b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPets.xml index f726f36..bb86587 100644 --- a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPets.xml +++ b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPets.xml @@ -5,7 +5,7 @@ 3 Attraktion mit pets_allowed = false - + 0
@@ -27,7 +27,7 @@ 3 Attraktion mit pets_allowed = true - + 0
diff --git a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPublicAccess.xml b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPublicAccess.xml index d2f832b..5604dd9 100644 --- a/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPublicAccess.xml +++ b/Tests/Functional/Fixtures/Frontend/TouristAttractionsForPublicAccess.xml @@ -5,7 +5,7 @@ 3 Attraktion mit public_access = false - + 0
@@ -27,7 +27,7 @@ 3 Attraktion mit public_access = true - + 0
diff --git a/Tests/Functional/ImportTest.php b/Tests/Functional/ImportTest.php index ad98d1d..bfaa013 100644 --- a/Tests/Functional/ImportTest.php +++ b/Tests/Functional/ImportTest.php @@ -167,19 +167,19 @@ class ImportTest extends TestCase self::assertCount(1, $organisations); self::assertSame('https://thuecat.org/resources/018132452787-ngbe', $organisations[0]['remote_id']); self::assertSame('Erfurt Tourismus und Marketing GmbH', $organisations[0]['title']); - self::assertSame('1', $organisations[0]['uid']); + self::assertSame(1, (int)$organisations[0]['uid']); $importLogs = $this->getAllRecords('tx_thuecat_import_log'); self::assertCount(1, $importLogs); - self::assertSame('1', $importLogs[0]['configuration']); - self::assertSame('1', $importLogs[0]['uid']); + self::assertSame(1, (int)$importLogs[0]['configuration']); + self::assertSame(1, (int)$importLogs[0]['uid']); $importLogEntries = $this->getAllRecords('tx_thuecat_import_log_entry'); self::assertCount(1, $importLogEntries); - self::assertSame('1', $importLogEntries[0]['import_log']); - self::assertSame('1', $importLogEntries[0]['record_uid']); + self::assertSame(1, (int)$importLogEntries[0]['import_log']); + self::assertSame(1, (int)$importLogEntries[0]['record_uid']); self::assertSame('tx_thuecat_organisation', $importLogEntries[0]['table_name']); - self::assertSame('0', $importLogEntries[0]['insertion']); + self::assertSame(0, (int)$importLogEntries[0]['insertion']); self::assertSame('[]', $importLogEntries[0]['errors']); } diff --git a/ext_tables.sql b/ext_tables.sql index 5a8f42a..d77c7c5 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -18,13 +18,13 @@ CREATE TABLE tx_thuecat_import_log_entry ( record_uid int(11) unsigned DEFAULT '0' NOT NULL, table_name varchar(255) DEFAULT '' NOT NULL, insertion TINYINT(1) unsigned DEFAULT '0' NOT NULL, - errors text DEFAULT '' NOT NULL, + errors text, ); CREATE TABLE tx_thuecat_organisation ( remote_id varchar(255) DEFAULT '' NOT NULL, title varchar(255) DEFAULT '' NOT NULL, - description text DEFAULT '' NOT NULL, + description text, manages_towns int(11) unsigned DEFAULT '0' NOT NULL, manages_tourist_information int(11) unsigned DEFAULT '0' NOT NULL, manages_tourist_attraction int(11) unsigned DEFAULT '0' NOT NULL, @@ -35,7 +35,7 @@ CREATE TABLE tx_thuecat_town ( managed_by int(11) unsigned DEFAULT '0' NOT NULL, tourist_information int(11) unsigned DEFAULT '0' NOT NULL, title varchar(255) DEFAULT '' NOT NULL, - description text DEFAULT '' NOT NULL, + description text, ); CREATE TABLE tx_thuecat_tourist_information ( @@ -43,7 +43,7 @@ CREATE TABLE tx_thuecat_tourist_information ( managed_by int(11) unsigned DEFAULT '0' NOT NULL, town int(11) unsigned DEFAULT '0' NOT NULL, title varchar(255) DEFAULT '' NOT NULL, - description text DEFAULT '' NOT NULL, + description text, ); CREATE TABLE tx_thuecat_tourist_attraction ( @@ -52,27 +52,27 @@ CREATE TABLE tx_thuecat_tourist_attraction ( town int(11) unsigned DEFAULT '0' NOT NULL, parking_facility_near_by varchar(255) DEFAULT '' NOT NULL, title varchar(255) DEFAULT '' NOT NULL, - description text DEFAULT '' NOT NULL, - opening_hours text DEFAULT '' NOT NULL, - address text DEFAULT '' NOT NULL, - media text DEFAULT '' NOT NULL, - offers text DEFAULT '' NOT NULL, - slogan text DEFAULT '' NOT NULL, - start_of_construction text DEFAULT '' NOT NULL, - sanitation text DEFAULT '' NOT NULL, - other_service text DEFAULT '' NOT NULL, - museum_service text DEFAULT '' NOT NULL, - architectural_style text DEFAULT '' NOT NULL, - traffic_infrastructure text DEFAULT '' NOT NULL, - payment_accepted text DEFAULT '' NOT NULL, - digital_offer text DEFAULT '' NOT NULL, - photography text DEFAULT '' NOT NULL, - pets_allowed text DEFAULT '' NOT NULL, - is_accessible_for_free text DEFAULT '' NOT NULL, - public_access text DEFAULT '' NOT NULL, - available_languages text DEFAULT '' NOT NULL, - distance_to_public_transport text DEFAULT '' NOT NULL, - accessibility_specification text DEFAULT '' NOT NULL, + description text, + opening_hours text, + address text, + media text, + offers text, + slogan text, + start_of_construction text, + sanitation text, + other_service text, + museum_service text, + architectural_style text, + traffic_infrastructure text, + payment_accepted text, + digital_offer text, + photography text, + pets_allowed text, + is_accessible_for_free text, + public_access text, + available_languages text, + distance_to_public_transport text, + accessibility_specification text, ); CREATE TABLE tx_thuecat_parking_facility ( @@ -80,14 +80,14 @@ CREATE TABLE tx_thuecat_parking_facility ( managed_by int(11) unsigned DEFAULT '0' NOT NULL, town int(11) unsigned DEFAULT '0' NOT NULL, title varchar(255) DEFAULT '' NOT NULL, - description text DEFAULT '' NOT NULL, - opening_hours text DEFAULT '' NOT NULL, - address text DEFAULT '' NOT NULL, - media text DEFAULT '' NOT NULL, - offers text DEFAULT '' NOT NULL, - sanitation text DEFAULT '' NOT NULL, - other_service text DEFAULT '' NOT NULL, - traffic_infrastructure text DEFAULT '' NOT NULL, - payment_accepted text DEFAULT '' NOT NULL, - distance_to_public_transport text DEFAULT '' NOT NULL, + description text, + opening_hours text, + address text, + media text, + offers text, + sanitation text, + other_service text, + traffic_infrastructure text, + payment_accepted text, + distance_to_public_transport text, );