Implement creator studio and upload updates
This commit is contained in:
@@ -242,6 +242,29 @@ it('public collection routes redirect to the canonical target after canonicaliza
|
||||
->assertRedirect(route('profile.collections.show', ['username' => strtolower((string) $owner->username), 'slug' => $target->slug]));
|
||||
});
|
||||
|
||||
it('public collection detail exposes normalized seo props', function () {
|
||||
$owner = User::factory()->create(['username' => 'seocollectionowner']);
|
||||
|
||||
$collection = Collection::factory()->for($owner)->create([
|
||||
'title' => 'SEO Collection Detail',
|
||||
'slug' => 'seo-collection-detail',
|
||||
'description' => 'A public collection used to verify normalized SEO props.',
|
||||
'visibility' => Collection::VISIBILITY_PUBLIC,
|
||||
'lifecycle_state' => Collection::LIFECYCLE_PUBLISHED,
|
||||
'moderation_status' => Collection::MODERATION_ACTIVE,
|
||||
'workflow_state' => Collection::WORKFLOW_APPROVED,
|
||||
]);
|
||||
|
||||
$this->get(route('profile.collections.show', ['username' => strtolower((string) $owner->username), 'slug' => $collection->slug]))
|
||||
->assertOk()
|
||||
->assertInertia(fn ($page) => $page
|
||||
->component('Collection/CollectionShow')
|
||||
->where('seo.title', fn ($value) => is_string($value) && str_contains($value, 'SEO Collection Detail'))
|
||||
->where('seo.description', fn ($value) => is_string($value) && str_contains($value, 'verify normalized SEO props'))
|
||||
->where('seo.robots', 'index,follow')
|
||||
->where('seo.canonical', route('profile.collections.show', ['username' => strtolower((string) $owner->username), 'slug' => $collection->slug])));
|
||||
});
|
||||
|
||||
it('owners can dismiss duplicate candidates from merge review', function () {
|
||||
$owner = User::factory()->create(['username' => 'mergedismissowner']);
|
||||
|
||||
@@ -617,6 +640,31 @@ it('public search only returns safe public collections', function () {
|
||||
->where('collections.0.title', 'Visible Search Result'));
|
||||
});
|
||||
|
||||
it('public collection search exposes noindex seo props on filtered pages', function () {
|
||||
$owner = User::factory()->create(['username' => 'seosearchowner']);
|
||||
|
||||
Collection::factory()->for($owner)->create([
|
||||
'title' => 'SEO Search Target',
|
||||
'slug' => 'seo-search-target',
|
||||
'visibility' => Collection::VISIBILITY_PUBLIC,
|
||||
'lifecycle_state' => Collection::LIFECYCLE_PUBLISHED,
|
||||
'moderation_status' => Collection::MODERATION_ACTIVE,
|
||||
'workflow_state' => Collection::WORKFLOW_APPROVED,
|
||||
'placement_eligibility' => true,
|
||||
]);
|
||||
|
||||
$url = route('collections.search', ['q' => 'SEO Search Target']);
|
||||
|
||||
$this->get($url)
|
||||
->assertOk()
|
||||
->assertInertia(fn ($page) => $page
|
||||
->component('Collection/CollectionFeaturedIndex')
|
||||
->where('seo.robots', 'noindex,follow')
|
||||
->where('seo.canonical', $url)
|
||||
->where('seo.title', 'Search Collections — Skinbase Nova')
|
||||
->where('seo.description', 'Search results for "SEO Search Target" across public Skinbase Nova collections.'));
|
||||
});
|
||||
|
||||
it('saved collections support private saved notes', function () {
|
||||
$user = User::factory()->create(['username' => 'savednoteowner']);
|
||||
$curator = User::factory()->create(['username' => 'savednotecurator']);
|
||||
|
||||
Reference in New Issue
Block a user