Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions tests/phpunit/FieldLanguagePatternTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

use WPML\ElasticPress\Field\Sync;

class FieldLanguagePatternTestDouble extends Sync {
public function callBuildLanguagePattern() {
return $this->buildLanguagePattern();
}
}

class FieldLanguagePatternTest extends OTGS_TestCase {

public function guidProvider() {
return [
'language as directory' => [ 'http://example.com/de/some-post/', 'de' ],
'language as parameter' => [ 'http://example.com/?p=1&lang=fr', 'fr' ],
'language as subdomain' => [ 'http://de.example.com/some-post/', 'de' ],
'default language guid' => [ 'http://example.com/some-post/', null ],
'unrelated language code' => [ 'http://example.com/it/some-post/', null ],
];
}

/**
* @dataProvider guidProvider
*
* @param string $guid
* @param string|null $expectedLanguage
*/
public function test_pattern_extracts_language_from_guid( $guid, $expectedLanguage ) {
$subject = new FieldLanguagePatternTestDouble( '7.10', [ 'en', 'de', 'fr' ], 'en', 'en' );

$pattern = $subject->callBuildLanguagePattern();
$matched = preg_match( $pattern, $guid, $match );

if ( null === $expectedLanguage ) {
$this->assertSame( 0, $matched );
return;
}

$this->assertSame( 1, $matched );
// getPostLanguage() reads the last captured group.
$this->assertSame( $expectedLanguage, end( $match ) );
}
}
58 changes: 58 additions & 0 deletions tests/phpunit/TranslateLanguagesTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?php

use WPML\ElasticPress\Traits\TranslateLanguages;

class TranslateLanguagesTestDouble {
use TranslateLanguages;

public function callGenerateAnalysisLanguages( $languageCode ) {
return $this->generateAnalysisLanguages( $languageCode );
}

public function callLanguageHasStemmer( $language ) {
return $this->languageHasStemmer( $language );
}
}

class TranslateLanguagesTest extends OTGS_TestCase {

public function analysisLanguagesProvider() {
return [
'german has analyzer and snowball' => [ 'de', 'german', 'German' ],
'english is fully supported' => [ 'en', 'english', 'English' ],
'arabic has no snowball' => [ 'ar', 'arabic', 'English' ],
'thai has no snowball' => [ 'th', 'thai', 'English' ],
'brazilian portuguese maps' => [ 'pt-br', 'brazilian', 'English' ],
'norwegian nynorsk maps' => [ 'nn', 'norwegian', 'Norwegian' ],
'unknown falls back to english' => [ 'xx', 'english', 'English' ],
];
}

/**
* @dataProvider analysisLanguagesProvider
*
* @param string $languageCode
* @param string $expectedAnalyzer
* @param string $expectedSnowball
*/
public function test_generate_analysis_languages( $languageCode, $expectedAnalyzer, $expectedSnowball ) {
$subject = new TranslateLanguagesTestDouble();

$this->assertSame(
[
'analyzer' => $expectedAnalyzer,
'snowball' => $expectedSnowball,
],
$subject->callGenerateAnalysisLanguages( $languageCode )
);
}

public function test_language_has_stemmer() {
$subject = new TranslateLanguagesTestDouble();

$this->assertTrue( $subject->callLanguageHasStemmer( 'german' ) );
$this->assertTrue( $subject->callLanguageHasStemmer( 'arabic' ) );
$this->assertFalse( $subject->callLanguageHasStemmer( 'thai' ) );
$this->assertFalse( $subject->callLanguageHasStemmer( 'unknown' ) );
}
}
Loading