create(); $id = DB::table('opportunities')->insertGetId(['reference' => 'QA-publication-scope', 'slug' => 'qa-publication-scope', 'status' => 'approved', 'owner_user_id' => $owner->id, 'workflow_context' => json_encode(['publication' => ['visibility' => 'public']])]); $record = Opportunity::findOrFail($id); $this->assertSame('unpublished', $record->publicationPresentation()['scope']); $record->forceFill(['status' => 'published', 'published_at' => now(), 'workflow_context' => ['publication' => ['visibility' => 'internal']]])->save(); $this->assertSame('restricted', $record->publicationPresentation()['scope']); $this->assertFalse($record->publicationPresentation()['public_catalog']); $this->assertFalse(Opportunity::published()->whereKey($id)->exists()); $record->forceFill(['workflow_context' => ['publication' => ['visibility' => 'public']]])->save(); $this->assertTrue($record->publicationPresentation()['public_catalog']); $this->assertSame('public', $record->publicationPresentation()['scope']); $record->forceFill(['status' => 'suspended'])->save(); $this->assertSame('unpublished', $record->publicationPresentation()['scope']); $record->forceFill(['status' => 'published', 'published_at' => now()->addDay()])->save(); $this->assertFalse($record->publicationPresentation()['public_catalog']); } }