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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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
112
113
114
115
116
117
118
|
<?php
/**
* Elgg Test metadata API
*
* @package Elgg
* @subpackage Test
*/
class ElggCoreMetadataAPITest extends ElggCoreUnitTest {
protected $metastrings;
/**
* Called before each test method.
*/
public function setUp() {
$this->metastrings = array();
$this->object = new ElggObject();
}
/**
* Called after each test method.
*/
public function tearDown() {
// do not allow SimpleTest to interpret Elgg notices as exceptions
$this->swallowErrors();
unset($this->object);
}
public function testGetMetastringById() {
foreach (array('metaUnitTest', 'metaunittest', 'METAUNITTEST') as $string) {
$this->create_metastring($string);
}
// lookup metastring id
$cs_ids = get_metastring_id('metaUnitTest', TRUE);
$this->assertEqual($cs_ids, $this->metastrings['metaUnitTest']);
// lookup all metastrings, ignoring case
$cs_ids = get_metastring_id('metaUnitTest', FALSE);
$this->assertEqual(count($cs_ids), 3);
$this->assertEqual(count($cs_ids), count($this->metastrings));
foreach ($cs_ids as $string )
{
$this->assertTrue(in_array($string, $this->metastrings));
}
// clean up
$this->delete_metastrings();
}
public function testElggGetEntitiesFromMetadata() {
global $CONFIG, $METASTRINGS_CACHE, $METASTRINGS_DEADNAME_CACHE;
$METASTRINGS_CACHE = $METASTRINGS_DEADNAME_CACHE = array();
$this->object->title = 'Meta Unit Test';
$this->object->save();
$this->create_metastring('metaUnitTest');
$this->create_metastring('tested');
// create_metadata returns id of metadata on success
$this->assertNotEqual(false, create_metadata($this->object->guid, 'metaUnitTest', 'tested'));
// check value with improper case
$options = array('metadata_names' => 'metaUnitTest', 'metadata_values' => 'Tested', 'limit' => 10, 'metadata_case_sensitive' => TRUE);
$this->assertIdentical(array(), elgg_get_entities_from_metadata($options));
// compare forced case with ignored case
$options = array('metadata_names' => 'metaUnitTest', 'metadata_values' => 'tested', 'limit' => 10, 'metadata_case_sensitive' => TRUE);
$case_true = elgg_get_entities_from_metadata($options);
$this->assertIsA($case_true, 'array');
$options = array('metadata_names' => 'metaUnitTest', 'metadata_values' => 'Tested', 'limit' => 10, 'metadata_case_sensitive' => FALSE);
$case_false = elgg_get_entities_from_metadata($options);
$this->assertIsA($case_false, 'array');
$this->assertIdentical($case_true, $case_false);
// clean up
$this->object->delete();
$this->delete_metastrings();
}
public function testElggGetMetadataCount() {
$this->object->title = 'Meta Unit Test';
$this->object->save();
$guid = $this->object->getGUID();
create_metadata($guid, 'tested', 'tested1', 'text', 0, ACCESS_PUBLIC, true);
create_metadata($guid, 'tested', 'tested2', 'text', 0, ACCESS_PUBLIC, true);
$count = (int)elgg_get_metadata(array(
'metadata_names' => array('tested'),
'guid' => $guid,
'count' => true,
));
$this->assertIdentical($count, 2);
$this->object->delete();
}
protected function create_metastring($string) {
global $CONFIG, $METASTRINGS_CACHE, $METASTRINGS_DEADNAME_CACHE;
$METASTRINGS_CACHE = $METASTRINGS_DEADNAME_CACHE = array();
mysql_query("INSERT INTO {$CONFIG->dbprefix}metastrings (string) VALUES ('$string')");
$this->metastrings[$string] = mysql_insert_id();
}
protected function delete_metastrings() {
global $CONFIG, $METASTRINGS_CACHE, $METASTRINGS_DEADNAME_CACHE;
$METASTRINGS_CACHE = $METASTRINGS_DEADNAME_CACHE = array();
$strings = implode(', ', $this->metastrings);
mysql_query("DELETE FROM {$CONFIG->dbprefix}metastrings WHERE id IN ($strings)");
}
}
|