protected function buildModel($modelName, $modelAttributes = [])
{
$modelAttributes = $modelAttributes;
$mock = $this->mock($modelName);
$model = $this->fillMock($mock, $modelAttributes);
// $mock->shouldReceive('where->firstOrFail')->andReturn($model);
$mock->shouldReceive('where')->with('id', array_get($modelAttributes, 'id'))->andReturn($queryBuilder = m::mock());
$queryBuilder->shouldReceive('firstOrFail')->andReturn($model);
$mock->shouldReceive('save')->andReturn(true);
$mock->shouldReceive('fill')->with(m::type('array'))->andReturnUsing(function ($attributes) use($mock) {
$this->fillMock($mock, $attributes);
return $mock;
});
$models = collect();
$models->push($model);
$mock->shouldReceive('get')->andReturn($models);
$mock->shouldReceive('all')->andReturn($models);
return $model;
}