Completed
Push — master ( a7ac36...44c26f )
by Jeroen De
02:07 queued 10s
created

testAcquiresAndReusesIdsForNewAndExistingTerms()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 28
rs 9.472
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Wikibase\TermStore\MediaWiki\Tests\Unit\PackagePrivate;
4
5
use PHPUnit\Framework\TestCase;
6
use Wikibase\TermStore\MediaWiki\PackagePrivate\InMemoryTermIdsAcquirer;
7
8
/**
9
 * @covers \Wikibase\TermStore\MediaWiki\PackagePrivate\InMemoryTermIdsAcquirer
10
 */
11
class InMemoryTermIdsAcquirerTest extends TestCase {
12
13
	public function testAcquiresUniqueIdsForNonExistingTerms() {
14
		$termsIdsAcquirer = new InMemoryTermIdsAcquirer();
15
16
		$ids = $termsIdsAcquirer->acquireTermIds( [
17
			'label' => [
18
				'en' => 'some label',
19
				'de' => 'another label',
20
			],
21
			'alias' => [
22
				'en' => [ 'alias', 'another alias' ],
23
				'de' => 'de alias'
24
			]
25
		] );
26
27
		$this->assertNoDuplicates( $ids );
28
	}
29
30
	public function testReusesIdsOfExistingTerms() {
31
		$termsIdsAcquirer = new InMemoryTermIdsAcquirer();
32
33
		$previouslyAcquiredIds = $termsIdsAcquirer->acquireTermIds( [
34
			'label' => [
35
				'en' => 'some label',
36
				'de' => 'another label',
37
			],
38
			'alias' => [
39
				'en' => [ 'alias', 'another alias' ],
40
				'de' => 'de alias'
41
			]
42
		] );
43
44
		$newlyAcquiredIds = $termsIdsAcquirer->acquireTermIds( [
45
			'label' => [
46
				'en' => 'some label',
47
				'de' => 'another label',
48
			],
49
			'alias' => [
50
				'en' => [ 'alias', 'another alias' ],
51
				'de' => 'de alias'
52
			]
53
		] );
54
55
		$this->assertEquals(
56
			$previouslyAcquiredIds,
57
			$newlyAcquiredIds
58
		);
59
	}
60
61
	public function testAcquiresAndReusesIdsForNewAndExistingTerms() {
62
		$termsIdsAcquirer = new InMemoryTermIdsAcquirer();
63
64
		$previouslyAcquiredIds = $termsIdsAcquirer->acquireTermIds( [
65
			'label' => [
66
				'en' => 'some label',
67
				'de' => 'another label',
68
			]
69
		] );
70
71
		$newlyAcquiredIds = $termsIdsAcquirer->acquireTermIds( [
72
			'label' => [
73
				'en' => 'some label',
74
				'de' => 'another label',
75
			],
76
			'alias' => [
77
				'en' => [ 'alias', 'another alias' ],
78
				'de' => 'de alias'
79
			]
80
		] );
81
82
		$this->assertNoDuplicates( $newlyAcquiredIds );
83
84
		$this->assertEquals(
85
			$previouslyAcquiredIds,
86
			array_intersect( $previouslyAcquiredIds, $newlyAcquiredIds )
87
		);
88
	}
89
90
	private function assertNoDuplicates( $ids ) {
91
		$this->assertEquals(
92
			count( $ids ),
93
			count( array_unique( $ids ) )
94
		);
95
	}
96
97
}
98