Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
/**
* @file
* Contains \Drupal\Tests\Core\Cache\CacheTest.
*/
namespace Drupal\Tests\Core\Cache;
use Drupal\Core\Cache\Cache;
use Drupal\Tests\UnitTestCase;
/**
* @coversDefaultClass \Drupal\Core\Cache\Cache
* @group Cache
*/
class CacheTest extends UnitTestCase {
/**
* Provides a list of cache tags arrays.
*
* @return array
*/
public function validateTagsProvider() {
return [
[[], FALSE],
[['foo'], FALSE],
[['foo', 'bar'], FALSE],
[['foo', 'bar', 'llama:2001988', 'baz', 'llama:14031991'], FALSE],
[[FALSE], 'Cache tags must be strings, boolean given.'],
[[TRUE], 'Cache tags must be strings, boolean given.'],
[['foo', FALSE], 'Cache tags must be strings, boolean given.'],
[[NULL], 'Cache tags must be strings, NULL given.'],
[['foo', NULL], 'Cache tags must be strings, NULL given.'],
[[1337], 'Cache tags must be strings, integer given.'],
[['foo', 1337], 'Cache tags must be strings, integer given.'],
[[3.14], 'Cache tags must be strings, double given.'],
[['foo', 3.14], 'Cache tags must be strings, double given.'],
[[[]], 'Cache tags must be strings, array given.'],
[['foo', []], 'Cache tags must be strings, array given.'],
[['foo', ['bar']], 'Cache tags must be strings, array given.'],
[[new \stdClass()], 'Cache tags must be strings, object given.'],
[['foo', new \stdClass()], 'Cache tags must be strings, object given.'],
];
}
/**
Alex Pott
committed
* @covers ::validateTags
*
* @dataProvider validateTagsProvider
*/
public function testValidateTags(array $tags, $expected_exception_message) {
if ($expected_exception_message !== FALSE) {
$this->setExpectedException('LogicException', $expected_exception_message);
}
// If it doesn't throw an exception, validateTags() returns NULL.
$this->assertNull(Cache::validateTags($tags));
}
/**
* Provides a list of pairs of cache tags arrays to be merged.
*
* @return array
*/
public function mergeTagsProvider() {
return [
[[], [], []],
[['bar'], ['foo'], ['bar', 'foo']],
[['foo'], ['bar'], ['bar', 'foo']],
[['foo'], ['bar', 'foo'], ['bar', 'foo']],
[['foo'], ['foo', 'bar'], ['bar', 'foo']],
[['bar', 'foo'], ['foo', 'bar'], ['bar', 'foo']],
[['foo', 'bar'], ['foo', 'bar'], ['bar', 'foo']],
];
}
/**
Alex Pott
committed
* @covers ::mergeTags
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
*
* @dataProvider mergeTagsProvider
*/
public function testMergeTags(array $a, array $b, array $expected) {
$this->assertEquals($expected, Cache::mergeTags($a, $b));
}
/**
* Provides a list of pairs of (prefix, suffixes) to build cache tags from.
*
* @return array
*/
public function buildTagsProvider() {
return [
['node', [1], ['node:1']],
['node', [1, 2, 3], ['node:1', 'node:2', 'node:3']],
['node', [3, 2, 1], ['node:3', 'node:2', 'node:1']],
['node', [NULL], ['node:']],
['node', [TRUE, FALSE], ['node:1', 'node:']],
['node', ['a', 'z', 'b'], ['node:a', 'node:z', 'node:b']],
// No suffixes, no cache tags.
['', [], []],
['node', [], []],
// Only suffix values matter, not keys: verify that expectation.
['node', [5 => 145, 4545 => 3], ['node:145', 'node:3']],
['node', [5 => TRUE], ['node:1']],
['node', [5 => NULL], ['node:']],
['node', ['a' => NULL], ['node:']],
['node', ['a' => TRUE], ['node:1']],
];
}
/**
Alex Pott
committed
* @covers ::buildTags
*
* @dataProvider buildTagsProvider
*/
public function testBuildTags($prefix, array $suffixes, array $expected) {
$this->assertEquals($expected, Cache::buildTags($prefix, $suffixes));
}
/**
Alex Pott
committed
* @covers ::deleteTags
*
* @expectedException \LogicException
* @expectedExceptionMessage Cache tags must be strings, array given.
*/
public function testDeleteTags() {
Cache::deleteTags(['node' => [2, 3, 5, 8, 13]]);
}
/**
Alex Pott
committed
* @covers ::invalidateTags
*
* @expectedException \LogicException
* @expectedExceptionMessage Cache tags must be strings, array given.
*/
public function testInvalidateTags() {
Cache::invalidateTags(['node' => [2, 3, 5, 8, 13]]);