API phpunit 9 support

This commit is contained in:
Steve Boyd 2021-11-02 14:48:12 +13:00
parent 8da0f2c2cc
commit 752803148d
14 changed files with 42 additions and 36 deletions

View File

@ -11,8 +11,8 @@ env:
jobs: jobs:
include: include:
- php: 7.3 - php: 7.3
env: # SUBSITES env:
- DB=MYSQL - DB=MYSQL
- REQUIRE_INSTALLER=4.x-dev - REQUIRE_INSTALLER=4.x-dev
- PHPUNIT_TEST=1 - PHPUNIT_TEST=1
- REQUIRE_EXTRA="symbiote/silverstripe-queuedjobs:^4.0 silverstripe/subsites:2.3.x-dev" - REQUIRE_EXTRA="symbiote/silverstripe-queuedjobs:^4 silverstripe/subsites:^2"

View File

@ -21,8 +21,8 @@
} }
], ],
"require": { "require": {
"php": ">=7.1", "php": "^7.3 || ^8.0",
"silverstripe/framework": "^4.0", "silverstripe/framework": "^4.10",
"monolog/monolog": "~1.15", "monolog/monolog": "~1.15",
"ptcinc/solr-php-client": "^1.0", "ptcinc/solr-php-client": "^1.0",
"symfony/process": "^3.2", "symfony/process": "^3.2",
@ -30,7 +30,7 @@
}, },
"require-dev": { "require-dev": {
"silverstripe/cms": "^4.0", "silverstripe/cms": "^4.0",
"sminnee/phpunit": "^5.7", "phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "^3.0" "squizlabs/php_codesniffer": "^3.0"
}, },
"autoload": { "autoload": {

View File

@ -1,7 +1,9 @@
<phpunit bootstrap="vendor/silverstripe/cms/tests/bootstrap.php" colors="true"> <phpunit bootstrap="vendor/silverstripe/cms/tests/bootstrap.php" colors="true">
<testsuite name="Default"> <testsuites>
<directory>tests/</directory> <testsuite name="Default">
</testsuite> <directory>tests/</directory>
</testsuite>
</testsuites>
<filter> <filter>
<whitelist addUncoveredFilesFromWhitelist="true"> <whitelist addUncoveredFilesFromWhitelist="true">

View File

@ -42,7 +42,7 @@ class BatchedProcessorTest extends SapphireTest
], ],
]; ];
public static function setUpBeforeClass() public static function setUpBeforeClass(): void
{ {
// Disable illegal extensions if skipping this test // Disable illegal extensions if skipping this test
if (class_exists(Subsite::class) || !interface_exists(QueuedJob::class)) { if (class_exists(Subsite::class) || !interface_exists(QueuedJob::class)) {
@ -51,7 +51,7 @@ class BatchedProcessorTest extends SapphireTest
parent::setUpBeforeClass(); parent::setUpBeforeClass();
} }
protected function setUp() protected function setUp(): void
{ {
parent::setUp(); parent::setUp();
@ -82,7 +82,7 @@ class BatchedProcessorTest extends SapphireTest
SearchUpdater::$processor = new SearchUpdateQueuedJobProcessor(); SearchUpdater::$processor = new SearchUpdateQueuedJobProcessor();
} }
protected function tearDown() protected function tearDown(): void
{ {
if ($this->oldProcessor) { if ($this->oldProcessor) {
SearchUpdater::$processor = $this->oldProcessor; SearchUpdater::$processor = $this->oldProcessor;

View File

@ -21,7 +21,7 @@ class SearchUpdaterTest extends SapphireTest
private static $index = null; private static $index = null;
protected function setUp() protected function setUp(): void
{ {
parent::setUp(); parent::setUp();
@ -43,6 +43,7 @@ class SearchUpdaterTest extends SapphireTest
{ {
$item = new SearchUpdaterTest_Container(); $item = new SearchUpdaterTest_Container();
$item->write(); $item->write();
$this->assertTrue(true);
// TODO: Make sure changing field1 updates item. // TODO: Make sure changing field1 updates item.
// TODO: Get updating just field2 to not update item (maybe not possible - variants complicate) // TODO: Get updating just field2 to not update item (maybe not possible - variants complicate)

View File

@ -18,13 +18,13 @@ class SearchVariantSubsiteTest extends SapphireTest
{ {
private static $index = null; private static $index = null;
protected function setUp() protected function setUp(): void
{ {
parent::setUp(); parent::setUp();
// Check versioned available // Check versioned available
if (!class_exists(Subsite::class)) { if (!class_exists(Subsite::class)) {
return $this->markTestSkipped('The subsites module is not installed'); $this->markTestSkipped('The subsites module is not installed');
} }
if (self::$index === null) { if (self::$index === null) {

View File

@ -27,7 +27,7 @@ class SearchVariantVersionedTest extends SapphireTest
SearchVariantVersionedTest_Item::class SearchVariantVersionedTest_Item::class
); );
protected function setUp() protected function setUp(): void
{ {
parent::setUp(); parent::setUp();

View File

@ -15,7 +15,7 @@ class SearchableServiceTest extends SapphireTest
protected $usesDatabase = true; protected $usesDatabase = true;
public function setup() protected function setUp(): void
{ {
parent::setup(); parent::setup();
SearchableService::singleton()->clearCache(); SearchableService::singleton()->clearCache();

View File

@ -37,7 +37,7 @@ class SolrIndexSubsitesTest extends SapphireTest
protected $server = null; protected $server = null;
protected function setUp() protected function setUp(): void
{ {
// Prevent parent::setUp() crashing on db build // Prevent parent::setUp() crashing on db build
if (!class_exists(Subsite::class)) { if (!class_exists(Subsite::class)) {
@ -64,7 +64,7 @@ class SolrIndexSubsitesTest extends SapphireTest
SearchUpdater::clear_dirty_indexes(); SearchUpdater::clear_dirty_indexes();
} }
protected function tearDown() protected function tearDown(): void
{ {
if ($this->server) { if ($this->server) {
$_SERVER = $this->server; $_SERVER = $this->server;
@ -221,6 +221,9 @@ class SolrIndexSubsitesTest extends SapphireTest
public function testCorrectSubsiteIDOnFileWrite() public function testCorrectSubsiteIDOnFileWrite()
{ {
$subsiteIDs = ['0'] + $this->allFixtureIDs(Subsite::class); $subsiteIDs = ['0'] + $this->allFixtureIDs(Subsite::class);
$subsiteIDs = array_map(function ($v) {
return (string) $v;
}, $subsiteIDs);
$mockWrites = [ $mockWrites = [
'35910:File:a:0:{}' => [ '35910:File:a:0:{}' => [
'base' => File::class, 'base' => File::class,
@ -253,7 +256,7 @@ class SolrIndexSubsitesTest extends SapphireTest
$this->assertCount(count($subsiteIDs), $mockWrite['statefulids']); $this->assertCount(count($subsiteIDs), $mockWrite['statefulids']);
foreach ($mockWrite['statefulids'] as $statefulIDs) { foreach ($mockWrite['statefulids'] as $statefulIDs) {
$this->assertContains( $this->assertContains(
$statefulIDs['state'][SearchVariantSubsites::class], (string) $statefulIDs['state'][SearchVariantSubsites::class],
$subsiteIDs, $subsiteIDs,
sprintf( sprintf(
'Failed to assert that %s is in list of valid subsites: %s', 'Failed to assert that %s is in list of valid subsites: %s',

View File

@ -4,6 +4,7 @@ namespace SilverStripe\FullTextSearch\Tests;
use Apache_Solr_Document; use Apache_Solr_Document;
use Page; use Page;
use PHPUnit\Framework\MockObject\MockObject;
use SilverStripe\Assets\File; use SilverStripe\Assets\File;
use SilverStripe\CMS\Model\SiteTree; use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Core\Config\Config; use SilverStripe\Core\Config\Config;
@ -143,7 +144,7 @@ class SolrIndexTest extends SapphireTest
*/ */
public function testBoostedQuery() public function testBoostedQuery()
{ {
/** @var Solr3Service|PHPUnit_Framework_MockObject_MockObject $serviceMock */ /** @var Solr3Service|MockObject $serviceMock */
$serviceMock = $this->getMockBuilder(Solr3Service::class) $serviceMock = $this->getMockBuilder(Solr3Service::class)
->setMethods(['search']) ->setMethods(['search'])
->getMock(); ->getMock();
@ -179,7 +180,7 @@ class SolrIndexTest extends SapphireTest
Config::modify()->set(SearchVariantSubsites::class, 'enabled', false); Config::modify()->set(SearchVariantSubsites::class, 'enabled', false);
} }
/** @var Solr3Service|PHPUnit_Framework_MockObject_MockObject $serviceMock */ /** @var Solr3Service|MockObject $serviceMock */
$serviceMock = $this->getMockBuilder(Solr3Service::class) $serviceMock = $this->getMockBuilder(Solr3Service::class)
->setMethods(['search']) ->setMethods(['search'])
->getMock(); ->getMock();
@ -336,11 +337,11 @@ class SolrIndexTest extends SapphireTest
$index->addStoredField('Field1'); $index->addStoredField('Field1');
$index->addFulltextField('Field2'); $index->addFulltextField('Field2');
$schema = $index->getFieldDefinitions(); $schema = $index->getFieldDefinitions();
$this->assertContains( $this->assertStringContainsString(
"<field name='" . SearchUpdaterTest_Container::class . "_Field1' type='text' indexed='true' stored='true'", "<field name='" . SearchUpdaterTest_Container::class . "_Field1' type='text' indexed='true' stored='true'",
$schema $schema
); );
$this->assertContains( $this->assertStringContainsString(
"<field name='" . SearchUpdaterTest_Container::class . "_Field2' type='text' indexed='true' stored='false'", "<field name='" . SearchUpdaterTest_Container::class . "_Field2' type='text' indexed='true' stored='false'",
$schema $schema
); );
@ -350,11 +351,11 @@ class SolrIndexTest extends SapphireTest
$index2->addAllFulltextFields(); $index2->addAllFulltextFields();
$index2->addStoredField('Field2'); $index2->addStoredField('Field2');
$schema2 = $index2->getFieldDefinitions(); $schema2 = $index2->getFieldDefinitions();
$this->assertContains( $this->assertStringContainsString(
"<field name='" . SearchUpdaterTest_Container::class . "_Field1' type='text' indexed='true' stored='false'", "<field name='" . SearchUpdaterTest_Container::class . "_Field1' type='text' indexed='true' stored='false'",
$schema2 $schema2
); );
$this->assertContains( $this->assertStringContainsString(
"<field name='" . SearchUpdaterTest_Container::class . "_Field2' type='text' indexed='true' stored='true'", "<field name='" . SearchUpdaterTest_Container::class . "_Field2' type='text' indexed='true' stored='true'",
$schema2 $schema2
); );

View File

@ -36,7 +36,7 @@ class SolrIndexVersionedTest extends SapphireTest
SolrIndexVersionedTest_Object::class, SolrIndexVersionedTest_Object::class,
]; ];
protected function setUp() protected function setUp(): void
{ {
// Need to be set before parent::setUp() since they're executed before the tests start // Need to be set before parent::setUp() since they're executed before the tests start
Config::modify()->set(SearchVariantSubsites::class, 'enabled', false); Config::modify()->set(SearchVariantSubsites::class, 'enabled', false);
@ -58,7 +58,7 @@ class SolrIndexVersionedTest extends SapphireTest
Versioned::set_stage(Versioned::DRAFT); Versioned::set_stage(Versioned::DRAFT);
} }
protected function tearDown() protected function tearDown(): void
{ {
Versioned::set_reading_mode($this->oldMode); Versioned::set_reading_mode($this->oldMode);
parent::tearDown(); parent::tearDown();

View File

@ -46,13 +46,13 @@ class SolrReindexQueuedTest extends SapphireTest
*/ */
protected $service = null; protected $service = null;
protected function setUp() protected function setUp(): void
{ {
parent::setUp(); parent::setUp();
if (!interface_exists(QueuedJob::class)) { if (!interface_exists(QueuedJob::class)) {
$this->skipTest = true; $this->skipTest = true;
return $this->markTestSkipped("These tests need the QueuedJobs module installed to run"); $this->markTestSkipped("These tests need the QueuedJobs module installed to run");
} }
// Set queued handler for reindex // Set queued handler for reindex
@ -106,7 +106,7 @@ class SolrReindexQueuedTest extends SapphireTest
return $serviceMock; return $serviceMock;
} }
protected function tearDown() protected function tearDown(): void
{ {
FullTextSearch::force_index_list(); FullTextSearch::force_index_list();
SolrReindexTest_Variant::disable(); SolrReindexTest_Variant::disable();

View File

@ -57,7 +57,7 @@ class SolrReindexTest extends SapphireTest
*/ */
protected $service = null; protected $service = null;
protected function setUp() protected function setUp(): void
{ {
parent::setUp(); parent::setUp();
@ -111,7 +111,7 @@ class SolrReindexTest extends SapphireTest
return $serviceMock->getMock(); return $serviceMock->getMock();
} }
protected function tearDown() protected function tearDown(): void
{ {
FullTextSearch::force_index_list(); FullTextSearch::force_index_list();
SolrReindexTest_Variant::disable(); SolrReindexTest_Variant::disable();
@ -259,7 +259,8 @@ class SolrReindexTest extends SapphireTest
// Test that items in this variant / group are re-indexed // Test that items in this variant / group are re-indexed
// 120 divided into 6 groups should be 20 at least (max 21) // 120 divided into 6 groups should be 20 at least (max 21)
$this->assertEquals(21, count($ids), 'Group size is about 20', 1); $c = count($ids);
$this->assertTrue($c === 20 || $c === 21, 'Group size is about 20');
foreach ($ids as $id) { foreach ($ids as $id) {
// Each id should be % 6 == 2 // Each id should be % 6 == 2
$this->assertEquals(2, $id % 6, "ID $id Should match pattern ID % 6 = 2"); $this->assertEquals(2, $id % 6, "ID $id Should match pattern ID % 6 = 2");

View File

@ -117,11 +117,9 @@ class SolrWritersTest extends SapphireTest
$this->assertEquals(' OR ', $adapter->getConjunctionFor(SearchCriteria::CONJUNCTION_OR)); $this->assertEquals(' OR ', $adapter->getConjunctionFor(SearchCriteria::CONJUNCTION_OR));
} }
/**
* @expectedException InvalidArgumentException
*/
public function testConjunctionFailure() public function testConjunctionFailure()
{ {
$this->expectException(\InvalidArgumentException::class);
$adapter = new SolrSearchAdapter(); $adapter = new SolrSearchAdapter();
$adapter->getConjunctionFor('FAIL'); $adapter->getConjunctionFor('FAIL');
} }