Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View filipfilipovich's full-sized avatar

Filip Filipovic filipfilipovich

  • Croatia
View GitHub Profile
@filipfilipovich
filipfilipovich / BooksEndpointTest.php
Created May 26, 2023 12:28
Books API endpoint test file
<?php
use App\Models\Book;
const API_ENDPOINT = '/api/books';
uses()->group('books'); // Assign 'books' group to all tests (whole file)
beforeEach(function () {
$this->mockBooksCollection = Book::factory(5)->create(); // Generate mock database entries for testing
@filipfilipovich
filipfilipovich / BookRepositoryTest.php
Created May 26, 2023 12:22
BookRepository test file
<?php
use App\Models\Book;
use App\Repositories\BookRepository;
beforeEach(function () {
$this->mockParameters = ['author' => 'Max Minimal'];
$this->mockBooksCollection = Book::factory(5)->create($this->mockParameters);
$this->bookRepository = new BookRepository();
});
@filipfilipovich
filipfilipovich / Pest.php
Created May 26, 2023 11:54
Pest configuration file
<?php
uses(
Tests\TestCase::class,
Illuminate\Foundation\Testing\RefreshDatabase::class,
)->in('Unit', 'Feature');
@filipfilipovich
filipfilipovich / api.php
Created May 26, 2023 11:40
API routes file (routes/api.php)
<?php
use App\Http\Controllers\GetBookByIsbnController;
use App\Http\Controllers\GetBooksController;
use Illuminate\Support\Facades\Route;
Route::get('/books', GetBooksController::class);
Route::get('/books/{isbn}', GetBookByIsbnController::class)->where('isbn', '[0-9]{10,13}');
@filipfilipovich
filipfilipovich / GetBookByIsbnController.php
Created May 26, 2023 11:29
GetBookByIsbnController class
<?php
namespace App\Http\Controllers;
use App\Repositories\BookRepository;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
class GetBookByIsbnController extends Controller
{
@filipfilipovich
filipfilipovich / GetBooksController.php
Created May 26, 2023 11:27
GetBooksController class
<?php
namespace App\Http\Controllers;
use App\Repositories\BookRepository;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
class GetBooksController extends Controller
{
@filipfilipovich
filipfilipovich / BookRepository.php
Created May 26, 2023 10:47
BookRepository class
<?php
declare(strict_types=1);
namespace App\Repositories;
use App\Models\Book;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
@filipfilipovich
filipfilipovich / BookFactory.php
Created May 26, 2023 10:25
BookFactory class
<?php
namespace Database\Factories;
use App\Models\Book;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends Factory<Book>
*/
@filipfilipovich
filipfilipovich / Book.php
Created May 26, 2023 10:22
Book model class
<?php
namespace App\Models;
use DateTimeInterface;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/**
* App\Models\Book
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*/