diff --git a/src/Dev/Install/InstallConfig.php b/src/Dev/Install/InstallConfig.php index d36c7b47d..39c3f67fa 100644 --- a/src/Dev/Install/InstallConfig.php +++ b/src/Dev/Install/InstallConfig.php @@ -236,7 +236,7 @@ class InstallConfig 'lv_LV' => 'Latvian (Latvia)', 'lt_LT' => 'Lithuanian (Lithuania)', 'ms_MY' => 'Malay (Malaysia)', - 'mi_NZ' => 'Maori (New Zealand)', + 'mi_NZ' => 'Māori (New Zealand)', 'ne_NP' => 'Nepali (Nepal)', 'nb_NO' => 'Norwegian', 'fa_IR' => 'Persian (Iran)', diff --git a/src/Forms/CurrencyField_Disabled.php b/src/Forms/CurrencyField_Disabled.php index 26a5106f8..7e743755e 100644 --- a/src/Forms/CurrencyField_Disabled.php +++ b/src/Forms/CurrencyField_Disabled.php @@ -22,7 +22,7 @@ class CurrencyField_Disabled extends CurrencyField { if ($this->value) { $val = Convert::raw2xml($this->value); - $val = _t('SilverStripe\\Forms\\CurrencyField.CURRENCYSYMBOL', '$') . number_format(preg_replace('/[^0-9.]/', "", $val), 2); + $val = _t('SilverStripe\\Forms\\CurrencyField.CURRENCYSYMBOL', '$') . number_format(preg_replace('/[^0-9.-]/', "", $val), 2); $valforInput = Convert::raw2att($val); } else { $valforInput = ''; diff --git a/src/Forms/CurrencyField_Readonly.php b/src/Forms/CurrencyField_Readonly.php index 866c09c61..775b9eb6b 100644 --- a/src/Forms/CurrencyField_Readonly.php +++ b/src/Forms/CurrencyField_Readonly.php @@ -20,7 +20,7 @@ class CurrencyField_Readonly extends ReadonlyField { if ($this->value) { $val = Convert::raw2xml($this->value); - $val = _t('SilverStripe\\Forms\\CurrencyField.CURRENCYSYMBOL', '$') . number_format(preg_replace('/[^0-9.]/', "", $val), 2); + $val = _t('SilverStripe\\Forms\\CurrencyField.CURRENCYSYMBOL', '$') . number_format(preg_replace('/[^0-9.-]/', "", $val), 2); $valforInput = Convert::raw2att($val); } else { $val = '' . _t('SilverStripe\\Forms\\CurrencyField.CURRENCYSYMBOL', '$') . '0.00'; diff --git a/src/Forms/HTMLEditor/HTMLEditorSanitiser.php b/src/Forms/HTMLEditor/HTMLEditorSanitiser.php index 4d192c66d..1497e5f86 100644 --- a/src/Forms/HTMLEditor/HTMLEditorSanitiser.php +++ b/src/Forms/HTMLEditor/HTMLEditorSanitiser.php @@ -4,7 +4,6 @@ namespace SilverStripe\Forms\HTMLEditor; use DOMAttr; use DOMElement; -use DOMNode; use SilverStripe\Core\Injector\Injectable; use SilverStripe\View\Parsers\HTMLValue; use stdClass; @@ -122,8 +121,7 @@ class HTMLEditorSanitiser // Default value if ($prefix) { - // Default value - if ($prefix === '=') { + if ($prefix === '=') { // Default value $element->attributesDefault[$attrName] = $value; $attr->defaultValue = $value; } elseif ($prefix === ':') { diff --git a/src/ORM/Connect/PDOConnector.php b/src/ORM/Connect/PDOConnector.php index ca4cf309f..f3fbae164 100644 --- a/src/ORM/Connect/PDOConnector.php +++ b/src/ORM/Connect/PDOConnector.php @@ -176,9 +176,11 @@ class PDOConnector extends DBConnector if (!isset($charset)) { $charset = $connCharset; } - $options = array( - PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES ' . $charset . ' COLLATE ' . $connCollation - ); + + $options = []; + if ($parameters['driver'] === 'mysql') { + $options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES ' . $charset . ' COLLATE ' . $connCollation; + } // Set SSL options if they are defined if (array_key_exists('ssl_key', $parameters) && diff --git a/src/ORM/DataObjectSchema.php b/src/ORM/DataObjectSchema.php index 4724ce78e..4a13d968f 100644 --- a/src/ORM/DataObjectSchema.php +++ b/src/ORM/DataObjectSchema.php @@ -992,10 +992,10 @@ class DataObjectSchema if (is_array($manyManySpec)) { $toClass = $this->hasOneComponent($manyManySpec['through'], $manyManySpec['to']); if ($toClass === $parentClass) { - return $inverseComponentName; - } + return $inverseComponentName; } } + } return null; } diff --git a/src/View/Parsers/ShortcodeParser.php b/src/View/Parsers/ShortcodeParser.php index 146abb7b1..4e0c13a31 100644 --- a/src/View/Parsers/ShortcodeParser.php +++ b/src/View/Parsers/ShortcodeParser.php @@ -638,7 +638,6 @@ class ShortcodeParser */ public function parse($content) { - $this->extend('onBeforeParse', $content); $continue = true; diff --git a/tests/php/Control/DirectorTest.php b/tests/php/Control/DirectorTest.php index 0070f2a50..e6da8b089 100644 --- a/tests/php/Control/DirectorTest.php +++ b/tests/php/Control/DirectorTest.php @@ -30,8 +30,11 @@ class DirectorTest extends SapphireTest parent::setUp(); Director::config()->set('alternate_base_url', 'http://www.mysite.com:9090/'); - // Ensure redirects enabled on all environments - CanonicalURLMiddleware::singleton()->setEnabledEnvs(true); + // Ensure redirects enabled on all environments and global state doesn't affect the tests + CanonicalURLMiddleware::singleton() + ->setForceSSLDomain(null) + ->setForceSSLPatterns([]) + ->setEnabledEnvs(true); $this->expectedRedirect = null; } @@ -593,6 +596,7 @@ class DirectorTest extends SapphireTest }, 'http://www.mysite.com:9090/some-url'); // Middleware returns non-exception redirect + $this->assertInstanceOf(HTTPResponse::class, $response); $this->assertEquals('https://www.mysite.com:9090/some-url', $response->getHeader('Location')); $this->assertEquals(301, $response->getStatusCode()); } diff --git a/tests/php/Forms/EmailFieldTest.php b/tests/php/Forms/EmailFieldTest.php index 9eeaa4915..85733d8a6 100644 --- a/tests/php/Forms/EmailFieldTest.php +++ b/tests/php/Forms/EmailFieldTest.php @@ -67,23 +67,16 @@ class EmailFieldTest extends FunctionalTest * * @see SimpleTagBuilder::_createInputTag() */ - function testEmailFieldPopulation() + public function testEmailFieldPopulation() { - $this->get('EmailFieldTest_Controller'); - $this->submitForm( + + $response = $this->submitForm( 'Form_Form', null, - array( - 'Email' => 'test@test.com' - ) + ['Email' => 'test@test.com'] ); - $this->assertPartialMatchBySelector( - 'p.good', - array( - 'Test save was successful' - ) - ); + $this->assertContains('Test save was successful', $response->getBody()); } } diff --git a/tests/php/Forms/FormTest.php b/tests/php/Forms/FormTest.php index ab7a91367..ae7e1d7bd 100644 --- a/tests/php/Forms/FormTest.php +++ b/tests/php/Forms/FormTest.php @@ -2,33 +2,31 @@ namespace SilverStripe\Forms\Tests; +use SilverStripe\Control\Controller; +use SilverStripe\Control\HTTPRequest; use SilverStripe\Control\Session; -use SilverStripe\Core\Config\Config; +use SilverStripe\Dev\CSSContentParser; +use SilverStripe\Dev\FunctionalTest; +use SilverStripe\Forms\DateField; +use SilverStripe\Forms\FieldList; +use SilverStripe\Forms\FileField; +use SilverStripe\Forms\Form; +use SilverStripe\Forms\FormAction; +use SilverStripe\Forms\HeaderField; +use SilverStripe\Forms\LookupField; +use SilverStripe\Forms\NumericField; use SilverStripe\Forms\PasswordField; -use SilverStripe\Forms\Tests\FormTest\TestController; use SilverStripe\Forms\Tests\FormTest\ControllerWithSecurityToken; use SilverStripe\Forms\Tests\FormTest\ControllerWithStrictPostCheck; use SilverStripe\Forms\Tests\FormTest\Player; use SilverStripe\Forms\Tests\FormTest\Team; +use SilverStripe\Forms\Tests\FormTest\TestController; +use SilverStripe\Forms\TextareaField; +use SilverStripe\Forms\TextField; use SilverStripe\ORM\ValidationResult; use SilverStripe\Security\NullSecurityToken; -use SilverStripe\Security\Security; -use SilverStripe\Security\SecurityToken; use SilverStripe\Security\RandomGenerator; -use SilverStripe\Dev\CSSContentParser; -use SilverStripe\Dev\FunctionalTest; -use SilverStripe\Control\Controller; -use SilverStripe\Control\HTTPRequest; -use SilverStripe\Forms\TextField; -use SilverStripe\Forms\FieldList; -use SilverStripe\Forms\Form; -use SilverStripe\Forms\HeaderField; -use SilverStripe\Forms\TextareaField; -use SilverStripe\Forms\DateField; -use SilverStripe\Forms\NumericField; -use SilverStripe\Forms\LookupField; -use SilverStripe\Forms\FileField; -use SilverStripe\Forms\FormAction; +use SilverStripe\Security\SecurityToken; use SilverStripe\View\SSViewer; /** @@ -50,6 +48,8 @@ class FormTest extends FunctionalTest ControllerWithStrictPostCheck::class, ]; + protected static $disable_themes = true; + protected function setUp() { parent::setUp(); diff --git a/tests/php/Forms/GridField/GridFieldDetailFormTest.php b/tests/php/Forms/GridField/GridFieldDetailFormTest.php index 81d425867..9bc0226d8 100644 --- a/tests/php/Forms/GridField/GridFieldDetailFormTest.php +++ b/tests/php/Forms/GridField/GridFieldDetailFormTest.php @@ -2,20 +2,19 @@ namespace SilverStripe\Forms\Tests\GridField; -use SilverStripe\Dev\CSSContentParser; -use SilverStripe\Dev\Debug; -use SilverStripe\Dev\FunctionalTest; use SilverStripe\Control\Controller; -use SilverStripe\Forms\HiddenField; -use SilverStripe\Forms\GridField\GridFieldDetailForm; +use SilverStripe\Dev\CSSContentParser; +use SilverStripe\Dev\FunctionalTest; use SilverStripe\Forms\GridField\GridField; +use SilverStripe\Forms\GridField\GridFieldDetailForm; use SilverStripe\Forms\GridField\GridFieldDetailForm_ItemRequest; +use SilverStripe\Forms\HiddenField; use SilverStripe\Forms\Tests\GridField\GridFieldDetailFormTest\Category; use SilverStripe\Forms\Tests\GridField\GridFieldDetailFormTest\CategoryController; -use SilverStripe\Forms\Tests\GridField\GridFieldDetailFormTest\TestController; use SilverStripe\Forms\Tests\GridField\GridFieldDetailFormTest\GroupController; use SilverStripe\Forms\Tests\GridField\GridFieldDetailFormTest\PeopleGroup; use SilverStripe\Forms\Tests\GridField\GridFieldDetailFormTest\Person; +use SilverStripe\Forms\Tests\GridField\GridFieldDetailFormTest\TestController; /** * @skipUpgrade @@ -36,6 +35,8 @@ class GridFieldDetailFormTest extends FunctionalTest GroupController::class, ]; + protected static $disable_themes = true; + public function testValidator() { $this->logInWithPermission('ADMIN'); diff --git a/tests/php/Forms/LookupFieldTest.php b/tests/php/Forms/LookupFieldTest.php index c41b1b141..1f53a8234 100644 --- a/tests/php/Forms/LookupFieldTest.php +++ b/tests/php/Forms/LookupFieldTest.php @@ -5,90 +5,85 @@ namespace SilverStripe\Forms\Tests; use SilverStripe\ORM\DataObject; use SilverStripe\Dev\SapphireTest; use SilverStripe\Forms\LookupField; +use SilverStripe\Security\Member; class LookupFieldTest extends SapphireTest { - protected static $fixture_file = 'LookupFieldTest.yml'; public function testNullValueWithNumericArraySource() { $source = array(1 => 'one', 2 => 'two', 3 => 'three'); - $f = new LookupField('test', 'test', $source); - $f->setValue(null); + $field = new LookupField('test', 'test', $source); + $field->setValue(null); + $result = trim($field->Field()->getValue()); - $this->assertEquals( - '(none)', - trim($f->Field()->getValue()) - ); + $this->assertContains('(none)', $result); + $this->assertContains('', $result); } public function testStringValueWithNumericArraySource() { $source = array(1 => 'one', 2 => 'two', 3 => 'three'); - $f = new LookupField('test', 'test', $source); - $f->setValue(1); - $this->assertEquals( - 'one', - trim($f->Field()->getValue()) - ); + $field = new LookupField('test', 'test', $source); + $field->setValue(1); + $result = trim($field->Field()->getValue()); + $this->assertContains('one', $result); + $this->assertContains('', $result); } public function testUnknownStringValueWithNumericArraySource() { $source = array(1 => 'one', 2 => 'two', 3 => 'three'); - $f = new LookupField('test', 'test', $source); - $f->setValue('w00t'); - $this->assertEquals( - 'w00t', - trim($f->Field()->getValue()) - ); + $field = new LookupField('test', 'test', $source); + $field->setValue('w00t'); + $result = trim($field->Field()->getValue()); + + $this->assertContains('w00t', $result); + $this->assertContains('', $result); } public function testArrayValueWithAssociativeArraySource() { // Array values (= multiple selections) might be set e.g. from ListboxField $source = array('one' => 'one val', 'two' => 'two val', 'three' => 'three val'); - $f = new LookupField('test', 'test', $source); - $f->setValue(array('one','two')); - $this->assertEquals( - 'one val, two val' - . '', - trim($f->Field()->getValue()) - ); + $field = new LookupField('test', 'test', $source); + $field->setValue(array('one','two')); + $result = trim($field->Field()->getValue()); + + $this->assertContains('one val, two val', $result); + $this->assertContains('', $result); } public function testArrayValueWithNumericArraySource() { // Array values (= multiple selections) might be set e.g. from ListboxField $source = array(1 => 'one', 2 => 'two', 3 => 'three'); - $f = new LookupField('test', 'test', $source); - $f->setValue(array(1,2)); - $this->assertEquals( - 'one, two', - trim($f->Field()->getValue()) - ); + $field = new LookupField('test', 'test', $source); + $field->setValue(array(1,2)); + $result = trim($field->Field()->getValue()); + + $this->assertContains('one, two', $result); + $this->assertContains('', $result); } public function testArrayValueWithSqlMapSource() { - $member1 = $this->objFromFixture('SilverStripe\\Security\\Member', 'member1'); - $member2 = $this->objFromFixture('SilverStripe\\Security\\Member', 'member2'); - $member3 = $this->objFromFixture('SilverStripe\\Security\\Member', 'member3'); + $member1 = $this->objFromFixture(Member::class, 'member1'); + $member2 = $this->objFromFixture(Member::class, 'member2'); + $member3 = $this->objFromFixture(Member::class, 'member3'); - $source = DataObject::get('SilverStripe\\Security\\Member'); - $f = new LookupField('test', 'test', $source->map('ID', 'FirstName')); - $f->setValue(array($member1->ID, $member2->ID)); + $source = DataObject::get(Member::class); + $field = new LookupField('test', 'test', $source->map('ID', 'FirstName')); + $field->setValue(array($member1->ID, $member2->ID)); + $result = trim($field->Field()->getValue()); - $this->assertEquals( - sprintf( - 'member1, member2' - . '', - $member1->ID, - $member2->ID - ), - trim($f->Field()->getValue()) - ); + $this->assertContains('member1, member2', $result); + $this->assertContains(sprintf( + '', + $member1->ID, + $member2->ID + ), $result); } public function testWithMultiDimensionalSource() @@ -105,23 +100,17 @@ class LookupFieldTest extends SapphireTest ) ); - $f = new LookupField('test', 'test', $choices); - $f->setValue(3); + $field = new LookupField('test', 'test', $choices); + $field->setValue(3); + $result = trim($field->Field()->getValue()); - $this->assertEquals( - 'Carrots', - trim($f->Field()->getValue()) - ); + $this->assertContains('Carrots', $result); + $this->assertContains('', $result); - $f->setValue( - array( - 3, 9 - ) - ); + $field->setValue([3, 9]); + $result = trim($field->Field()->getValue()); - $this->assertEquals( - 'Carrots, Vegan', - trim($f->Field()->getValue()) - ); + $this->assertContains('Carrots, Vegan', $result); + $this->assertContains('', $result); } } diff --git a/tests/php/Forms/SelectionGroupTest.php b/tests/php/Forms/SelectionGroupTest.php index 3c1d3e441..82ba88520 100644 --- a/tests/php/Forms/SelectionGroupTest.php +++ b/tests/php/Forms/SelectionGroupTest.php @@ -58,6 +58,7 @@ class SelectionGroupTest extends SapphireTest $field->setValue('two'); $parser = new CSSContentParser($field->FieldHolder()); + $listEls = $parser->getBySelector('li'); $listElOne = $listEls[0]; $listElTwo = $listEls[1]; diff --git a/tests/php/Forms/TreeDropdownFieldTest.php b/tests/php/Forms/TreeDropdownFieldTest.php index dfc49bbce..5b5e22fd1 100644 --- a/tests/php/Forms/TreeDropdownFieldTest.php +++ b/tests/php/Forms/TreeDropdownFieldTest.php @@ -196,15 +196,17 @@ class TreeDropdownFieldTest extends SapphireTest public function testReadonly() { $field = new TreeDropdownField('TestTree', 'Test tree', File::class); - $asdf = $this->objFromFixture(File::class, 'asdf'); - $field->setValue($asdf->ID); + $fileMock = $this->objFromFixture(File::class, 'asdf'); + $field->setValue($fileMock->ID); $readonlyField = $field->performReadonlyTransformation(); - $this->assertEquals( - <<<"HTML" -<Special & characters> -HTML - , - (string)$readonlyField->Field() + $result = (string) $readonlyField->Field(); + $this->assertContains( + '<Special & characters>', + $result + ); + $this->assertContains( + '', + $result ); } } diff --git a/tests/php/ORM/DataObjectDuplicationTest/Dingo.php b/tests/php/ORM/DataObjectDuplicationTest/Dingo.php index 879ecbd5d..7be607386 100644 --- a/tests/php/ORM/DataObjectDuplicationTest/Dingo.php +++ b/tests/php/ORM/DataObjectDuplicationTest/Dingo.php @@ -30,4 +30,6 @@ class Dingo extends DataObject implements TestOnly private static $belongs_many_many = [ 'Parents' => Dingo::class, ]; + + private static $default_sort = '"ID" ASC'; }