1<?php 2 3namespace Elgg\Pages; 4 5use ElggPage; 6 7/** 8 * Integration test for ElggPage 9 */ 10class ElggPageIntegrationTest extends \Elgg\IntegrationTestCase { 11 12 /** 13 * @var \ElggUser 14 */ 15 protected $user; 16 17 /** 18 * @var ElggPage 19 */ 20 protected $top_page; 21 22 /** 23 * @var ElggPage 24 */ 25 protected $page; 26 27 /** 28 * {@inheritDoc} 29 */ 30 public function up() { 31 $this->user = $this->createUser(); 32 33 $session = elgg_get_session(); 34 $session->setLoggedInUser($this->user); 35 36 // create a top page 37 $top_page = new ElggPage(); 38 $top_page->owner_guid = $this->user->guid; 39 $top_page->container_guid = $this->user->guid; 40 $top_page->title = 'Test ElggPage top'; 41 $top_page->description = 'This is a test for ElggPage'; 42 43 $this->assertNotFalse($top_page->save()); 44 $this->top_page = $top_page; 45 46 $page = new ElggPage(); 47 $page->owner_guid = $this->user->guid; 48 $page->container_guid = $this->user->guid; 49 $page->title = 'Test ElggPage sub'; 50 $page->description = 'This is a test for ElggPage which is a sub page'; 51 $page->parent_guid = $this->top_page->guid; 52 53 $this->assertNotFalse($page->save()); 54 $this->page = $page; 55 } 56 57 /** 58 * {@inheritDoc} 59 */ 60 public function down() { 61 62 if (isset($this->top_page)) { 63 $this->top_page->delete(); 64 } 65 66 if (isset($this->page)) { 67 $this->page->delete(); 68 } 69 70 $session = elgg_get_session(); 71 $session->setLoggedInUser($this->getAdmin()); 72 73 if (isset($this->user)) { 74 $this->user->delete(); 75 } 76 77 $session->removeLoggedInUser(); 78 } 79 80 public function testCreateObjectToClass() { 81 82 /* @var $page \ElggPage */ 83 $page = $this->createObject([ 84 'subtype' => 'page', 85 'owner_guid' => $this->user->guid, 86 'container_guid' => $this->user->guid, 87 'title' => 'Test ElggPage', 88 'description' => 'This is a test for ElggPage', 89 ]); 90 91 $this->assertInstanceOf(ElggPage::class, $page); 92 $this->assertNotEmpty($page->guid); 93 $this->assertEquals($this->user->guid, $page->owner_guid); 94 $this->assertEquals($this->user->guid, $page->container_guid); 95 $this->assertEquals('page', $page->getSubtype()); 96 } 97 98 public function testIsTopPage() { 99 100 $top_page = $this->top_page; 101 102 $this->assertInstanceOf(ElggPage::class, $top_page); 103 $this->assertTrue($top_page->isTopPage()); 104 105 $page = $this->page; 106 107 $this->assertInstanceOf(ElggPage::class, $page); 108 $this->assertFalse($page->isTopPage()); 109 } 110 111 public function testGetParentEntity() { 112 113 $top_page = $this->top_page; 114 $page = $this->page; 115 116 $this->assertInstanceOf(ElggPage::class, $top_page); 117 $this->assertInstanceOf(ElggPage::class, $page); 118 119 $this->assertFalse($top_page->getParentEntity()); 120 $this->assertEquals($page->getParentEntity()->guid, $top_page->guid); 121 122 // invalid parent page (non ElggPage guid) 123 $page->parent_guid = $this->user->guid; 124 125 $this->assertEquals($this->user->guid, $page->parent_guid); 126 $this->assertFalse($page->getParentEntity()); 127 128 // invalid parent page (non guid) 129 $page->parent_guid = 'a'; 130 131 $this->assertEquals('a', $page->parent_guid); 132 $this->assertFalse($page->getParentEntity()); 133 134 // invalid parent page (no metadata) 135 $page->parent_guid = null; 136 137 $this->assertNull($page->parent_guid); 138 $this->assertFalse($page->getParentEntity()); 139 } 140 141 public function testGetParentGUID() { 142 143 $top_page = $this->top_page; 144 $page = $this->page; 145 146 $this->assertInstanceOf(ElggPage::class, $top_page); 147 $this->assertInstanceOf(ElggPage::class, $page); 148 149 $this->assertEquals(0, $top_page->getParentGUID()); 150 $this->assertEquals($top_page->guid, $page->getParentGUID()); 151 152 // invalid parent page (non ElggPage guid) 153 $page->parent_guid = $this->user->guid; 154 155 $this->assertEquals($this->user->guid, $page->parent_guid); 156 $this->assertEquals($this->user->guid, $page->getParentGUID()); 157 158 // invalid parent page (non guid) 159 $page->parent_guid = 'a'; 160 161 $this->assertEquals('a', $page->parent_guid); 162 $this->assertNotEquals('a', $page->getParentGUID()); 163 164 // invalid parent page (no metadata) 165 $page->parent_guid = null; 166 167 $this->assertNull($page->parent_guid); 168 $this->assertEquals(0, $page->getParentGUID()); 169 } 170 171 public function testSetParentByGUID() { 172 173 $top_page = $this->top_page; 174 $page = $this->page; 175 176 $this->assertInstanceOf(ElggPage::class, $top_page); 177 $this->assertInstanceOf(ElggPage::class, $page); 178 179 // set to 0 180 $this->assertTrue($page->setParentByGUID(0)); 181 $this->assertEquals(0, $page->getParentGUID()); 182 183 // set to valid ElggPage 184 $this->assertTrue($page->setParentByGUID($top_page->guid)); 185 $this->assertEquals($top_page->guid, $page->getParentGUID()); 186 187 // set to non ElggPage 188 $this->assertFalse($page->setParentByGUID($this->user->guid)); 189 $this->assertNotEquals($this->user->guid, $page->getParentGUID()); 190 } 191 192 public function testSetParentEntity() { 193 194 $top_page = $this->top_page; 195 $page = $this->page; 196 197 $this->assertInstanceOf(ElggPage::class, $top_page); 198 $this->assertInstanceOf(ElggPage::class, $page); 199 200 // set to empty 201 $this->assertTrue($page->setParentEntity(null)); 202 $this->assertEquals(0, $page->getParentGUID()); 203 204 // set to valid ElggPage 205 $this->assertTrue($page->setParentEntity($top_page)); 206 $this->assertEquals($top_page->guid, $page->getParentGUID()); 207 208 // set to non ElggPage 209 $this->assertFalse($page->setParentEntity($this->user)); 210 $this->assertNotEquals($this->user->guid, $page->getParentGUID()); 211 } 212} 213