77use App \Models \License ;
88use App \Models \User ;
99use Illuminate \Foundation \Testing \RefreshDatabase ;
10- use Illuminate \ Support \ Facades \ Session ;
10+ use Laravel \ Cashier \ Cashier ;
1111use Livewire \Livewire ;
1212use PHPUnit \Framework \Attributes \Test ;
1313use Stripe \Checkout \Session as CheckoutSession ;
@@ -39,10 +39,8 @@ public function it_renders_successfully()
3939 #[Test]
4040 public function it_displays_loading_state_when_no_license_key_is_available ()
4141 {
42- Session::flush ();
43-
4442 Livewire::test (OrderSuccess::class, ['checkoutSessionId ' => 'cs_test_123 ' ])
45- ->
assertSet (
'email ' ,
' [email protected] ' )
43+ ->assertSet ('email ' , null )
4644 ->assertSet ('licenseKey ' , null )
4745 ->assertSee ('License registration in progress ' )
4846 ->assertSee ('check your email ' );
@@ -51,17 +49,31 @@ public function it_displays_loading_state_when_no_license_key_is_available()
5149 #[Test]
5250 public function it_displays_license_key_when_available_in_database ()
5351 {
54- Session::flush ();
55-
5652 $ user = User::factory ()->create ([
575354+ 'stripe_id ' => 'cus_test123 ' ,
5855 ]);
5956
60- License::factory ()->create ([
61- 'user_id ' => $ user ->id ,
62- 'key ' => 'db-license-key-12345 ' ,
63- 'policy_name ' => 'max ' ,
64- ]);
57+ $ subscription = Cashier::$ subscriptionModel ::factory ()
58+ ->for ($ user , 'user ' )
59+ ->create ([
60+ 'stripe_id ' => 'sub_test123 ' ,
61+ ]);
62+
63+ $ subscriptionItem = Cashier::$ subscriptionItemModel ::factory ()
64+ ->for ($ subscription , 'subscription ' )
65+ ->create ([
66+ 'stripe_id ' => 'si_test123 ' ,
67+ 'stripe_price ' => Subscription::Max->stripePriceId (),
68+ ]);
69+
70+ $ license = License::factory ()
71+ ->for ($ user , 'user ' )
72+ ->for ($ subscriptionItem , 'subscriptionItem ' )
73+ ->create ([
74+ 'key ' => 'db-license-key-12345 ' ,
75+ 'policy_name ' => 'max ' ,
76+ ]);
6577
6678 Livewire::test (OrderSuccess::class, ['checkoutSessionId ' => 'cs_test_123 ' ])
6779 ->
assertSet (
'email ' ,
'[email protected] ' )
@@ -71,40 +83,39 @@ public function it_displays_license_key_when_available_in_database()
7183 ->assertDontSee ('License registration in progress ' );
7284 }
7385
74- #[Test]
75- public function it_uses_session_data_when_available ()
76- {
77- $ checkoutSessionId = 'cs_test_123 ' ;
78-
79- Session::
put (
"$ checkoutSessionId.email " ,
'[email protected] ' );
80- Session::put ("$ checkoutSessionId.license_key " , 'session-license-key ' );
81-
82- Livewire::test (OrderSuccess::class, ['checkoutSessionId ' => 'cs_test_123 ' ])
83- ->
assertSet (
'email ' ,
'[email protected] ' )
84- ->assertSet ('licenseKey ' , 'session-license-key ' )
85- ->assertSee ('session-license-key ' )
86- 87- }
88-
8986 #[Test]
9087 public function it_polls_for_updates_from_database ()
9188 {
92- Session::flush ();
93-
9489 $ component = Livewire::test (OrderSuccess::class, ['checkoutSessionId ' => 'cs_test_123 ' ])
9590 ->assertSet ('licenseKey ' , null )
9691 ->assertSee ('License registration in progress ' )
9792 ->assertSeeHtml ('wire:poll.2s="loadData" ' );
9893
9994 $ user = User::factory ()->create ([
1009596+ 'stripe_id ' => 'cus_test123 ' ,
10197 ]);
10298
103- License::factory ()->create ([
104- 'user_id ' => $ user ->id ,
105- 'key ' => 'db-polled-license-key ' ,
106- 'policy_name ' => 'max ' ,
107- ]);
99+ $ subscription = Cashier::$ subscriptionModel ::factory ()
100+ ->for ($ user , 'user ' )
101+ ->create ([
102+ 'stripe_id ' => 'sub_test123 ' ,
103+ ]);
104+
105+ $ subscriptionItem = Cashier::$ subscriptionItemModel ::factory ()
106+ ->for ($ subscription , 'subscription ' )
107+ ->create ([
108+ 'stripe_id ' => 'si_test123 ' ,
109+ 'stripe_price ' => Subscription::Max->stripePriceId (),
110+ ]);
111+
112+ $ license = License::factory ()
113+ ->for ($ user , 'user ' )
114+ ->for ($ subscriptionItem , 'subscriptionItem ' )
115+ ->create ([
116+ 'key ' => 'db-polled-license-key ' ,
117+ 'policy_name ' => 'max ' ,
118+ ]);
108119
109120 $ component ->call ('loadData ' )
110121 ->assertSet ('licenseKey ' , 'db-polled-license-key ' )
@@ -144,9 +155,11 @@ private function mockStripeClient(): void
144155 {
145156 $ mockCheckoutSession = CheckoutSession::constructFrom ([
146157 'id ' => 'cs_test_123 ' ,
158+ 'customer ' => 'cus_test123 ' ,
147159 'customer_details ' => [
148160149161 ],
162+ 'subscription ' => 'sub_test123 ' ,
150163 ]);
151164
152165 $ mockCheckoutSessionLineItems = Collection::constructFrom ([
0 commit comments