LazyLoadingViolationSolutionProviderTest.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace Facade\Ignition\Tests\Solutions;
  3. use Exception;
  4. use Facade\Ignition\SolutionProviders\LazyLoadingViolationSolutionProvider;
  5. use Facade\Ignition\Tests\TestCase;
  6. use Illuminate\Database\LazyLoadingViolationException;
  7. use Illuminate\Foundation\Auth\User;
  8. class LazyLoadingViolationSolutionProviderTest extends TestCase
  9. {
  10. public function setUp(): void
  11. {
  12. parent::setUp();
  13. if (version_compare($this->app->version(), '8.43.0', '<')) {
  14. $this->markTestSkipped();
  15. }
  16. }
  17. /** @test */
  18. public function it_can_solve_lazy_loading_violations()
  19. {
  20. $canSolve = app(LazyLoadingViolationSolutionProvider::class)
  21. ->canSolve(new LazyLoadingViolationException(new User(), 'posts'));
  22. $this->assertTrue($canSolve);
  23. $canSolve = app(LazyLoadingViolationSolutionProvider::class)
  24. ->canSolve(new Exception('generic exception'));
  25. $this->assertFalse($canSolve);
  26. }
  27. public function it_can_provide_the_solution_for_lazy_loading_exceptions()
  28. {
  29. $solutions = app(LazyLoadingViolationSolutionProvider::class)
  30. ->getSolutions(new LazyLoadingViolationException(new User(), 'posts'));
  31. $this->assertCount(1, $solutions);
  32. }
  33. }