Open Journal Systems  3.3.0
DataObjectTest.php
1 <?php
2 
17 import('lib.pkp.tests.PKPTestCase');
18 import('lib.pkp.classes.core.DataObject');
19 
20 class DataObjectTest extends PKPTestCase {
22  protected $dataObject;
23 
24  protected function setUp() : void {
25  parent::setUp();
26  $this->dataObject = new DataObject();
27  }
28 
34  public function testSetGetData() {
35  // Set data with and without locale
36  $this->dataObject->setData('testVar1', 'testVal1');
37  $this->dataObject->setData('testVar2', 'testVal2_US', 'en_US');
38  $this->dataObject->setData('testVar2', 'testVal2_DE', 'de_DE');
39  $expectedResult = array(
40  'testVar1' => 'testVal1',
41  'testVar2' => array(
42  'en_US' => 'testVal2_US',
43  'de_DE' => 'testVal2_DE'
44  )
45  );
46  self::assertEquals($expectedResult, $this->dataObject->getAllData());
47  self::assertEquals('testVal1', $this->dataObject->getData('testVar1'));
48  // test for http://bugs.php.net/bug.php?id=29848
49  self::assertNull($this->dataObject->getData('testVar1', 'en_US'));
50  self::assertEquals('testVal2_US', $this->dataObject->getData('testVar2', 'en_US'));
51 
52  // Unset a few values
53  $this->dataObject->unsetData('testVar1');
54  $this->dataObject->unsetData('testVar2', 'en_US');
55  $expectedResult = array(
56  'testVar2' => array(
57  'de_DE' => 'testVal2_DE'
58  )
59  );
60  self::assertEquals($expectedResult, $this->dataObject->getAllData());
61 
62  // Make sure that un-setting a non-existent value doesn't hurt
63  $this->dataObject->unsetData('testVar1');
64  $this->dataObject->unsetData('testVar2', 'en_US');
65  self::assertEquals($expectedResult, $this->dataObject->getAllData());
66 
67  // Make sure that getting a non-existent value doesn't hurt
68  self::assertNull($this->dataObject->getData('testVar1'));
69  self::assertNull($this->dataObject->getData('testVar1', 'en_US'));
70  self::assertNull($this->dataObject->getData('testVar2', 'en_US'));
71 
72  // Unsetting the whole translation set will kill the variable
73  $this->dataObject->unsetData('testVar2');
74  self::assertEquals(array(), $this->dataObject->getAllData());
75 
76  // Test by-ref behaviour
77  $testVal1 = 'testVal1';
78  $testVal2 = 'testVal2';
79  $this->dataObject->setData('testVar1', $testVal1);
80  $this->dataObject->setData('testVar2', $testVal2, 'en_US');
81  $testVal1 = $testVal2 = 'something else';
82  $expectedResult = array(
83  'testVar1' => 'testVal1',
84  'testVar2' => array(
85  'en_US' => 'testVal2'
86  )
87  );
88  $result =& $this->dataObject->getAllData();
89  self::assertEquals($expectedResult, $result);
90 
91  // Should be returned by-ref:
92  $testVal1 =& $this->dataObject->getData('testVar1');
93  $testVal2 =& $this->dataObject->getData('testVar2', 'en_US');
94  $testVal1 = $testVal2 = 'something else';
95  $expectedResult = array(
96  'testVar1' => 'something else',
97  'testVar2' => array(
98  'en_US' => 'something else'
99  )
100  );
101  $result =& $this->dataObject->getAllData();
102  self::assertEquals($expectedResult, $result);
103  }
104 
108  public function testSetAllData() {
109  $expectedResult = array('someKey' => 'someVal');
110  $this->dataObject->setAllData($expectedResult);
111  $result =& $this->dataObject->getAllData();
112  self::assertEquals($expectedResult, $result);
113 
114  // Test by-ref
115  $expectedResult = array('someOtherKey' => 'someOtherVal');
116  self::assertEquals($expectedResult, $result);
117  }
118 
122  public function testHasData() {
123  $testData = array(
124  'testVar1' => 'testVal1',
125  'testVar2' => array(
126  'en_US' => 'testVal2'
127  )
128  );
129  $this->dataObject->setAllData($testData);
130  self::assertTrue($this->dataObject->hasData('testVar1'));
131  self::assertTrue($this->dataObject->hasData('testVar2'));
132  self::assertTrue($this->dataObject->hasData('testVar2', 'en_US'));
133  self::assertFalse($this->dataObject->hasData('testVar1', 'en_US'));
134  self::assertFalse($this->dataObject->hasData('testVar2', 'de_DE'));
135  self::assertFalse($this->dataObject->hasData('testVar3'));
136  self::assertFalse($this->dataObject->hasData('testVar3', 'en_US'));
137  }
138 }
139 
DataObjectTest\testHasData
testHasData()
Definition: DataObjectTest.php:125
DataObjectTest\$dataObject
$dataObject
Definition: DataObjectTest.php:25
DataObject
Any class with an associated DAO should extend this class.
Definition: DataObject.inc.php:18
DataObjectTest
Tests for the DataObject class.
Definition: DataObjectTest.php:20
PKPTestCase
Class that implements functionality common to all PKP unit test cases.
Definition: PKPTestCase.inc.php:27
DataObjectTest\setUp
setUp()
Definition: DataObjectTest.php:27
DataObjectTest\testSetAllData
testSetAllData()
Definition: DataObjectTest.php:111
DataObjectTest\testSetGetData
testSetGetData()
Definition: DataObjectTest.php:37