Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Feature/WalletTest.php
<?php | <?php | ||||
namespace Tests\Feature; | namespace Tests\Feature; | ||||
use App\Payment; | |||||
use App\Package; | use App\Package; | ||||
use App\Plan; | use App\Plan; | ||||
use App\User; | use App\User; | ||||
use App\Sku; | use App\Sku; | ||||
use App\Transaction; | use App\Transaction; | ||||
use App\Wallet; | use App\Wallet; | ||||
use App\VatRate; | |||||
use Carbon\Carbon; | use Carbon\Carbon; | ||||
use Illuminate\Support\Facades\DB; | use Illuminate\Support\Facades\DB; | ||||
use Illuminate\Support\Facades\Queue; | use Illuminate\Support\Facades\Queue; | ||||
use Tests\TestCase; | use Tests\TestCase; | ||||
class WalletTest extends TestCase | class WalletTest extends TestCase | ||||
{ | { | ||||
private $users = [ | private $users = [ | ||||
Show All 17 Lines | public function setUp(): void | ||||
parent::setUp(); | parent::setUp(); | ||||
Carbon::setTestNow(Carbon::createFromDate(2022, 02, 02)); | Carbon::setTestNow(Carbon::createFromDate(2022, 02, 02)); | ||||
foreach ($this->users as $user) { | foreach ($this->users as $user) { | ||||
$this->deleteTestUser($user); | $this->deleteTestUser($user); | ||||
} | } | ||||
Sku::select()->update(['fee' => 0]); | Sku::select()->update(['fee' => 0]); | ||||
Payment::query()->delete(); | |||||
VatRate::query()->delete(); | |||||
} | } | ||||
/** | /** | ||||
* {@inheritDoc} | * {@inheritDoc} | ||||
*/ | */ | ||||
public function tearDown(): void | public function tearDown(): void | ||||
{ | { | ||||
foreach ($this->users as $user) { | foreach ($this->users as $user) { | ||||
$this->deleteTestUser($user); | $this->deleteTestUser($user); | ||||
} | } | ||||
Sku::select()->update(['fee' => 0]); | Sku::select()->update(['fee' => 0]); | ||||
Payment::query()->delete(); | |||||
VatRate::query()->delete(); | |||||
parent::tearDown(); | parent::tearDown(); | ||||
} | } | ||||
/** | /** | ||||
* Test that turning wallet balance from negative to positive | * Test that turning wallet balance from negative to positive | ||||
* unsuspends and undegrades the account | * unsuspends and undegrades the account | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 489 Lines • ▼ Show 20 Lines | public function testChargeAndDeleteEntitlementsTrial(): void | ||||
$trans = $etransactions[0]; | $trans = $etransactions[0]; | ||||
$this->assertSame(null, $trans->description); | $this->assertSame(null, $trans->description); | ||||
$this->assertSame(15, $trans->amount); | $this->assertSame(15, $trans->amount); | ||||
$this->assertSame(Transaction::ENTITLEMENT_BILLED, $trans->type); | $this->assertSame(Transaction::ENTITLEMENT_BILLED, $trans->type); | ||||
*/ | */ | ||||
} | } | ||||
/** | /** | ||||
* Tests for award() and penalty() | |||||
*/ | |||||
public function testAwardAndPenalty(): void | |||||
{ | |||||
$this->markTestIncomplete(); | |||||
} | |||||
/** | |||||
* Tests for chargeback() and refund() | |||||
*/ | |||||
public function testChargebackAndRefund(): void | |||||
{ | |||||
$this->markTestIncomplete(); | |||||
} | |||||
/** | |||||
* Tests for chargeEntitlement() | |||||
*/ | |||||
public function testChargeEntitlement(): void | |||||
{ | |||||
$this->markTestIncomplete(); | |||||
} | |||||
/** | |||||
* Tests for updateEntitlements() | * Tests for updateEntitlements() | ||||
*/ | */ | ||||
public function testUpdateEntitlements(): void | public function testUpdateEntitlements(): void | ||||
{ | { | ||||
$this->markTestIncomplete(); | $this->markTestIncomplete(); | ||||
} | } | ||||
/** | |||||
* Tests for vatRate() | |||||
*/ | |||||
public function testVatRate(): void | |||||
{ | |||||
$rate1 = VatRate::create([ | |||||
'start' => now()->subDay(), | |||||
'country' => 'US', | |||||
'rate' => 7.5, | |||||
]); | |||||
$rate2 = VatRate::create([ | |||||
'start' => now()->subDay(), | |||||
'country' => 'DE', | |||||
'rate' => 10.0, | |||||
]); | |||||
$user = $this->getTestUser('UserWallet1@UserWallet.com'); | |||||
$wallet = $user->wallets()->first(); | |||||
$user->setSetting('country', null); | |||||
$this->assertSame(null, $wallet->vatRate()); | |||||
$user->setSetting('country', 'PL'); | |||||
$this->assertSame(null, $wallet->vatRate()); | |||||
$user->setSetting('country', 'US'); | |||||
$this->assertSame($rate1->id, $wallet->vatRate()->id); // @phpstan-ignore-line | |||||
$user->setSetting('country', 'DE'); | |||||
$this->assertSame($rate2->id, $wallet->vatRate()->id); // @phpstan-ignore-line | |||||
// Test $start argument | |||||
$rate3 = VatRate::create([ | |||||
'start' => now()->subYear(), | |||||
'country' => 'DE', | |||||
'rate' => 5.0, | |||||
]); | |||||
$this->assertSame($rate2->id, $wallet->vatRate()->id); // @phpstan-ignore-line | |||||
$this->assertSame($rate3->id, $wallet->vatRate(now()->subMonth())->id); | |||||
$this->assertSame(null, $wallet->vatRate(now()->subYears(2))); | |||||
} | |||||
} | } |