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)); } }