public function testLinkMethodCallsLinkRowsToFields() { $this->rowEditor->linkByQueryString('dewdrop_test_fruits', 'dewdrop_test_fruit_id'); /* @var $field \Dewdrop\Db\Field */ $field = $this->fields->get('dewdrop_test_fruits:name'); $this->assertFalse($field->hasRow()); $this->rowEditor->link(); $this->assertTrue($field->hasRow()); }
public function testAddingFieldWithDuplicateIdViaArrayInterfaceWithReplacePreviousField() { $field = new Field(); $field->setId('visible'); $newHash = spl_object_hash($field); $oldHash = spl_object_hash($this->fields->get('visible')); $this->assertEquals($oldHash, spl_object_hash($this->fields->get('visible'))); $this->fields['visible'] = $field; $this->assertEquals($newHash, spl_object_hash($this->fields->get('visible'))); $count = 0; /* @var $field Field */ foreach ($this->fields as $field) { if ('visible' === $field->getId()) { $count += 1; } } $this->assertEquals(1, $count); }
/** * Apply the filter to the supplied set of fields. In return, you'll end * up with a \Dewdrop\Fields\GroupedFields object that reflects the sort * order and grouping preferences contained in this filter. You can use * that object either as a normal \Dewdrop\Fields object or you can call * getGroups() on it to get the fields back in their assigned groups. * * @param Fields $currentFields * @return GroupedFields */ public function apply(Fields $currentFields) { if (!$this->loadedDbData) { $this->loadedDbData = $this->load(); } $groupedFields = new GroupedFields([], $currentFields->getUser()); foreach ($this->loadedDbData as $fieldConfig) { // Ungrouped fields come after grouped fields if (!$fieldConfig['group_id']) { continue; } $fieldId = $fieldConfig['field_id']; $groupId = $fieldConfig['group_id']; if ($currentFields->has($fieldId)) { if (!$groupedFields->hasGroup($groupId)) { $group = $groupedFields->addGroup($groupId); $group->setTitle($fieldConfig['group_title']); } $groupedFields->getGroup($groupId)->add($currentFields->get($fieldId)); } } $ungrouped = $groupedFields->addGroup('ungrouped'); $ungrouped->setTitle('Other'); foreach ($this->loadedDbData as $fieldConfig) { if (!$fieldConfig['group_id']) { $id = $fieldConfig['field_id']; if ($currentFields->has($id)) { $ungrouped->add($currentFields->get($id)); } } } foreach ($currentFields as $field) { if (!$groupedFields->has($field->getId())) { $ungrouped->add($field); } } return $groupedFields; }