@@ -121,4 +121,109 @@ public function testAddItem()
121
121
$ items = $ folder ->getItems ();
122
122
$ this ->assertEquals (1 , count ($ items ));
123
123
}
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
+ }
124
229
}
0 commit comments