diff --git a/tests/Settings/BehaviorSettings/BehaviorSettingsTest.php b/tests/Settings/BehaviorSettings/BehaviorSettingsTest.php new file mode 100644 index 00000000..39ff65bd --- /dev/null +++ b/tests/Settings/BehaviorSettings/BehaviorSettingsTest.php @@ -0,0 +1,70 @@ +. + */ +namespace App\Tests\Settings\BehaviorSettings; + +use App\Settings\BehaviorSettings\BehaviorSettings; +use App\Settings\BehaviorSettings\KeybindingsSettings; +use App\Tests\SettingsTestHelper; +use PHPUnit\Framework\TestCase; + +final class BehaviorSettingsTest extends TestCase +{ + /** + * Test that BehaviorSettings has the keybindings property + */ + public function testHasKeybindingsProperty(): void + { + $settings = SettingsTestHelper::createSettingsDummy(BehaviorSettings::class); + + $reflection = new \ReflectionClass($settings); + $this->assertTrue($reflection->hasProperty('keybindings')); + } + + /** + * Test that keybindings property is nullable and of correct type + */ + public function testKeybindingsPropertyType(): void + { + $settings = SettingsTestHelper::createSettingsDummy(BehaviorSettings::class); + + $reflection = new \ReflectionClass($settings); + $property = $reflection->getProperty('keybindings'); + + $this->assertTrue($property->hasType()); + + $type = $property->getType(); + $this->assertInstanceOf(\ReflectionNamedType::class, $type); + $this->assertEquals(KeybindingsSettings::class, $type->getName()); + $this->assertTrue($type->allowsNull()); + } + + /** + * Test that keybindings property defaults to null + */ + public function testKeybindingsDefaultsToNull(): void + { + $settings = SettingsTestHelper::createSettingsDummy(BehaviorSettings::class); + + $this->assertNull($settings->keybindings); + } +} diff --git a/tests/Settings/BehaviorSettings/KeybindingsSettingsTest.php b/tests/Settings/BehaviorSettings/KeybindingsSettingsTest.php new file mode 100644 index 00000000..bd2a840d --- /dev/null +++ b/tests/Settings/BehaviorSettings/KeybindingsSettingsTest.php @@ -0,0 +1,77 @@ +. + */ +namespace App\Tests\Settings\BehaviorSettings; + +use App\Settings\BehaviorSettings\KeybindingsSettings; +use App\Tests\SettingsTestHelper; +use PHPUnit\Framework\TestCase; + +final class KeybindingsSettingsTest extends TestCase +{ + /** + * Test that the default value for enableSpecialCharacters is true + */ + public function testDefaultValueIsTrue(): void + { + $settings = SettingsTestHelper::createSettingsDummy(KeybindingsSettings::class); + + $this->assertTrue($settings->enableSpecialCharacters); + } + + /** + * Test that enableSpecialCharacters can be set to false + */ + public function testCanBeDisabled(): void + { + $settings = SettingsTestHelper::createSettingsDummy(KeybindingsSettings::class); + $settings->enableSpecialCharacters = false; + + $this->assertFalse($settings->enableSpecialCharacters); + } + + /** + * Test that enableSpecialCharacters can be set to true + */ + public function testCanBeEnabled(): void + { + $settings = SettingsTestHelper::createSettingsDummy(KeybindingsSettings::class); + $settings->enableSpecialCharacters = false; + $settings->enableSpecialCharacters = true; + + $this->assertTrue($settings->enableSpecialCharacters); + } + + /** + * Test that the settings class has the correct type for enableSpecialCharacters + */ + public function testPropertyTypeIsBool(): void + { + $settings = SettingsTestHelper::createSettingsDummy(KeybindingsSettings::class); + + $reflection = new \ReflectionClass($settings); + $property = $reflection->getProperty('enableSpecialCharacters'); + + $this->assertTrue($property->hasType()); + $this->assertEquals('bool', $property->getType()->getName()); + } +}