diff --git a/resources/js/components/upload/UploadReviewNotice.jsx b/resources/js/components/upload/UploadReviewNotice.jsx new file mode 100644 index 00000000..127d2a82 --- /dev/null +++ b/resources/js/components/upload/UploadReviewNotice.jsx @@ -0,0 +1,20 @@ +import React from 'react' + +export default function UploadReviewNotice({ visible = false }) { + if (!visible) { + return null + } + + return ( +
+

New creator uploads are reviewed first

+

+ Because your account is still at a newer creator level, this upload will be reviewed before it appears on Skinbase. + If it meets our guidelines, it is usually published within 48 hours. +

+
+ ) +} diff --git a/tests/Feature/Uploads/UploadReviewNoticeTest.php b/tests/Feature/Uploads/UploadReviewNoticeTest.php new file mode 100644 index 00000000..61d48b5e --- /dev/null +++ b/tests/Feature/Uploads/UploadReviewNoticeTest.php @@ -0,0 +1,63 @@ +create([ + 'role' => 'user', + 'level' => 1, + 'created_at' => now()->subYear(), + ]); + + $this->actingAs($user) + ->get('/upload') + ->assertOk() + ->assertInertia(fn (Assert $page) => $page + ->component('Upload/Index') + ->where('requires_upload_review', true) + ->missing('approved_uploads') + ->missing('reasons')) + ->assertDontSee('insufficient_approved_uploads', false) + ->assertDontSee('minimum_approved_uploads', false); +}); + +it('does not show the new-creator review warning for trusted uploaders', function (): void { + $user = User::factory()->create([ + 'role' => 'user', + 'level' => 1, + 'created_at' => now()->subYear(), + ]); + + Artwork::factory()->for($user)->count(5)->create([ + 'is_approved' => true, + 'is_public' => true, + 'artwork_status' => 'published', + 'published_at' => now()->subDay(), + 'approval_source' => null, + ]); + + $this->actingAs($user) + ->get('/upload') + ->assertOk() + ->assertInertia(fn (Assert $page) => $page + ->component('Upload/Index') + ->where('requires_upload_review', false)); +}); + +it('does not show the new-creator review warning for admins', function (): void { + $admin = User::factory()->create(['role' => 'admin']); + + $this->actingAs($admin) + ->get('/upload') + ->assertOk() + ->assertInertia(fn (Assert $page) => $page + ->component('Upload/Index') + ->where('requires_upload_review', false)); +});