Scalr\Tests\Model\Entity\Collections\SettingsCollectionTest::testSaveOnlyModifiedSettings PHP 메소드

testSaveOnlyModifiedSettings() 공개 메소드

public testSaveOnlyModifiedSettings ( $entityId, $newSettings )
    public function testSaveOnlyModifiedSettings($entityId, $newSettings)
    {
        /* @var $entity TestEntity2 */
        $entity = TestEntity2::findPk($entityId);
        $composition = array_merge($entity->settings->getArrayCopy(), ...$newSettings);
        /* @var $entities TestEntity2[] */
        foreach ($newSettings as $idx => $settings) {
            $entities[$idx] = TestEntity2::findPk($entityId);
            //imitate reading properties
            $entity->settings->load();
        }
        foreach ($newSettings as $idx => $settings) {
            $entity = $entities[$idx];
            foreach ($settings as $name => $value) {
                $entity->settings[$name] = $value;
            }
            $entity->save();
        }
        $entity = TestEntity2::findPk($entityId);
        $settings = $entity->settings->getArrayCopy();
        foreach ($composition as $name => $value) {
            if ($value === false) {
                $this->assertArrayNotHasKey($name, $settings, "Setting '{$name}' not deleted");
            } else {
                $this->assertArrayHasKey($name, $settings, "Missed setting '{$name}'");
                $this->assertEquals($value, $settings[$name], "Setting '{$name}' has wrong value");
            }
        }
    }