first commit

This commit is contained in:
salam committed 2026-10-06 19:40:28 +02:00
commit e81864e683
2984 files changed
+267797

No files matched your search

@@ -0,0 +1,127 @@
<?php declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Tests\Functional\Parser;
use BK2K\BootstrapPackage\Service\CompileService;
use PHPUnit\Framework\ExpectationFailedException;
use TYPO3\CMS\Core\Core\Environment;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* Testcase for class \BK2K\BootstrapPackage\Parser\ScssParser
*/
class ScssParserTest extends FunctionalTestCase
{
/**
* @var array
*/
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package',
'typo3conf/ext/demo_package',
];
/**
* Asserts that a file contains a needle.
*/
protected static function assertFileContains(string $filename, string $needle): void
{
self::assertFileIsReadable($filename);
$content = (string) file_get_contents($filename);
try {
self::assertStringContainsString($needle, $content);
} catch (ExpectationFailedException $e) {
self::fail(\sprintf(
'Failed asserting that file \'%s\' contains \'%s\'',
$filename,
$needle
));
}
}
/**
* @test
* @dataProvider scssParserCanCompileTestDataProvider
*/
public function scssParserCanCompileTest(string $inputFile): void
{
$compileService = GeneralUtility::makeInstance(CompileService::class);
$compiledFile = $compileService->getCompiledFile($inputFile);
self::assertFileExists(Environment::getPublicPath() . '/' . $compiledFile);
}
/**
* @return array
*/
public function scssParserCanCompileTestDataProvider(): array
{
return [
'direct include' => [
'inputFile' => 'typo3conf/ext/bootstrap_package/Resources/Public/Scss/bootstrap5/theme.scss'
],
'relative include from symlinked package' => [
'inputFile' => 'typo3conf/ext/demo_package/Resources/Private/Scss/Relative/theme.scss'
],
'core syntax' => [
'inputFile' => 'typo3conf/ext/demo_package/Resources/Private/Scss/CoreSyntax/theme.scss'
],
'legacy include' => [
'inputFile' => 'typo3conf/ext/demo_package/Resources/Private/Scss/Legacy/theme.scss'
],
];
}
/**
* @test
*/
public function urlsAreRelativeToTempTest(): void
{
$compileService = GeneralUtility::makeInstance(CompileService::class);
$compiledFile = Environment::getPublicPath() . '/' . $compileService->getCompiledFile(
'typo3conf/ext/bootstrap_package/Resources/Public/Scss/bootstrap5/theme.scss'
);
self::assertFileContains(
$compiledFile,
'url("../../../../typo3conf/ext/bootstrap_package/Resources/Public/Images/PhotoSwipe/default-skin.png")'
);
self::assertFileContains(
$compiledFile,
'url("../../../../typo3conf/ext/bootstrap_package/Resources/Public/Images/PhotoSwipe/default-skin.svg")'
);
self::assertFileContains(
$compiledFile,
'url("../../../../typo3conf/ext/bootstrap_package/Resources/Public/Images/PhotoSwipe/preloader.gif")'
);
}
/**
* @test
*/
public function sitepackageImagesAreUsedTest(): void
{
$compileService = GeneralUtility::makeInstance(CompileService::class);
$compiledFile = Environment::getPublicPath() . '/' . $compileService->getCompiledFile(
'typo3conf/ext/demo_package/Resources/Private/Scss/Relative/theme.scss'
);
self::assertFileContains(
$compiledFile,
'url("../../../../typo3conf/ext/demo_package/Resources/Public/Images/PhotoSwipe/default-skin.png")'
);
self::assertFileContains(
$compiledFile,
'url("../../../../typo3conf/ext/demo_package/Resources/Public/Images/PhotoSwipe/default-skin.svg")'
);
self::assertFileContains(
$compiledFile,
'url("../../../../typo3conf/ext/demo_package/Resources/Public/Images/PhotoSwipe/preloader.gif")'
);
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\AccordionContentElementUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class AccordionContentElementUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new AccordionContentElementUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new AccordionContentElementUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/AccordionContentElementUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/AccordionContentElementUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/AccordionContentElementUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\AccordionMediaOrientUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class AccordionMediaOrientUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new AccordionMediaOrientUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new AccordionMediaOrientUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/AccordionMediaOrientUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/AccordionMediaOrientUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/AccordionMediaOrientUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\BackendLayoutUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class BackendLayoutUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new BackendLayoutUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new BackendLayoutUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/BackendLayoutUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/BackendLayoutUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/BackendLayoutUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\BulletContentElementUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class BulletContentElementUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new BulletContentElementUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new BulletContentElementUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/BulletContentElementUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/BulletContentElementUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/BulletContentElementUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\CarouselContentElementUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class CarouselContentElementUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new CarouselContentElementUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new CarouselContentElementUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/CarouselContentElementUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/CarouselContentElementUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/CarouselContentElementUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\CarouselItemLayoutUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class CarouselItemLayoutUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new CarouselItemLayoutUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new CarouselItemLayoutUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/CarouselItemLayoutUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/CarouselItemLayoutUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/CarouselItemLayoutUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\CarouselItemTypeUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class CarouselItemTypeUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new CarouselItemTypeUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new CarouselItemTypeUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/CarouselItemTypeUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/CarouselItemTypeUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/CarouselItemTypeUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\ExternalMediaContentElementUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class ExternalMediaContentElementUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new ExternalMediaContentElementUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new ExternalMediaContentElementUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/ExternalMediaContentElementUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/ExternalMediaContentElementUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/ExternalMediaContentElementUpdate/Result.csv');
}
}
@@ -0,0 +1,3 @@
"tt_content",,,
,uid,pid,CType
,1,1,bootstrap_package_accordion
1 tt_content
2 uid pid CType
3 1 1 bootstrap_package_accordion
@@ -0,0 +1,3 @@
"tt_content",,,
,uid,pid,CType
,1,1,accordion
1 tt_content
2 uid pid CType
3 1 1 accordion
@@ -0,0 +1,4 @@
"tx_bootstrappackage_accordion_item",,,
,uid,pid,mediaorient
,1,1,0
,2,1,1
1 tx_bootstrappackage_accordion_item
2 uid pid mediaorient
3 1 1 0
4 2 1 1
@@ -0,0 +1,4 @@
"tx_bootstrappackage_accordion_item",,,
,uid,pid,mediaorient
,1,1,left
,2,1,right
1 tx_bootstrappackage_accordion_item
2 uid pid mediaorient
3 1 1 left
4 2 1 right
@@ -0,0 +1,35 @@
"pages",,,,
,uid,pid,backend_layout,backend_layout_next_level
,1,0,pagets__clean,pagets__clean
,2,0,pagets__default_clean,pagets__default_clean
,3,0,pagets__default_2_columns,pagets__default_2_columns
,4,0,pagets__default_2_columns_25_75,pagets__default_2_columns_25_75
,5,0,pagets__default_2_columns_50_50,pagets__default_2_columns_50_50
,6,0,pagets__default_2_columns_offset_right,pagets__default_2_columns_offset_right
,7,0,pagets__default_3_columns,pagets__default_3_columns
,8,0,pagets__default_subnavigation_right,pagets__default_subnavigation_right
,9,0,pagets__default_subnavigation_right_2_columns,pagets__default_subnavigation_right_2_columns
,10,0,pagets__default_subnavigation_left,pagets__default_subnavigation_left
,11,0,pagets__default_subnavigation_left_2_columns,pagets__default_subnavigation_left_2_columns
,12,0,pagets__clean,
,13,0,pagets__default_clean,
,14,0,pagets__default_2_columns,
,15,0,pagets__default_2_columns_25_75,
,16,0,pagets__default_2_columns_50_50,
,17,0,pagets__default_2_columns_offset_right,
,18,0,pagets__default_3_columns,
,19,0,pagets__default_subnavigation_right,
,20,0,pagets__default_subnavigation_right_2_columns,
,21,0,pagets__default_subnavigation_left,
,22,0,pagets__default_subnavigation_left_2_columns,
,23,0,,pagets__clean
,24,0,,pagets__default_clean
,25,0,,pagets__default_2_columns
,26,0,,pagets__default_2_columns_25_75
,27,0,,pagets__default_2_columns_50_50
,28,0,,pagets__default_2_columns_offset_right
,29,0,,pagets__default_3_columns
,30,0,,pagets__default_subnavigation_right
,31,0,,pagets__default_subnavigation_right_2_columns
,32,0,,pagets__default_subnavigation_left
,34,0,,pagets__default_subnavigation_left_2_columns
1 pages
2 uid pid backend_layout backend_layout_next_level
3 1 0 pagets__clean pagets__clean
4 2 0 pagets__default_clean pagets__default_clean
5 3 0 pagets__default_2_columns pagets__default_2_columns
6 4 0 pagets__default_2_columns_25_75 pagets__default_2_columns_25_75
7 5 0 pagets__default_2_columns_50_50 pagets__default_2_columns_50_50
8 6 0 pagets__default_2_columns_offset_right pagets__default_2_columns_offset_right
9 7 0 pagets__default_3_columns pagets__default_3_columns
10 8 0 pagets__default_subnavigation_right pagets__default_subnavigation_right
11 9 0 pagets__default_subnavigation_right_2_columns pagets__default_subnavigation_right_2_columns
12 10 0 pagets__default_subnavigation_left pagets__default_subnavigation_left
13 11 0 pagets__default_subnavigation_left_2_columns pagets__default_subnavigation_left_2_columns
14 12 0 pagets__clean
15 13 0 pagets__default_clean
16 14 0 pagets__default_2_columns
17 15 0 pagets__default_2_columns_25_75
18 16 0 pagets__default_2_columns_50_50
19 17 0 pagets__default_2_columns_offset_right
20 18 0 pagets__default_3_columns
21 19 0 pagets__default_subnavigation_right
22 20 0 pagets__default_subnavigation_right_2_columns
23 21 0 pagets__default_subnavigation_left
24 22 0 pagets__default_subnavigation_left_2_columns
25 23 0 pagets__clean
26 24 0 pagets__default_clean
27 25 0 pagets__default_2_columns
28 26 0 pagets__default_2_columns_25_75
29 27 0 pagets__default_2_columns_50_50
30 28 0 pagets__default_2_columns_offset_right
31 29 0 pagets__default_3_columns
32 30 0 pagets__default_subnavigation_right
33 31 0 pagets__default_subnavigation_right_2_columns
34 32 0 pagets__default_subnavigation_left
35 34 0 pagets__default_subnavigation_left_2_columns
@@ -0,0 +1,35 @@
"pages",,,,
,uid,pid,backend_layout,backend_layout_next_level
,1,0,pagets__simple,pagets__simple
,2,0,pagets__simple,pagets__simple
,3,0,pagets__2_columns,pagets__2_columns
,4,0,pagets__2_columns_25_75,pagets__2_columns_25_75
,5,0,pagets__2_columns_50_50,pagets__2_columns_50_50
,6,0,pagets__2_columns_offset_right,pagets__2_columns_offset_right
,7,0,pagets__3_columns,pagets__3_columns
,8,0,pagets__subnavigation_right,pagets__subnavigation_right
,9,0,pagets__subnavigation_right_2_columns,pagets__subnavigation_right_2_columns
,10,0,pagets__subnavigation_left,pagets__subnavigation_left
,11,0,pagets__subnavigation_left_2_columns,pagets__subnavigation_left_2_columns
,12,0,pagets__simple,
,13,0,pagets__simple,
,14,0,pagets__2_columns,
,15,0,pagets__2_columns_25_75,
,16,0,pagets__2_columns_50_50,
,17,0,pagets__2_columns_offset_right,
,18,0,pagets__3_columns,
,19,0,pagets__subnavigation_right,
,20,0,pagets__subnavigation_right_2_columns,
,21,0,pagets__subnavigation_left,
,22,0,pagets__subnavigation_left_2_columns,
,23,0,,pagets__simple
,24,0,,pagets__simple
,25,0,,pagets__2_columns
,26,0,,pagets__2_columns_25_75
,27,0,,pagets__2_columns_50_50
,28,0,,pagets__2_columns_offset_right
,29,0,,pagets__3_columns
,30,0,,pagets__subnavigation_right
,31,0,,pagets__subnavigation_right_2_columns
,32,0,,pagets__subnavigation_left
,34,0,,pagets__subnavigation_left_2_columns
1 pages
2 uid pid backend_layout backend_layout_next_level
3 1 0 pagets__simple pagets__simple
4 2 0 pagets__simple pagets__simple
5 3 0 pagets__2_columns pagets__2_columns
6 4 0 pagets__2_columns_25_75 pagets__2_columns_25_75
7 5 0 pagets__2_columns_50_50 pagets__2_columns_50_50
8 6 0 pagets__2_columns_offset_right pagets__2_columns_offset_right
9 7 0 pagets__3_columns pagets__3_columns
10 8 0 pagets__subnavigation_right pagets__subnavigation_right
11 9 0 pagets__subnavigation_right_2_columns pagets__subnavigation_right_2_columns
12 10 0 pagets__subnavigation_left pagets__subnavigation_left
13 11 0 pagets__subnavigation_left_2_columns pagets__subnavigation_left_2_columns
14 12 0 pagets__simple
15 13 0 pagets__simple
16 14 0 pagets__2_columns
17 15 0 pagets__2_columns_25_75
18 16 0 pagets__2_columns_50_50
19 17 0 pagets__2_columns_offset_right
20 18 0 pagets__3_columns
21 19 0 pagets__subnavigation_right
22 20 0 pagets__subnavigation_right_2_columns
23 21 0 pagets__subnavigation_left
24 22 0 pagets__subnavigation_left_2_columns
25 23 0 pagets__simple
26 24 0 pagets__simple
27 25 0 pagets__2_columns
28 26 0 pagets__2_columns_25_75
29 27 0 pagets__2_columns_50_50
30 28 0 pagets__2_columns_offset_right
31 29 0 pagets__3_columns
32 30 0 pagets__subnavigation_right
33 31 0 pagets__subnavigation_right_2_columns
34 32 0 pagets__subnavigation_left
35 34 0 pagets__subnavigation_left_2_columns
@@ -0,0 +1,6 @@
"tt_content",,,,,
,uid,pid,CType,layout,bullets_type
,1,1,bullets,100,0
,2,1,bullets,110,0
,3,1,bullets,120,0
,4,1,bullets,130,0
1 tt_content
2 uid pid CType layout bullets_type
3 1 1 bullets 100 0
4 2 1 bullets 110 0
5 3 1 bullets 120 0
6 4 1 bullets 130 0
@@ -0,0 +1,6 @@
"tt_content",,,,,
,uid,pid,CType,layout,bullets_type
,1,1,bullets,0,0
,2,1,bullets,0,1
,3,1,bullets,0,0
,4,1,bullets,0,0
1 tt_content
2 uid pid CType layout bullets_type
3 1 1 bullets 0 0
4 2 1 bullets 0 1
5 3 1 bullets 0 0
6 4 1 bullets 0 0
@@ -0,0 +1,6 @@
"tt_content",,,,
,uid,pid,CType,layout
,1,1,bootstrap_package_carousel,100
,2,1,bootstrap_package_carousel,110
,3,1,bootstrap_package_carousel,120
,4,1,bootstrap_package_carousel,130
1 tt_content
2 uid pid CType layout
3 1 1 bootstrap_package_carousel 100
4 2 1 bootstrap_package_carousel 110
5 3 1 bootstrap_package_carousel 120
6 4 1 bootstrap_package_carousel 130
@@ -0,0 +1,6 @@
"tt_content",,,,
,uid,pid,CType,layout
,1,1,carousel,0
,2,1,carousel_small,0
,3,1,carousel_fullscreen,0
,4,1,carousel,130
1 tt_content
2 uid pid CType layout
3 1 1 carousel 0
4 2 1 carousel_small 0
5 3 1 carousel_fullscreen 0
6 4 1 carousel 130
@@ -0,0 +1,3 @@
"tx_bootstrappackage_carousel_item",,,
,uid,pid,layout
,1,1,
1 tx_bootstrappackage_carousel_item
2 uid pid layout
3 1 1
@@ -0,0 +1,3 @@
"tx_bootstrappackage_carousel_item",,,
,uid,pid,layout
,1,1,custom
1 tx_bootstrappackage_carousel_item
2 uid pid layout
3 1 1 custom
@@ -0,0 +1,4 @@
"tx_bootstrappackage_carousel_item",,,
,uid,pid,item_type
,1,1,textandimage
,2,1,backgroundimage
1 tx_bootstrappackage_carousel_item
2 uid pid item_type
3 1 1 textandimage
4 2 1 backgroundimage
@@ -0,0 +1,4 @@
"tx_bootstrappackage_carousel_item",,,
,uid,pid,item_type
,1,1,text_and_image
,2,1,background_image
1 tx_bootstrappackage_carousel_item
2 uid pid item_type
3 1 1 text_and_image
4 2 1 background_image
@@ -0,0 +1,3 @@
"tt_content",,,
,uid,pid,CType
,1,1,bootstrap_package_external_media
1 tt_content
2 uid pid CType
3 1 1 bootstrap_package_external_media
@@ -0,0 +1,3 @@
"tt_content",,,
,uid,pid,CType
,1,1,external_media
1 tt_content
2 uid pid CType
3 1 1 external_media
@@ -0,0 +1,4 @@
"tt_content",,,,
,uid,pid,frame_class,background_color_class
,1,1,well,
,2,1,jumbotron,
1 tt_content
2 uid pid frame_class background_color_class
3 1 1 well
4 2 1 jumbotron
@@ -0,0 +1,4 @@
"tt_content",,,,
,uid,pid,frame_class,background_color_class
,1,1,default,light
,2,1,default,primary
1 tt_content
2 uid pid frame_class background_color_class
3 1 1 default light
4 2 1 default primary
@@ -0,0 +1,12 @@
"tt_content",,,,
,uid,pid,section_frame,frame_class
,1,1,0,default
,2,1,5,default
,3,1,6,default
,4,1,10,default
,5,1,11,default
,6,1,12,default
,7,1,20,default
,8,1,21,default
,9,1,66,default
,10,1,100,default
1 tt_content
2 uid pid section_frame frame_class
3 1 1 0 default
4 2 1 5 default
5 3 1 6 default
6 4 1 10 default
7 5 1 11 default
8 6 1 12 default
9 7 1 20 default
10 8 1 21 default
11 9 1 66 default
12 10 1 100 default
@@ -0,0 +1,12 @@
"tt_content",,,,
,uid,pid,section_frame,frame_class
,1,1,0,default
,2,1,0,ruler-before
,3,1,0,ruler-after
,4,1,0,indent
,5,1,0,indent-left
,6,1,0,indent-right
,7,1,0,well
,8,1,0,jumbotron
,9,1,0,none
,10,1,0,custom-100
1 tt_content
2 uid pid section_frame frame_class
3 1 1 0 default
4 2 1 0 ruler-before
5 3 1 0 ruler-after
6 4 1 0 indent
7 5 1 0 indent-left
8 6 1 0 indent-right
9 7 1 0 well
10 8 1 0 jumbotron
11 9 1 0 none
12 10 1 0 custom-100
@@ -0,0 +1,3 @@
"tt_content",,,
,uid,pid,CType
,1,1,bootstrap_package_listgroup
1 tt_content
2 uid pid CType
3 1 1 bootstrap_package_listgroup
@@ -0,0 +1,3 @@
"tt_content",,,
,uid,pid,CType
,1,1,listgroup
1 tt_content
2 uid pid CType
3 1 1 listgroup
@@ -0,0 +1,8 @@
"tt_content",,,,,
,uid,pid,CType,layout,panel_class
,1,1,bootstrap_package_panel,0,default
,2,1,bootstrap_package_panel,110,default
,3,1,bootstrap_package_panel,120,default
,4,1,bootstrap_package_panel,130,default
,5,1,bootstrap_package_panel,140,default
,6,1,bootstrap_package_panel,150,default
1 tt_content
2 uid pid CType layout panel_class
3 1 1 bootstrap_package_panel 0 default
4 2 1 bootstrap_package_panel 110 default
5 3 1 bootstrap_package_panel 120 default
6 4 1 bootstrap_package_panel 130 default
7 5 1 bootstrap_package_panel 140 default
8 6 1 bootstrap_package_panel 150 default
@@ -0,0 +1,8 @@
"tt_content",,,,,
,uid,pid,CType,layout,panel_class
,1,1,panel,0,default
,2,1,panel,0,primary
,3,1,panel,0,success
,4,1,panel,0,info
,5,1,panel,0,warning
,6,1,panel,0,danger
1 tt_content
2 uid pid CType layout panel_class
3 1 1 panel 0 default
4 2 1 panel 0 primary
5 3 1 panel 0 success
6 4 1 panel 0 info
7 5 1 panel 0 warning
8 6 1 panel 0 danger
@@ -0,0 +1,3 @@
"tt_content",,,
,uid,pid,CType
,1,1,bootstrap_package_tab
1 tt_content
2 uid pid CType
3 1 1 bootstrap_package_tab
@@ -0,0 +1,3 @@
"tt_content",,,
,uid,pid,CType
,1,1,tab
1 tt_content
2 uid pid CType
3 1 1 tab
@@ -0,0 +1,4 @@
"tx_bootstrappackage_tab_item",,,
,uid,pid,mediaorient
,1,1,0
,2,1,1
1 tx_bootstrappackage_tab_item
2 uid pid mediaorient
3 1 1 0
4 2 1 1
@@ -0,0 +1,4 @@
"tx_bootstrappackage_tab_item",,,
,uid,pid,mediaorient
,1,1,left
,2,1,right
1 tx_bootstrappackage_tab_item
2 uid pid mediaorient
3 1 1 left
4 2 1 right
@@ -0,0 +1,8 @@
"tt_content",,,,,
,uid,pid,CType,layout,table_class
,1,1,table,100,
,2,1,table,110,
,3,1,table,120,
,4,1,table,130,
,5,1,table,140,
,6,1,table,150,
1 tt_content
2 uid pid CType layout table_class
3 1 1 table 100
4 2 1 table 110
5 3 1 table 120
6 4 1 table 130
7 5 1 table 140
8 6 1 table 150
@@ -0,0 +1,8 @@
"tt_content",,,,,
,uid,pid,CType,layout,table_class
,1,1,table,0,
,2,1,table,0,
,3,1,table,0,striped
,4,1,table,0,bordered
,5,1,table,0,hover
,6,1,table,0,condensed
1 tt_content
2 uid pid CType layout table_class
3 1 1 table 0
4 2 1 table 0
5 3 1 table 0 striped
6 4 1 table 0 bordered
7 5 1 table 0 hover
8 6 1 table 0 condensed
@@ -0,0 +1,3 @@
"tt_content",,,
,uid,pid,CType
,1,1,bootstrap_package_texticon
1 tt_content
2 uid pid CType
3 1 1 bootstrap_package_texticon
@@ -0,0 +1,3 @@
"tt_content",,,
,uid,pid,CType
,1,1,texticon
1 tt_content
2 uid pid CType
3 1 1 texticon
@@ -0,0 +1,4 @@
"tt_content",,,,
,uid,pid,icon,icon_set
,1,1,Glyphicons__demo,
,2,1,Ionicons__demo,
1 tt_content
2 uid pid icon icon_set
3 1 1 Glyphicons__demo
4 2 1 Ionicons__demo
@@ -0,0 +1,4 @@
"tt_content",,,,
,uid,pid,icon,icon_set
,1,1,EXT:bootstrap_package/Resources/Public/Images/Icons/Glyphicons/demo.svg,EXT:bootstrap_package/Resources/Public/Images/Icons/Glyphicons/
,2,1,EXT:bootstrap_package/Resources/Public/Images/Icons/Ionicons/demo.svg,EXT:bootstrap_package/Resources/Public/Images/Icons/Ionicons/
1 tt_content
2 uid pid icon icon_set
3 1 1 EXT:bootstrap_package/Resources/Public/Images/Icons/Glyphicons/demo.svg EXT:bootstrap_package/Resources/Public/Images/Icons/Glyphicons/
4 2 1 EXT:bootstrap_package/Resources/Public/Images/Icons/Ionicons/demo.svg EXT:bootstrap_package/Resources/Public/Images/Icons/Ionicons/
@@ -0,0 +1,6 @@
"tt_content",,,
,uid,pid,icon_size
,1,1,0
,2,1,1
,3,1,2
,4,1,3
1 tt_content
2 uid pid icon_size
3 1 1 0
4 2 1 1
5 3 1 2
6 4 1 3
@@ -0,0 +1,6 @@
"tt_content",,,
,uid,pid,icon_size
,1,1,default
,2,1,medium
,3,1,large
,4,1,awesome
1 tt_content
2 uid pid icon_size
3 1 1 default
4 2 1 medium
5 3 1 large
6 4 1 awesome
@@ -0,0 +1,5 @@
"tt_content",,,
,uid,pid,icon_type
,1,1,0
,2,1,1
,3,1,2
1 tt_content
2 uid pid icon_type
3 1 1 0
4 2 1 1
5 3 1 2
@@ -0,0 +1,5 @@
"tt_content",,,
,uid,pid,icon_type
,1,1,default
,2,1,square
,3,1,circle
1 tt_content
2 uid pid icon_type
3 1 1 default
4 2 1 square
5 3 1 circle
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\FrameClassToBackgroundUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class FrameClassToBackgroundUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new FrameClassToBackgroundUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new FrameClassToBackgroundUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/FrameClassToBackgroundUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/FrameClassToBackgroundUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/FrameClassToBackgroundUpdate/Result.csv');
}
}
@@ -0,0 +1,56 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\FrameClassUpdate;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class FrameClassUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new FrameClassUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$connection->executeQuery('ALTER TABLE tt_content ADD section_frame int(11) unsigned DEFAULT "0" NOT NULL;');
$subject = new FrameClassUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/FrameClassUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/FrameClassUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/FrameClassUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\ListGroupContentElementUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class ListGroupContentElementUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new ListGroupContentElementUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new ListGroupContentElementUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/ListGroupContentElementUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/ListGroupContentElementUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/ListGroupContentElementUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\PanelContentElementUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class PanelContentElementUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new PanelContentElementUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new PanelContentElementUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/PanelContentElementUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/PanelContentElementUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/PanelContentElementUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\TabContentElementUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class TabContentElementUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new TabContentElementUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new TabContentElementUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/TabContentElementUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TabContentElementUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TabContentElementUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\TabMediaOrientUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class TabMediaOrientUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new TabMediaOrientUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new TabMediaOrientUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/TabMediaOrientUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TabMediaOrientUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TabMediaOrientUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\TableContentElementUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class TableContentElementUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new TableContentElementUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new TableContentElementUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/TableContentElementUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TableContentElementUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TableContentElementUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\TexticonContentElementUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class TexticonContentElementUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new TexticonContentElementUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new TexticonContentElementUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/TexticonContentElementUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TexticonContentElementUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TexticonContentElementUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\TexticonIconUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class TexticonIconUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new TexticonIconUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new TexticonIconUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/TexticonIconUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TexticonIconUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TexticonIconUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\TexticonSizeUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class TexticonSizeUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new TexticonSizeUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new TexticonSizeUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/TexticonSizeUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TexticonSizeUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TexticonSizeUpdate/Result.csv');
}
}
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace T3G\AgencyPack\Blog\Tests\Functional\Updates;
use BK2K\BootstrapPackage\Updates\TexticonTypeUpdate;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @extensionScannerIgnoreFile
*/
final class TexticonTypeUpdateTest extends FunctionalTestCase
{
protected $testExtensionsToLoad = [
'typo3conf/ext/bootstrap_package'
];
/**
* @test
*/
public function noUpdateNecessaryTest(): void
{
$subject = new TexticonTypeUpdate();
self::assertFalse($subject->updateNecessary());
}
/**
* @test
*/
public function updateTest(): void
{
$subject = new TexticonTypeUpdate();
$this->importCSVDataSet(__DIR__ . '/Fixtures/TexticonTypeUpdate/Input.csv');
self::assertTrue($subject->updateNecessary());
$subject->executeUpdate();
self::assertFalse($subject->updateNecessary());
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TexticonTypeUpdate/Result.csv');
// Just ensure that running the upgrade again does not change anything
$subject->executeUpdate();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TexticonTypeUpdate/Result.csv');
}
}
@@ -0,0 +1,19 @@
<?php
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
defined('TYPO3') or die('Access denied.');
/**
* Default TypoScript for DemoPackage
*/
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
'demo_package',
'Configuration/TypoScript',
'Demo Package'
);
@@ -0,0 +1 @@
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/constants.typoscript">
@@ -0,0 +1 @@
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:bootstrap_package/Configuration/TypoScript/setup.typoscript">
@@ -0,0 +1 @@
@import "EXT:bootstrap_package/Resources/Public/Scss/bootstrap5/theme";
@@ -0,0 +1 @@
@import "../../../../../../../.build/public/typo3conf/ext/bootstrap_package/Resources/Public/Scss/bootstrap5/theme";
@@ -0,0 +1 @@
@import "../../../../../bootstrap_package/Resources/Public/Scss/bootstrap5/theme";
@@ -0,0 +1 @@
<svg width="264" height="88" viewBox="0 0 264 88" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M67.002 59.5v3.768c-6.307.84-9.184 5.75-10.002 9.732 2.22-2.83 5.564-5.098 10.002-5.098V71.5L73 65.585 67.002 59.5zM13 29v-5h2v3h3v2h-5zm0-14h5v2h-3v3h-2v-5zm18 0v5h-2v-3h-3v-2h5zm0 14h-5v-2h3v-3h2v5zm31-5v5h-2v-3h-3v-2h5zm0-4h-5v-2h3v-3h2v5zm8 0v-5h2v3h3v2h-5zm0 4h5v2h-3v3h-2v-5zM20.586 66l-5.656-5.656 1.414-1.414L22 64.586l5.656-5.656 1.414 1.414L23.414 66l5.656 5.656-1.414 1.414L22 67.414l-5.656 5.656-1.414-1.414L20.586 66zm91.199-.97L110 63.5l3-3.5h-10v-2h10l-3-3.5 1.785-1.468L117 59l-5.215 6.03zm40.43 0L154 63.5l-3-3.5h10v-2h-10l3-3.5-1.785-1.468L147 59l5.215 6.03zm8.742-36.487l-3.25-3.25-1.413 1.414 3.25 3.25z" fill="#fff"/><path d="M152.5 27a5.5 5.5 0 100-11 5.5 5.5 0 100 11z" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M150 21h5v1h-5zm-33.043 7.543l-1.414 1.414-3.25-3.25 1.414-1.414 3.25 3.25z"/><path d="M108.5 27a5.5 5.5 0 100-11 5.5 5.5 0 100 11z" stroke="#fff" stroke-width="1.5"/><path fill="#fff" d="M106 21h5v1h-5z"/><path fill="#fff" d="M109.043 19.008l-.085 5-1-.017.085-5z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,21 @@
{
"name": "bk2k/demo-package",
"type": "typo3-cms-extension",
"description": "Bootstrap Package Extension / Overwrite Tests",
"homepage": "https://www.bootstrap-package.com",
"license": ["GPL-2.0-or-later"],
"keywords": ["TYPO3 CMS"],
"require": {
"bk2k/bootstrap-package": "*"
},
"autoload": {
"psr-4": {
"Bk2k\\DemoPackage\\": "Classes/"
}
},
"extra": {
"typo3/cms": {
"extension-key": "demo_package"
}
}
}
@@ -0,0 +1,32 @@
<?php
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
$EM_CONF[$_EXTKEY] = [
'title' => 'Demo Package',
'description' => '',
'category' => 'templates',
'constraints' => [
'depends' => [
'bootstrap_package' => '*',
],
],
'autoload' => [
'psr-4' => [
'BK2K\\DemoPackage\\' => 'Classes',
],
],
'state' => 'stable',
'uploadfolder' => 0,
'createDirs' => '',
'clearCacheOnLoad' => 1,
'author' => 'Benjamin Kott',
'author_email' => 'info@bk2k.info',
'author_company' => 'BK2K',
'version' => '1.0.0',
];
@@ -0,0 +1,10 @@
<?php
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
defined('TYPO3') or die('Access denied.');
@@ -0,0 +1,10 @@
<?php
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
defined('TYPO3') or die('Access denied.');
@@ -0,0 +1,20 @@
// Variables
$radius: 1rem;
$preCalculatedRadius: $radius / 2;
// Tests
.case-without-variable {
border-radius: 1rem / 2;
}
.case-with-variable {
border-radius: $radius / 2;
}
.case-precalculated-variable {
border-radius: $preCalculatedRadius / 2;
}
$width: 1rem;
button {
width: $width / 2;
border-radius: $width / 2;
}
@@ -0,0 +1,13 @@
.case-without-variable {
border-radius: 0.5rem;
}
.case-with-variable {
border-radius: 0.5rem;
}
.case-precalculated-variable {
border-radius: 0.25rem;
}
button {
width: 0.5rem;
border-radius: 0.5rem;
}
@@ -0,0 +1,46 @@
<?php declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Tests\Unit\Compiler;
use ScssPhp\ScssPhp\Compiler;
use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
/**
* Testcase for class \ScssPhp\ScssPhp\Compiler
*/
class ScssCompilerTest extends UnitTestCase
{
/**
* @param string $file
* @param string $expectedResultFile
* @dataProvider compileDataProvider
* @test
*/
public function compile(string $file, string $expectedResultFile): void
{
$scss = new Compiler();
$resultCss = $scss->compileString((string) file_get_contents(__DIR__ . '/' . $file), $file)->getCss();
$expectedCss = file_get_contents(__DIR__ . '/' . $expectedResultFile);
self::assertSame($expectedCss, $resultCss);
}
/**
* @return array
*/
public function compileDataProvider(): array
{
return [
'Calculation' => [
'Fixtures/Calculation/Input.scss',
'Fixtures/Calculation/Output.css'
]
];
}
}
@@ -0,0 +1,51 @@
<?php declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Tests\Unit\Utility;
use BK2K\BootstrapPackage\Utility\ExternalMediaUtility;
use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
/**
* Testcase for class \BK2K\BootstrapPackage\Utility\ExternalMediaUtility
*/
class ExternalMediaUtilityTest extends UnitTestCase
{
/**
* @param string $url
* @param string $class
* @param string $expectedResult
* @dataProvider getEmbedCodeDataProvider
* @test
*/
public function getEmbedCode(string $url, string $class, $expectedResult): void
{
self::assertSame($expectedResult, (new ExternalMediaUtility())->getEmbedCode($url, $class));
}
/**
* @return array
*/
public function getEmbedCodeDataProvider(): array
{
return [
'empty' => ['', '', null],
'www.youtube.com' => ['https://www.youtube.com/watch?v=zpOVYePk6mM', '', '<iframe src="https://www.youtube-nocookie.com/embed/zpOVYePk6mM" frameborder="0" allowfullscreen></iframe>'],
'youtube.com' => ['https://youtube.com/watch?v=zpOVYePk6mM', '', '<iframe src="https://www.youtube-nocookie.com/embed/zpOVYePk6mM" frameborder="0" allowfullscreen></iframe>'],
'www.youtu.be' => ['https://www.youtu.be/zpOVYePk6mM', '', '<iframe src="https://www.youtube-nocookie.com/embed/zpOVYePk6mM" frameborder="0" allowfullscreen></iframe>'],
'youtu.de' => ['https://youtu.be/zpOVYePk6mM', '', '<iframe src="https://www.youtube-nocookie.com/embed/zpOVYePk6mM" frameborder="0" allowfullscreen></iframe>'],
'vimeo' => ['https://vimeo.com/143018597', '', '<iframe src="https://player.vimeo.com/video/143018597" frameborder="0" allowfullscreen></iframe>'],
'www.youtube.com with class' => ['https://www.youtube.com/watch?v=zpOVYePk6mM', 'test', '<iframe class="test" src="https://www.youtube-nocookie.com/embed/zpOVYePk6mM" frameborder="0" allowfullscreen></iframe>'],
'youtube.com with class' => ['https://youtube.com/watch?v=zpOVYePk6mM', 'test', '<iframe class="test" src="https://www.youtube-nocookie.com/embed/zpOVYePk6mM" frameborder="0" allowfullscreen></iframe>'],
'www.youtu.be with class' => ['https://www.youtu.be/zpOVYePk6mM', 'test', '<iframe class="test" src="https://www.youtube-nocookie.com/embed/zpOVYePk6mM" frameborder="0" allowfullscreen></iframe>'],
'youtu.de with class' => ['https://youtu.be/zpOVYePk6mM', 'test', '<iframe class="test" src="https://www.youtube-nocookie.com/embed/zpOVYePk6mM" frameborder="0" allowfullscreen></iframe>'],
'vimeo with class' => ['https://vimeo.com/143018597', 'test', '<iframe class="test" src="https://player.vimeo.com/video/143018597" frameborder="0" allowfullscreen></iframe>'],
];
}
}