-
-
Notifications
You must be signed in to change notification settings - Fork 66
/
StripeWebhookCallTest.php
111 lines (79 loc) · 3.13 KB
/
StripeWebhookCallTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
namespace Spatie\StripeWebhooks\Tests;
use Illuminate\Support\Facades\Event;
use Spatie\StripeWebhooks\ProcessStripeWebhookJob;
use Spatie\WebhookClient\Models\WebhookCall;
class StripeWebhookCallTest extends TestCase
{
public ProcessStripeWebhookJob $processStripeWebhookJob;
public WebhookCall $webhookCall;
public function setUp(): void
{
parent::setUp();
Event::fake();
config(['stripe-webhooks.jobs' => ['my_type' => DummyJob::class]]);
$this->webhookCall = WebhookCall::create([
'name' => 'stripe',
'url' => '/stripe',
'payload' => ['type' => 'my.type', 'name' => 'value'],
]);
$this->processStripeWebhookJob = new ProcessStripeWebhookJob($this->webhookCall);
}
/** @test */
public function it_will_fire_off_the_configured_job()
{
$this->processStripeWebhookJob->handle();
$this->assertEquals($this->webhookCall->id, cache('dummyjob')->id);
}
/** @test */
public function it_will_not_dispatch_a_job_for_another_type()
{
config(['stripe-webhooks.jobs' => ['another_type' => DummyJob::class]]);
$this->processStripeWebhookJob->handle();
$this->assertNull(cache('dummyjob'));
}
/** @test */
public function it_will_not_dispatch_jobs_when_no_jobs_are_configured()
{
config(['stripe-webhooks.jobs' => []]);
$this->processStripeWebhookJob->handle();
$this->assertNull(cache('dummyjob'));
}
/** @test */
public function it_will_dispatch_jobs_when_default_job_is_configured()
{
config([
'stripe-webhooks.jobs' => [],
'stripe-webhooks.default_job' => DummyJob::class,
]);
$this->processStripeWebhookJob->handle();
$this->assertEquals($this->webhookCall->id, cache('dummyjob')->id);
}
/** @test */
public function it_will_dispatch_events_even_when_no_corresponding_job_is_configured()
{
config(['stripe-webhooks.jobs' => ['another_type' => DummyJob::class]]);
$this->processStripeWebhookJob->handle();
$webhookCall = $this->webhookCall;
Event::assertDispatched("stripe-webhooks::{$webhookCall->payload['type']}", function ($event, $eventPayload) use ($webhookCall) {
$this->assertInstanceOf(WebhookCall::class, $eventPayload);
$this->assertEquals($webhookCall->id, $eventPayload->id);
return true;
});
$this->assertNull(cache('dummyjob'));
}
/** @test */
public function it_can_specify_a_connection_in_the_config()
{
config(['stripe-webhooks.connection' => 'some-connection']);
$processStripeWebhookJob = new ProcessStripeWebhookJob($this->webhookCall);
$this->assertEquals('some-connection', $processStripeWebhookJob->connection);
}
/** @test */
public function it_can_specify_a_queue_in_the_config()
{
config(['stripe-webhooks.queue' => 'some-queue']);
$processStripeWebhookJob = new ProcessStripeWebhookJob($this->webhookCall);
$this->assertEquals('some-queue', $processStripeWebhookJob->queue);
}
}