Skip to content

Instantly share code, notes, and snippets.

@MarkBaker
Created December 2, 2016 00:49
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MarkBaker/7dd4bd939a0f3f4809970443fdc99cb0 to your computer and use it in GitHub Desktop.
Save MarkBaker/7dd4bd939a0f3f4809970443fdc99cb0 to your computer and use it in GitHub Desktop.
<?php
class evidenceController {
public function getDetails($id){
$course = Course::with(['courseType'])
->checkEstablishmentOnView()
->excludeArchived()
->findOrFail($id);
$view = View::make('courses/parts/details')
->with('course', $course);
return Response::json(['html' => $view->render()]);
}
}
@taylorotwell
Copy link

You need to split this into two tests. Inject a repository into the controller with a single method that performs this query which you can easily Mock, then test the repository itself with an actual database call.

class EvidenceController
{
    public function __construct(CourseRepository $courses)
    {
          $this->courses = $courses;
    }

    public function getDetails($id)
    {
        $course = $this->courses->getDetails($id);
        $view = View::make('etc');
    }
}
// In Test...

$courses = Mockery::mock('CourseRepository');
$courses->shouldReceive('getDetails')->with('1')->andReturn($something);
$this->app->instance(CourseRepository::class, $courses);

$this->post('/evidence/details/1');

@yogasukma
Copy link

hi @MarkBaker i interested in your code, i knew it just sample, but what is ->checkEstablishmentOnView()->excludeArchived() ? i usually use something like that just for accessor and mutator. can i see sample of that model to learn what you did with it?

@sailingdeveloper
Copy link

@ysupr he is probably using Eloquent Scopes. Look it up in the documentation, it's quite handy :)

@ramirezd42
Copy link

@taylorotwell you are only showing an example the first test you describe correct? Or am i misunderstanding. How do you go about testing the acual database call?

Copy link

ghost commented Dec 2, 2016

@ramirezd42 With integration tests instead of unit tests.

@martinbean
Copy link

martinbean commented Dec 6, 2016

Returning a HTML blob in a JSON response?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment