NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

MediaLibrary::fake() vymení manažéra za nahrávací fake a vráti ho:

use RoundlyConsulting\MediaLibrary\Facades\MediaLibrary;

$fake = MediaLibrary::fake();

$this->post('/profile/avatar', ['avatar' => UploadedFile::fake()->image('me.png')]);

$fake->assertAdded('avatar', to: $user);
$fake->assertNothingDeleted();
  • Nič nezapisuje — žiadny súbor na disku, žiadny riadok, žiadny job vo fronte ani event — test teda nepotrebuje reálne disky ani Storage::fake().
  • Zaznamená každé volanie, či prišlo cez fasádu, injektovaný MediaLibraryManager, handle for(), trait InteractsWithMedia alebo metódu modelu Media.
  • Zmeny aj tak vracajú realistické výsledky: pridanie, attach a kópia vrátia neuložené Media s novým uuid, vlastníkom, skupinou, diskom, viditeľnosťou a tým istým bezpečným názvom súboru, aký uloží skutočné pridanie; presun médium prepojí v pamäti.
  • Pravidlá prijatia skupiny (mime allowlist, limit veľkosti, rozmery obrázka) pri pridaní aj naviazaní draftu stále platia a neznámy či expirovaný token draftu stále vyhodí výnimku. Čítanie ide do databázy ako zvyčajne.

Asercie

Každý argument je voliteľný filter; null zodpovedá čomukoľvek:

$fake->assertAdded('avatar', to: $user);
$fake->assertAttached($logo, to: $user, bucket: 'avatar');
$fake->assertDraftBound($token, to: $user, bucket: 'avatar');
$fake->assertMoved($media, to: $otherUser, bucket: 'gallery', disk: 'cold');
$fake->assertVariantsMoved($media, disk: 'hot');
$fake->assertCopied($media, to: $otherUser, bucket: 'gallery');
$fake->assertReplaced($media);
$fake->assertDeleted($media);            // clear() records one delete per media
$fake->assertRegenerated($media, only: ['thumb'], force: true);
$fake->assertDraftsPruned();

// The negative counterparts
$fake->assertNothingAdded();
$fake->assertNothingAttached();
$fake->assertNothingBound();
$fake->assertNothingMoved();
$fake->assertNoVariantsMoved();
$fake->assertNothingCopied();
$fake->assertNothingReplaced();
$fake->assertNothingDeleted();
$fake->assertNothingRegenerated();
$fake->assertDraftsNotPruned();

End-to-end proti fake disku

Ak chcete reálne súbory a vygenerované varianty, fake vynechajte a pre disky skupiny použite Storage::fake():

use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
use RoundlyConsulting\MediaLibrary\Facades\MediaLibrary;

it('stores an avatar and generates a thumbnail', function () {
    Storage::fake('cold');
    Storage::fake('hot');

    $user = User::factory()->create();
    MediaLibrary::for($user)
        ->add(UploadedFile::fake()->image('me.jpg', 600, 600))
        ->toBucket('avatar');

    $avatar = MediaLibrary::for($user)->first('avatar');

    expect($avatar->hasGeneratedVariant('thumb'))->toBeTrue();
    Storage::disk('cold')->assertExists($avatar->getPath());
});

Suite spúšťajte s načítanou migráciou balíka (RefreshDatabase). Frontované varianty bežia v testoch synchrónne cez sync frontu, takže vygenerované varianty sú asertovateľné okamžite.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.