public static function referencesMany(Factory $factory, $name, array $config) { return function ($sequence = null) use($factory, $name, $config) { $value = $config['value']; $ids = array(); if (!$value) { $ids[] = DefaultGenerator::reference($factory, $config['class']); } elseif (is_numeric($value)) { for ($i = 0; $i < (int) $value; $i++) { $ids[] = DefaultGenerator::reference($factory, $config['class']); } } elseif (is_array($value)) { foreach ($value as $id) { $ids[] = DefaultGenerator::reference($factory, $config['class'], $id); } } else { throw new \InvalidArgumentException('Unexpected default value for referencesMany field'); } return $ids; }; }
public function testEmbeddedsMany() { $closure = DefaultGenerator::embeddedsMany($this->factory, 'test', array('class' => 'Model\\Source', 'value' => null)); $this->assertTrue(is_array(current($closure()))); $closure = DefaultGenerator::embeddedsMany($this->factory, 'test', array('class' => 'Model\\Source', 'value' => array(array('text'), array('name')))); $result = $closure(); $this->assertEquals(2, count($result)); $this->assertTrue(strlen($result[0]['text']) > 0); $this->assertTrue(strlen($result[1]['name']) > 0); $closure = DefaultGenerator::embeddedsMany($this->factory, 'test', array('class' => 'Model\\Source', 'value' => 3)); $result = $closure(); $this->assertEquals(3, count($result)); foreach ($result as $id) { $this->assertTrue(is_array($id)); } }