public function testDefineAndAssociationAndTraits() { Fabricate::define(['trait' => 'published'], ['published' => '1']); Fabricate::define(['PublishedPost', 'class' => 'Post'], function ($data, $world) { $world->traits('published'); return ['title' => $world->sequence('title', function ($i) { return "Title{$i}"; })]; }); $results = Fabricate::create('User', function ($data, $world) { return ['user' => 'taro', 'Post' => Fabricate::association('PublishedPost', 3, ['id' => false, 'author_id' => false])]; }); $this->assertEquals('taro', $results['User']['user']); $this->assertEquals(['1', '1', '1'], array_map(function ($post) { return $post['published']; }, $results['User']['Post'])); $this->assertEquals(['Title1', 'Title2', 'Title3'], array_map(function ($post) { return $post['title']; }, $results['User']['Post'])); }