Testovanie
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 kryptomienOdoslaní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.