mirror of
https://github.com/wearepixel/laravel-quickbooks.git
synced 2026-11-14 14:01:46 +00:00
test: add tests for upgrade-sensitive areas
- Token model structure: verify $casts has datetime fields, $fillable is complete, and $table is set correctly (catches $dates→$casts regression) - ClientServiceProvider: verify DeferrableProvider interface is implemented and provides() returns Client::class (catches $defer regression) - Token parseOauthToken: verify stored values and Carbon types, not just that mock methods were called - Client setToken: verify DataService cache is cleared on token change - Client delegation: verify hasValidAccessToken/hasValidRefreshToken delegate to Token correctly
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Contracts\Support\DeferrableProvider;
|
||||
use Wearepixel\QuickBooks\Client;
|
||||
use Wearepixel\QuickBooks\Providers\ClientServiceProvider;
|
||||
use Wearepixel\QuickBooks\Token;
|
||||
|
||||
describe('Token model structure', function () {
|
||||
it('uses the quickbooks_tokens table', function () {
|
||||
expect((new Token)->getTable())->toBe('quickbooks_tokens');
|
||||
});
|
||||
|
||||
it('casts expiration fields to datetime', function () {
|
||||
$casts = (new Token)->getCasts();
|
||||
|
||||
expect($casts)
|
||||
->toHaveKey('access_token_expires_at', 'datetime')
|
||||
->toHaveKey('refresh_token_expires_at', 'datetime');
|
||||
});
|
||||
|
||||
it('has all expected fillable attributes', function () {
|
||||
$fillable = (new Token)->getFillable();
|
||||
|
||||
expect($fillable)->toEqualCanonicalizing([
|
||||
'access_token',
|
||||
'access_token_expires_at',
|
||||
'realm_id',
|
||||
'refresh_token',
|
||||
'refresh_token_expires_at',
|
||||
'user_id',
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('ClientServiceProvider structure', function () {
|
||||
it('implements DeferrableProvider', function () {
|
||||
expect(ClientServiceProvider::class)
|
||||
->toImplement(DeferrableProvider::class);
|
||||
});
|
||||
|
||||
it('declares Client in provides array', function () {
|
||||
$app = Mockery::mock(\Illuminate\Contracts\Foundation\Application::class);
|
||||
$app->shouldIgnoreMissing();
|
||||
|
||||
$provider = new ClientServiceProvider($app);
|
||||
|
||||
expect($provider->provides())->toBe([Client::class]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user