PluginRegistryContractTestBase
The registry contract, executable: every implementation (in-memory, file, and the host's database adapter) must pass exactly these behaviors.
PluginRegistryContractTestBase::testFindReturnsNullWhenUnknownAndTheRecordOnceRegistered()
public function testFindReturnsNullWhenUnknownAndTheRecordOnceRegistered(): voidfind() returns null for an unknown name and the full record once registered.
PluginRegistryContractTestBase::testRegisterRefusesADuplicateName()
public function testRegisterRefusesADuplicateName(): voidregister() refuses a duplicate plugin name.
PluginRegistryContractTestBase::testEnabledNamesListsOnlyEnabledPlugins()
public function testEnabledNamesListsOnlyEnabledPlugins(): voidenabledNames() lists only the plugins whose enabled flag is on.
PluginRegistryContractTestBase::testInstalledAndEnabledFiltersBothFlags()
public function testInstalledAndEnabledFiltersBothFlags(): voidinstalled() keeps every registered record; installedAndEnabled() requires both flags.
PluginRegistryContractTestBase::testSetEnabledFlipsTheFlagAndThrowsOnUnknown()
public function testSetEnabledFlipsTheFlagAndThrowsOnUnknown(): voidsetEnabled() flips the flag in place and throws for an unknown name.
PluginRegistryContractTestBase::testSaveOverwritesAndThrowsOnUnknown()
public function testSaveOverwritesAndThrowsOnUnknown(): voidsave() overwrites an existing record and throws for an unknown name.
PluginRegistryContractTestBase::testUnregisterRemovesAndIsIdempotent()
public function testUnregisterRemovesAndIsIdempotent(): voidunregister() removes the record and is a no-op the second time.