mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-15 09:14:08 +00:00
Currency dropdowns now display the most-traded currencies (USD, EUR, GBP, JPY, CAD, AUD, CHF, CNY, INR, BRL) at the top, followed by the rest alphabetically. The install wizard defaults to USD instead of EUR and formats currency names as "USD - US Dollar" for consistency with the rest of the app.
71 lines
2.1 KiB
PHP
71 lines
2.1 KiB
PHP
<?php
|
|
|
|
use App\Models\Currency;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
use Laravel\Sanctum\Sanctum;
|
|
|
|
use function Pest\Laravel\getJson;
|
|
|
|
beforeEach(function () {
|
|
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--force' => true]);
|
|
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
|
|
|
|
$user = User::find(1);
|
|
$this->withHeaders([
|
|
'company' => $user->companies()->first()->id,
|
|
]);
|
|
Sanctum::actingAs(
|
|
$user,
|
|
['*']
|
|
);
|
|
});
|
|
|
|
test('currencies endpoint returns common currencies first', function () {
|
|
$response = getJson('/api/v1/currencies')->assertOk();
|
|
|
|
$currencies = collect($response->json('data'));
|
|
$commonCodes = Currency::COMMON_CURRENCY_CODES;
|
|
$commonCount = count($commonCodes);
|
|
|
|
$firstCodes = $currencies->take($commonCount)->pluck('code')->toArray();
|
|
|
|
foreach ($commonCodes as $code) {
|
|
expect($firstCodes)->toContain($code);
|
|
}
|
|
});
|
|
|
|
test('common currencies follow the defined priority order', function () {
|
|
$response = getJson('/api/v1/currencies')->assertOk();
|
|
|
|
$currencies = collect($response->json('data'));
|
|
$commonCodes = Currency::COMMON_CURRENCY_CODES;
|
|
$commonCount = count($commonCodes);
|
|
|
|
$firstCodes = $currencies->take($commonCount)->pluck('code')->toArray();
|
|
|
|
expect($firstCodes)->toBe($commonCodes);
|
|
});
|
|
|
|
test('non-common currencies are sorted by name after common currencies', function () {
|
|
$response = getJson('/api/v1/currencies')->assertOk();
|
|
|
|
$currencies = collect($response->json('data'));
|
|
$commonCodes = Currency::COMMON_CURRENCY_CODES;
|
|
$commonCount = count($commonCodes);
|
|
|
|
$restNames = $currencies->skip($commonCount)->pluck('name')->toArray();
|
|
$sorted = $restNames;
|
|
sort($sorted, SORT_STRING | SORT_FLAG_CASE);
|
|
|
|
expect($restNames)->toBe($sorted);
|
|
});
|
|
|
|
test('all seeded currencies are returned', function () {
|
|
$response = getJson('/api/v1/currencies')->assertOk();
|
|
|
|
$currencies = collect($response->json('data'));
|
|
|
|
expect($currencies->count())->toBe(Currency::count());
|
|
});
|