Use WooCommerce store currency for product and order money.
Deploy Ladill Woo Manager / deploy (push) Successful in 35s
Deploy Ladill Woo Manager / deploy (push) Successful in 35s
Sync currency from the plugin, format product prices and totals with it, and show the store currency on product price fields instead of hard-coding GHS.
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Models\WooProduct;
|
||||
use App\Models\WooStore;
|
||||
use App\Services\Woo\CatalogSyncService;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Tests\TestCase;
|
||||
|
||||
class WooStoreCurrencyTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
public function test_product_price_uses_store_woocommerce_currency_not_ghs_default(): void
|
||||
{
|
||||
$user = User::factory()->create();
|
||||
$store = WooStore::query()->create([
|
||||
'user_id' => $user->id,
|
||||
'site_url' => 'https://shop.example.com',
|
||||
'site_name' => 'Example Shop',
|
||||
'status' => WooStore::STATUS_ACTIVE,
|
||||
'metadata' => [
|
||||
'currency' => 'USD',
|
||||
'currency_symbol' => '$',
|
||||
],
|
||||
]);
|
||||
|
||||
$product = WooProduct::query()->create([
|
||||
'woo_store_id' => $store->id,
|
||||
'external_id' => 42,
|
||||
'name' => 'Notebook',
|
||||
'slug' => 'notebook',
|
||||
'status' => WooProduct::STATUS_PUBLISH,
|
||||
'type' => 'simple',
|
||||
'regular_price_minor' => 1999,
|
||||
]);
|
||||
$product->setRelation('store', $store);
|
||||
|
||||
$this->assertSame('USD', $store->currency());
|
||||
$this->assertSame('USD 19.99', $product->priceFormatted());
|
||||
$this->assertStringNotContainsString('GHS', $product->priceFormatted());
|
||||
}
|
||||
|
||||
public function test_apply_store_meta_persists_woocommerce_currency(): void
|
||||
{
|
||||
$user = User::factory()->create();
|
||||
$store = WooStore::query()->create([
|
||||
'user_id' => $user->id,
|
||||
'site_url' => 'https://shop.example.com',
|
||||
'site_name' => 'Old name',
|
||||
'status' => WooStore::STATUS_ACTIVE,
|
||||
'metadata' => null,
|
||||
]);
|
||||
|
||||
app(CatalogSyncService::class)->applyStoreMeta($store, [
|
||||
'currency' => 'eur',
|
||||
'currency_symbol' => '€',
|
||||
'site_name' => 'Euro Shop',
|
||||
]);
|
||||
|
||||
$store->refresh();
|
||||
$this->assertSame('EUR', $store->currency());
|
||||
$this->assertSame('€', $store->currencySymbol());
|
||||
$this->assertSame('Euro Shop', $store->site_name);
|
||||
$this->assertSame('EUR 10.00', $store->formatMoney(1000));
|
||||
}
|
||||
|
||||
public function test_unknown_currency_does_not_fall_back_to_ghs(): void
|
||||
{
|
||||
$user = User::factory()->create();
|
||||
$store = WooStore::query()->create([
|
||||
'user_id' => $user->id,
|
||||
'site_url' => 'https://shop.example.com',
|
||||
'status' => WooStore::STATUS_ACTIVE,
|
||||
'metadata' => [],
|
||||
]);
|
||||
|
||||
$this->assertSame('', $store->currency());
|
||||
$this->assertSame('12.50', $store->formatMoney(1250));
|
||||
$this->assertStringNotContainsString('GHS', $store->formatMoney(1250));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user