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';
}