/** * @param string $className * @param Blueprint $blueprint * @param array $attributeOverrides * @return object */ public function make($className, Blueprint $blueprint, $attributeOverrides) { $instance = new $className(); $attributes = $attributeOverrides; $sequences = array(); if (!empty($attributes[':sequences'])) { $sequences = $attributes[':sequences']; unset($attributes[':sequences']); } $sequences = $sequences + $blueprint->getSequences(); $this->withSequences($instance, $sequences); $attributes = $attributes + $blueprint->getAttributes(); $this->withAttributes($instance, $attributes); return $instance; }
public function testSetSequencesAndGetSequences() { $sequences = array(1, 2, 3); $this->blueprint->setSequences($sequences); $this->assertEquals($sequences, $this->blueprint->getSequences()); }
public function testMakeWithVariousAttributes() { $className = 'stdClass'; $attributes = array('attribute' => 'Mindaugas', 'attributeOverride' => 'Bujanauskas', 'attributeLazy' => function () { return 'Short'; }, 'attributeLazyOverride' => function () { return 'Time is very precious'; }); $sequences = array('sequence' => function ($i) { return $i; }, 'sequenceOverride' => function () { return 'Override me'; }); $attributeOverrides = array('attributeOverride' => 'MindaugasBujanauskas', 'attributeLazyOverride' => function () { return 'Diff'; }, ':sequences' => array('sequenceOverride' => function ($i) { return "Instance #{$i}"; })); $blueprint = new Blueprint(); $blueprint->setAttributes($attributes); $blueprint->setSequences($sequences); $instance = $this->runner->make($className, $blueprint, $attributeOverrides); $this->assertInstanceOf($className, $instance); $this->assertEquals($attributes['attribute'], $instance->attribute); $this->assertEquals('Short', $instance->attributeLazy); $this->assertEquals(1, $instance->sequence); $this->assertEquals($attributeOverrides['attributeOverride'], $instance->attributeOverride); $this->assertEquals('Diff', $instance->attributeLazyOverride); $this->assertEquals('Instance #1', $instance->sequenceOverride); }