laracasts / TestDummy

Easy factories for PHP integration testing.
https://laracasts.com/lessons/whats-new-in-testdummy
MIT License
456 stars 80 forks source link

Add a EloquentPivotModel database provider #100

Open devinfd opened 9 years ago

devinfd commented 9 years ago

I had a situation where I need to use a custom pivot model and I was not able to populate the associated table with TestDummy. This database provider just provides the user the ability to use TestDummy per normal as long as they set the EloquentPivotModel provider first and pass to it a parent of the pivot and the pivot table name.

Factory::$databaseProvider = new Laracasts\TestDummy\EloquentPivotModel(new Post, 'post_tags');
Factory::create('PostTag');

fyi: good info on custom pivot models can be found here https://github.com/laravel/framework/issues/2093#issuecomment-39154456

ps: you will notice in test/support/factories/factories that I've hard coded the post_id and tag_id 's values. This is because otherwise I was getting a Argument 1 passed to Illuminate\Database\Eloquent\Model::__construct() must be of the type array, object given, called in /Users/Locutus/Sites/TestDummy/src/EloquentPivotModel.php on line 81 and defined error when using 'factory:Post'. For some reason the Post factory was not being created and I got fed up with it. However it does work as expected in my production app.