Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Feature/DomainTest.php
Show All 11 Lines | |||||
use Tests\TestCase; | use Tests\TestCase; | ||||
class DomainTest extends TestCase | class DomainTest extends TestCase | ||||
{ | { | ||||
public function setUp(): void | public function setUp(): void | ||||
{ | { | ||||
parent::setUp(); | parent::setUp(); | ||||
Domain::where('namespace', 'public-active.com')->delete(); | Domain::where('namespace', 'public-active.com') | ||||
->orWhere('namespace', 'gmail.com')->delete(); | |||||
} | |||||
/** | |||||
* Test domain creating jobs | |||||
*/ | |||||
public function testCreateJobs(): void | |||||
{ | |||||
// Fake the queue, assert that no jobs were pushed... | |||||
Queue::fake(); | |||||
Queue::assertNothingPushed(); | |||||
$domain = Domain::create([ | |||||
'namespace' => 'gmail.com', | |||||
'status' => Domain::STATUS_NEW, | |||||
'type' => Domain::TYPE_EXTERNAL, | |||||
]); | |||||
Queue::assertPushed(\App\Jobs\ProcessDomainCreate::class, 1); | |||||
Queue::assertPushed(\App\Jobs\ProcessDomainCreate::class, function ($job) use ($domain) { | |||||
$job_domain = TestCase::getObjectProperty($job, 'domain'); | |||||
return $job_domain->id === $domain->id | |||||
&& $job_domain->namespace === $domain->namespace; | |||||
}); | |||||
Queue::assertPushedWithChain(\App\Jobs\ProcessDomainCreate::class, [ | |||||
\App\Jobs\ProcessDomainVerify::class, | |||||
]); | |||||
/* | |||||
FIXME: Looks like we can't really do detailed assertions on chained jobs | |||||
Another thing to consider is if we maybe should run these jobs | |||||
independently (not chained) and make sure there's no race-condition | |||||
in status update | |||||
Queue::assertPushed(\App\Jobs\ProcessDomainVerify::class, 1); | |||||
Queue::assertPushed(\App\Jobs\ProcessDomainVerify::class, function ($job) use ($domain) { | |||||
$job_domain = TestCase::getObjectProperty($job, 'domain'); | |||||
return $job_domain->id === $domain->id | |||||
&& $job_domain->namespace === $domain->namespace; | |||||
}); | |||||
*/ | |||||
} | } | ||||
/** | /** | ||||
* Tests getPublicDomains() method | * Tests getPublicDomains() method | ||||
*/ | */ | ||||
public function testGetPublicDomains(): void | public function testGetPublicDomains(): void | ||||
{ | { | ||||
$public_domains = Domain::getPublicDomains(); | $public_domains = Domain::getPublicDomains(); | ||||
$this->assertNotContains('public-active.com', $public_domains); | $this->assertNotContains('public-active.com', $public_domains); | ||||
// Fake the queue, assert that no jobs were pushed... | |||||
Queue::fake(); | Queue::fake(); | ||||
Queue::assertNothingPushed(); | |||||
$domain = Domain::create([ | $domain = Domain::create([ | ||||
'namespace' => 'public-active.com', | 'namespace' => 'public-active.com', | ||||
'status' => Domain::STATUS_NEW, | 'status' => Domain::STATUS_NEW, | ||||
'type' => Domain::TYPE_PUBLIC, | 'type' => Domain::TYPE_PUBLIC, | ||||
]); | ]); | ||||
// Public but non-active domain should not be returned | // Public but non-active domain should not be returned | ||||
$public_domains = Domain::getPublicDomains(); | $public_domains = Domain::getPublicDomains(); | ||||
$this->assertNotContains('public-active.com', $public_domains); | $this->assertNotContains('public-active.com', $public_domains); | ||||
Queue::assertPushed(\App\Jobs\ProcessDomainCreate::class, 1); | |||||
Queue::assertPushed(\App\Jobs\ProcessDomainCreate::class, function ($job) use ($domain) { | |||||
$job_domain = TestCase::getObjectProperty($job, 'domain'); | |||||
return $job_domain->id === $domain->id | |||||
&& $job_domain->namespace === $domain->namespace; | |||||
}); | |||||
$domain = Domain::where('namespace', 'public-active.com')->first(); | $domain = Domain::where('namespace', 'public-active.com')->first(); | ||||
$domain->status = Domain::STATUS_ACTIVE; | $domain->status = Domain::STATUS_ACTIVE; | ||||
$domain->save(); | $domain->save(); | ||||
// Public and active domain should be returned | // Public and active domain should be returned | ||||
$public_domains = Domain::getPublicDomains(); | $public_domains = Domain::getPublicDomains(); | ||||
$this->assertContains('public-active.com', $public_domains); | $this->assertContains('public-active.com', $public_domains); | ||||
} | } | ||||
/** | |||||
* Test domain confirmation | |||||
* | |||||
* @group dns | |||||
*/ | |||||
public function testConfirm(): void | |||||
{ | |||||
// TODO | |||||
$this->markTestIncomplete(); | |||||
} | |||||
/** | |||||
* Test domain verification | |||||
* | |||||
* @group dns | |||||
*/ | |||||
public function testVerify(): void | |||||
{ | |||||
// TODO | |||||
$this->markTestIncomplete(); | |||||
} | |||||
} | } |