PluginProbe ʕ •ᴥ•ʔ
Reviews Feed – Add Testimonials and Customer Reviews From Google Reviews, Yelp, TripAdvisor, and More / 2.11.0
Reviews Feed – Add Testimonials and Customer Reviews From Google Reviews, Yelp, TripAdvisor, and More v2.11.0
2.11.0 2.10.0 2.9.0 2.8.0 2.7.0 2.6.7 2.6.8 2.6.5 2.6.4 2.6.3 2.6.2 2.6.0 2.5.5 2.5.4 2.5.3 2.5.2 trunk 1.0 1.0.1 1.0.2 1.0.3 1.1 1.1.1 1.1.2 1.2.0 2.0 2.1.0 2.1.1 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.5.0 2.5.1
reviews-feed / tests / Unit / WpmlLanguageMappingTest.php
reviews-feed / tests / Unit Last commit date
Doubles 1 week ago Providers 1 week ago BulkRearmOnGrowthTest.php 1 week ago BulkReviewsUpdateStuckStateTest.php 1 week ago ClearCacheRelayResetTest.php 1 week ago DeleteSourceRelayFailureTest.php 1 week ago ErrorHandlerFalsyOptionTest.php 1 week ago FeedCacheUpdateServiceTest.php 1 week ago FeedMalformedPayloadTest.php 1 week ago ForceKeylessRefetchTest.php 1 week ago LicenseDeactivateStaleStateTest.php 1 week ago MediaFinderMemoTest.php 1 week ago MultiSourceAggregationTest.php 1 week ago ReconcileMigratedLicenseRoutineTest.php 1 week ago ReconcileRemovalTest.php 1 week ago RegisterWebsiteRoutineTest.php 1 week ago RelaySlowEndpointsTest.php 1 week ago RemoteRequestMemoTest.php 1 week ago ReviewAlertHeaderTotalsTest.php 1 week ago ReviewAlertPageTargetingTest.php 1 week ago ReviewAlertStarFillTest.php 1 week ago ShortcodeNeutralizationTest.php 1 week ago SiteMigrationRecoveryTest.php 1 week ago Smash1130UsageTrackingHardeningTest.php 1 week ago Smash1130UsageTrackingHooksTest.php 1 week ago Smash1583HeaderParityTest.php 1 week ago Smash1631MultiLanguageBulkTest.php 1 week ago Smash1631UpdateSingleLangScopeTest.php 1 week ago Smash1706TripAdvisorPlaceIdTest.php 1 week ago Smash1756SchemaServiceTest.php 1 week ago Smash1785AvatarLocalUrlGuardTest.php 1 week ago Smash1785AvatarReHealTest.php 1 week ago Smash1795ReviewTextXssTest.php 1 week ago Smash1835TripAdvisorKeyShapeTest.php 1 week ago Smash1973WordpressOrgPlaceIdNullTest.php 1 week ago Smash1987NestedSourceErrorShapeTest.php 1 week ago Smash782BookingHeaderRatingTest.php 1 week ago Smash782CountryFlagEmojiTest.php 1 week ago Smash782ExternalRefreshCronTest.php 1 week ago Smash782ExtrasTemplateTest.php 1 week ago Smash782ReviewAlertProviderDataTest.php 1 week ago SourceIdLookupTest.php 1 week ago WpmlGetCurrentLanguageTest.php 1 week ago WpmlLanguageMappingTest.php 1 week ago
WpmlLanguageMappingTest.php
96 lines
1 <?php
2
3 namespace SmashBalloon\Reviews\Tests\Unit;
4
5 use PHPUnit\Framework\TestCase;
6 use SmashBalloon\Reviews\Common\Util;
7
8 /**
9 * Pins Util::map_wpml_to_google_language() — maps a WPML/locale code to a code the
10 * Google Places API actually accepts, so reviews come back translated (SMASH-1617,
11 * WPSA #62626). The reported case: a WPML `es-mx` site sent an unsupported code and
12 * Google returned reviews untranslated; this maps it to `es-419`.
13 *
14 * Pure static (only reads the in-code supported-language list), so it runs in the
15 * plain-PHPUnit suite.
16 */
17 final class WpmlLanguageMappingTest extends TestCase
18 {
19 /**
20 * @dataProvider provideCodes
21 *
22 * @param string|null $input
23 * @param string|null $expected
24 */
25 public function test_map_wpml_to_google_language($input, $expected): void
26 {
27 $this->assertSame($expected, Util::map_wpml_to_google_language($input));
28 }
29
30 /** @return array<string, array{0: string|null, 1: string|null}> */
31 public static function provideCodes(): array
32 {
33 return [
34 // --- The reported regression: every Latin-American Spanish variant -> es-419 ---
35 'es-mx -> es-419' => ['es-mx', 'es-419'],
36 'es_MX underscore' => ['es_MX', 'es-419'],
37 'ES-MX uppercase' => ['ES-MX', 'es-419'],
38 'es-ar -> es-419' => ['es-ar', 'es-419'],
39 'es-cl -> es-419' => ['es-cl', 'es-419'],
40 'es-co -> es-419' => ['es-co', 'es-419'],
41 'es-pe -> es-419' => ['es-pe', 'es-419'],
42 'es-ve -> es-419' => ['es-ve', 'es-419'],
43 'es-uy -> es-419' => ['es-uy', 'es-419'],
44 'es-419 exact' => ['es-419', 'es-419'],
45
46 // --- Spain Spanish stays es ---
47 'es -> es' => ['es', 'es'],
48 'es-es -> es' => ['es-es', 'es'],
49 'es-ES -> es' => ['es-ES', 'es'],
50 'es_ES underscore -> es' => ['es_ES', 'es'],
51
52 // --- Already-supported codes pass through unchanged (BC) ---
53 'en exact' => ['en', 'en'],
54 'en-GB exact' => ['en-GB', 'en-GB'],
55 'en-AU exact' => ['en-AU', 'en-AU'],
56 'fr exact' => ['fr', 'fr'],
57 'fr-CA exact' => ['fr-CA', 'fr-CA'],
58 'pt exact' => ['pt', 'pt'],
59 'pt-BR exact' => ['pt-BR', 'pt-BR'],
60 'pt-PT exact' => ['pt-PT', 'pt-PT'],
61 'zh exact' => ['zh', 'zh'],
62 'zh-CN exact' => ['zh-CN', 'zh-CN'],
63 'zh-TW exact' => ['zh-TW', 'zh-TW'],
64 'hy (Armenian) exact' => ['hy', 'hy'],
65
66 // --- Case-insensitive match for region variants Google lists ---
67 'en-gb -> en-GB' => ['en-gb', 'en-GB'],
68 'en-au -> en-AU' => ['en-au', 'en-AU'],
69 'pt-br -> pt-BR' => ['pt-br', 'pt-BR'],
70 'pt_br underscore -> pt-BR' => ['pt_br', 'pt-BR'],
71 'fr-ca -> fr-CA' => ['fr-ca', 'fr-CA'],
72 'zh-tw -> zh-TW' => ['zh-tw', 'zh-TW'],
73 'zh-hk -> zh-HK' => ['zh-hk', 'zh-HK'],
74
75 // --- Region strip to a supported base language ---
76 'en-us -> en' => ['en-us', 'en'],
77 'fr-fr -> fr' => ['fr-fr', 'fr'],
78 'de-de -> de' => ['de-de', 'de'],
79 'de_DE underscore -> de' => ['de_DE', 'de'],
80 'it-it -> it' => ['it-it', 'it'],
81 'nl-nl -> nl' => ['nl-nl', 'nl'],
82 'ja-jp -> ja' => ['ja-jp', 'ja'],
83 'ru-ru -> ru' => ['ru-ru', 'ru'],
84 'EN uppercase base -> en' => ['EN', 'en'],
85
86 // --- Unmappable -> null so the caller falls back (never sends a bogus code) ---
87 'literal wpml -> null' => ['wpml', null],
88 'unknown 2-letter -> null' => ['xx', null],
89 'unknown region -> null' => ['xx-yy', null],
90 'gibberish -> null' => ['zz-zz', null],
91 'empty string -> null' => ['', null],
92 'null -> null' => [null, null],
93 ];
94 }
95 }
96