setUpDB(); $this->repository = $this->container->get(SystemConfigRepository::class); } public function testFindAll(): void { // Initially the repository should be empty $this->assertCount(0, $this->repository->findAll()); // Create some config entries $config1 = new SystemConfig('key1', 'value1'); $config2 = new SystemConfig('key2', 'value2'); // Save them to the repository $this->repository->save($config1); $this->repository->save($config2); // Now findAll should return both configs $configs = $this->repository->findAll(); $this->assertCount(2, $configs); $this->assertContainsOnlyInstancesOf(SystemConfig::class, $configs); } public function testFind(): void { // Create a config $config = new SystemConfig('key1', 'value1'); $this->repository->save($config); // Get the ID $id = $config->getId(); $this->assertNotNull($id); // Find by ID $foundConfig = $this->repository->find($id); $this->assertInstanceOf(SystemConfig::class, $foundConfig); $this->assertEquals('key1', $foundConfig->getKey()); $this->assertEquals('value1', $foundConfig->getValue()); // Try to find a non-existent ID $nonExistentId = 9999; $this->assertNull($this->repository->find($nonExistentId)); } public function testFindByKey(): void { // Create some configs $config1 = new SystemConfig('key1', 'value1'); $config2 = new SystemConfig('key2', 'value2'); // Save them to the repository $this->repository->save($config1); $this->repository->save($config2); // Find by key $foundConfig = $this->repository->findByKey('key1'); $this->assertInstanceOf(SystemConfig::class, $foundConfig); $this->assertEquals('key1', $foundConfig->getKey()); $this->assertEquals('value1', $foundConfig->getValue()); // Try to find a non-existent key $this->assertNull($this->repository->findByKey('nonexistent')); } public function testGetValue(): void { // Create a config $config = new SystemConfig('key1', 'value1'); $this->repository->save($config); // Get value by key $value = $this->repository->getValue('key1'); $this->assertEquals('value1', $value); // Get value for a non-existent key (should return default) $value = $this->repository->getValue('nonexistent', 'default'); $this->assertEquals('default', $value); } public function testSetValue(): void { // Initially the repository should be empty $this->assertCount(0, $this->repository->findAll()); // Set a value for a new key $this->repository->setValue('key1', 'value1'); // Check that a new config was created $configs = $this->repository->findAll(); $this->assertCount(1, $configs); $config = $configs[0]; $this->assertEquals('key1', $config->getKey()); $this->assertEquals('value1', $config->getValue()); // Set a value for an existing key $this->repository->setValue('key1', 'updated'); // Check that the value was updated $config = $this->repository->findByKey('key1'); $this->assertInstanceOf(SystemConfig::class, $config); $this->assertEquals('key1', $config->getKey()); $this->assertEquals('updated', $config->getValue()); } public function testSave(): void { // Create a config $config = new SystemConfig('key1', 'value1'); // Save it $this->repository->save($config); // Check that it was saved $id = $config->getId(); $this->assertNotNull($id); // Find it by ID to confirm it's in the database $foundConfig = $this->repository->find($id); $this->assertInstanceOf(SystemConfig::class, $foundConfig); $this->assertEquals('key1', $foundConfig->getKey()); $this->assertEquals('value1', $foundConfig->getValue()); // Update it $config->setValue('updated'); $this->repository->save($config); // Find it again to confirm the update $foundConfig = $this->repository->find($id); $this->assertEquals('updated', $foundConfig->getValue()); } public function testRemove(): void { // Create a config $config = new SystemConfig('key1', 'value1'); $this->repository->save($config); // Get the ID $id = $config->getId(); $this->assertNotNull($id); // Remove it $this->repository->remove($config); // Try to find it by ID to confirm it's gone $this->assertNull($this->repository->find($id)); } }