LingoI18NTest   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
eloc 15
c 3
b 1
f 0
dl 0
loc 33
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A testMagicWordsLoaded() 0 26 1
A testJsonSchemaValidatorExists() 0 3 1
1
<?php
2
/**
3
 * This file is part of the MediaWiki extension Lingo.
4
 *
5
 * @copyright 2011 - 2016, Stephan Gambke
6
 * @license GPL-2.0-or-later
7
 *
8
 * The Lingo extension is free software: you can redistribute it and/or modify
9
 * it under the terms of the GNU General Public License as published by the Free
10
 * Software Foundation; either version 2 of the License, or (at your option) any
11
 * later version.
12
 *
13
 * The Lingo extension is distributed in the hope that it will be useful, but
14
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16
 * details.
17
 *
18
 * You should have received a copy of the GNU General Public License along
19
 * with this program. If not, see <http://www.gnu.org/licenses/>.
20
 *
21
 * @author Stephan Gambke
22
 * @since 2.0
23
 * @file
24
 * @ingroup Lingo
25
 */
26
27
namespace Lingo\Tests\Unit;
28
29
/**
30
 * @group extensions-lingo
31
 * @group extensions-lingo-unit
32
 * @group mediawiki-databaseless
33
 *
34
 * @ingroup Lingo
35
 * @ingroup Test
36
 */
37
class LingoI18NTest extends \PHPUnit\Framework\TestCase {
0 ignored issues
show
Bug introduced by
The type PHPUnit\Framework\TestCase was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
38
39
	public function testJsonSchemaValidatorExists() {
40
		$this->assertTrue( class_exists( '\JsonSchema\Validator' ) );
41
		$this->assertTrue( method_exists( '\JsonSchema\Validator', 'check' ) );
42
	}
43
44
	public function testMagicWordsLoaded() {
45
		// load magic words
46
		require __DIR__ . '/../../../src/Lingo.i18n.magic.php';
47
48
		// assert $magicWords was created
49
		$defined_vars = get_defined_vars();
50
		$this->assertArrayHasKey( 'magicWords', $defined_vars );
51
52
		// validate structure
53
54
		$data = json_decode( json_encode( $defined_vars[ 'magicWords' ] ) );
55
56
		$validator = new \JsonSchema\Validator();
57
		$validator->check( $data, (object)[ '$ref' =>
58
			'file://' . realpath( __DIR__ . '/../Fixture/magicWordsSchema.json' ) ] );
59
60
		// format error message
61
		$errors = implode( '', array_map(
62
			function ( $error ) {
63
				return "* [{$error[ 'property' ]}] {$error[ 'message' ]}\n";
0 ignored issues
show
Coding Style Best Practice introduced by
As per coding-style, please use concatenation or sprintf for the variable $error instead of interpolation.

It is generally a best practice as it is often more readable to use concatenation instead of interpolation for variables inside strings.

// Instead of
$x = "foo $bar $baz";

// Better use either
$x = "foo " . $bar . " " . $baz;
$x = sprintf("foo %s %s", $bar, $baz);
Loading history...
64
			},
65
			$validator->getErrors()
66
		) );
67
68
		// assert structure is valid
69
		$this->assertTrue( $validator->isValid(), "JSON does not validate. Violations:\n" . $errors );
70
	}
71
}
72