Skip to content
This repository was archived by the owner on Sep 10, 2021. It is now read-only.

Commit bc8b2af

Browse files
committed
ENH: refs #0284. Add a freaking awesome test for folder deletion
1 parent 80ec1d7 commit bc8b2af

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed

core/tests/models/base/FolderModelTest.php

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,109 @@ public function testAddItem()
121121
$items = $folder->getItems();
122122
$this->assertEquals(1, count($items));
123123
}
124+
125+
/**
126+
* Make sure deleting a folder deletes its child items when they are
127+
* unique to that folder.
128+
*/
129+
public function testDeleteFolderDeletesItem()
130+
{
131+
$folder = $this->Folder->createFolder('TestFolder1', 'Description', 0);
132+
$this->assertTrue($folder->saved);
133+
134+
$item = new ItemDao();
135+
$item->setName('subItem');
136+
$item->setDescription('test item to be deleted');
137+
$item->setType(0);
138+
$this->Item->save($item);
139+
$this->assertTrue($item->saved);
140+
$this->Folder->addItem($folder, $item);
141+
$items = $folder->getItems();
142+
$this->assertEquals(1, count($items));
143+
$this->assertEquals($items[0]->getName(), 'subItem');
144+
$folderid = $folder->getKey();
145+
$itemid = $items[0]->getKey();
146+
147+
// Make sure item gets deleted when we delete its parent folder
148+
$this->Folder->delete($folder, true);
149+
$folder = $this->Folder->load($folderid);
150+
$this->assertEquals(false, $folder);
151+
$item = $this->Item->load($itemid);
152+
$this->assertEquals(false, $item);
153+
}
154+
155+
/**
156+
* Make sure deleting a folder does not delete its child item if that
157+
* item is contained in another folder.
158+
*/
159+
public function testDeleteFolderDoesNotDeleteSharedItem()
160+
{
161+
$folder1 = $this->Folder->createFolder('TestFolder1', 'Description', 0);
162+
$folder2 = $this->Folder->createFolder('TestFolder2', 'Description', 0);
163+
$this->assertTrue($folder1->saved);
164+
$this->assertTrue($folder2->saved);
165+
166+
$item = new ItemDao();
167+
$item->setName('subItemShared');
168+
$item->setDescription('test item');
169+
$item->setType(0);
170+
$this->Item->save($item);
171+
$this->assertTrue($item->saved);
172+
$this->Folder->addItem($folder1, $item);
173+
$this->Folder->addItem($folder2, $item);
174+
$items1 = $folder1->getItems();
175+
$this->assertEquals(1, count($items1));
176+
$this->assertEquals($items1[0]->getName(), 'subItemShared');
177+
$items2 = $folder2->getItems();
178+
$this->assertEquals(1, count($items2));
179+
$this->assertEquals($items2[0]->getName(), 'subItemShared');
180+
$folderid1 = $folder1->getKey();
181+
$folderid2 = $folder2->getKey();
182+
$itemid = $items2[0]->getKey();
183+
184+
// Make sure item was not deleted
185+
$this->Folder->delete($folder1, true);
186+
$folder = $this->Folder->load($folderid1);
187+
$this->assertEquals(false, $folder);
188+
$item = $this->Item->load($itemid);
189+
$this->assertNotEquals(false, $item, 'Item should not have been deleted');
190+
191+
// Make sure item record still exists in 2nd folder
192+
$folder2 = $this->Folder->load($folderid2);
193+
$items = $folder2->getItems();
194+
$this->assertEquals(1, count($items), 'Item record was deleted from second folder');
195+
$this->assertEquals($items[0]->getName(), 'subItemShared');
196+
197+
// Delete second folder, make sure item is then deleted
198+
$this->Folder->delete($folder2, true);
199+
$item = $this->Item->load($itemid);
200+
$this->assertEquals(false, $item, 'Item should have been deleted');
201+
}
202+
203+
/**
204+
* Test that calling removeItem from a folder deletes a non-shared item
205+
*/
206+
public function testRemoveItemDeletesNonSharedItem()
207+
{
208+
$folder = $this->Folder->createFolder('TestFolder1', 'Description', 0);
209+
$this->assertTrue($folder->saved);
210+
211+
$item = new ItemDao();
212+
$item->setName('subItem');
213+
$item->setDescription('test item to be deleted');
214+
$item->setType(0);
215+
$this->Item->save($item);
216+
$this->assertTrue($item->saved);
217+
$this->Folder->addItem($folder, $item);
218+
$items = $folder->getItems();
219+
$this->assertEquals(1, count($items));
220+
$this->assertEquals($items[0]->getName(), 'subItem');
221+
$folderid = $folder->getKey();
222+
$itemid = $items[0]->getKey();
223+
224+
// Make sure item is deleted when it is removed from its only parent
225+
$this->Folder->removeItem($folder, $item);
226+
$item = $this->Item->load($itemid);
227+
$this->assertEquals(false, $item, 'Item should have been deleted');
228+
}
124229
}

0 commit comments

Comments
 (0)