/** * Tests setting values. */ public function testSet() { $optionCategory = new OptionCategory(); // set category name $optionCategory->setName('hansolo'); $this->assertEquals('hansolo', $optionCategory->getName()); $optionCategory->setName(''); $this->assertTrue(empty($optionCategory->getName())); $optionCategory->setName('123'); $this->assertTrue('123' === $optionCategory->getName()); // set options $options = [new Option(), new Option(0, 'testV', 'string', 'elephant'), new Option(0, 'samba', 'array', [1, 2, 3])]; $optionCategory->setOptions($options); $this->assertEquals($options, $optionCategory->getOptions()); // set categories $categories = [new OptionCategory('testv1'), new OptionCategory('testv0')]; $optionCategory->setCategories($categories); $this->assertEquals($categories, $optionCategory->getCategories()); }
/** * Updates the options of the given category and returns the roles. * * @param OptionCategory $category * @param Form $form * * @return string[] */ private function updateOptions(OptionCategory $category, Form $form) { $categories = $category->getCategories(); $superCategoryName = $category->getName(); $roles = []; foreach ($categories as $category) { $categoryName = $category->getName(); $options = $category->getOptions(); foreach ($options as $option) { $optionName = $option->getName(); $optionType = $option->getType(); $fieldName = $superCategoryName . '_' . str_replace('.', '_', $categoryName) . '_' . $optionName; if (!$form->has($fieldName)) { // should be the case only for checkbox $fieldValue = false; } else { $fieldValue = $form->get($fieldName); } settype($fieldValue, $optionType); if ($optionType == 'boolean' && $fieldValue) { $roles[] = 'ROLE_' . strtoupper($superCategoryName) . '_' . strtoupper($categoryName) . '_' . strtoupper($optionName); } $option->setValue($fieldValue); } } return $roles; }