alnutile/fixtures

Help with saving and getting JSON files for testing APIs
8,490
Install
composer require alnutile/fixtures
Latest Version:0.0.4
PHP:^8.1
Laravel:9 · 10
License:MIT
Last Updated:Apr 23, 2024
Links: GitHub  ·  Packagist
Maintainer: alnutile

Fixture Getter and Setter for API or DTO testing

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

TL;DR

For writing tests and mocking Http responses using files saved in my tests/fixtures folder. Yes some people hit the real API and this has it's place but when working with APIs it is nice and faster not to hit the API for a lot of reasons.

Overview

For all my projects that talk to APIs I will save copies of the API results to my tests folder and use that data to test against.

For example if I GET "https://foo.com/api/bar" and get back:

{
    "baz": "boo"
}

Then I save that as a file to my tests/fixtures/foo_get_response.json

Then in my test I will mock it with Http or other tool

$data = get_fixture('foo_get_response.json')
Http::fake(
    [
        'foo.com/*' => Http::response($data, 200)
    ]
);

Before I had this helper I would have to write this all out:

$data = File::get(base_path(sprintf(
            'tests/fixtures/%s',
            $file_name
        )));

$data = json_decode($results, true);

Installation

You can install the package via composer:

composer require alnutile/fixtures

Then (since I can not figure out a way around this) add it to your composer.json file:

    "autoload": {
        "psr-4": {
            "App\\": "app/",
            //some stuff is here
        },
        "files": [
            "vendor/alnutile/fixtures/src/helpers.php"
        ]
    },

The run:

composer dump

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

Related Packages

silvertipsoftware/fixtures

A better fixture package for Laravel

11,628 2
alnutile/laravel-chatgpt

Some base client work to talk to the api

3,847 4
alnutile/inertia-crud

Help with some basic CRUD and UI using Inertia, Tailwind

5,423 3
xefi/faker-php-laravel

Faker php integration with laravel

27,858 26
mayconbordin/l5-fixtures

A fixtures package for Laravel 5

123,516 4

Version History

Version Released PHP Laravel License
0.0.4 ^8.1 ^9.0|^10.0 MIT
0.0.3 ^8.1 ^9.0 MIT
0.0.1 ^8.1 ^9.0 MIT