| 
									
										
										
										
											2022-04-13 12:52:44 +02:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-05 10:32:20 +02:00
										 |  |  | const { createTestBuilder } = require('api-tests/builder'); | 
					
						
							|  |  |  | const { createStrapiInstance } = require('api-tests/strapi'); | 
					
						
							|  |  |  | const { createAuthRequest } = require('api-tests/request'); | 
					
						
							| 
									
										
										
										
											2022-04-13 12:52:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | let strapi; | 
					
						
							|  |  |  | let rq; | 
					
						
							| 
									
										
										
										
											2022-08-08 15:50:34 +02:00
										 |  |  | const data = { | 
					
						
							| 
									
										
										
										
											2022-04-13 12:52:44 +02:00
										 |  |  |   folders: [], | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const createFolder = async (name, parent = null) => { | 
					
						
							|  |  |  |   const res = await rq({ | 
					
						
							|  |  |  |     method: 'POST', | 
					
						
							|  |  |  |     url: '/upload/folders', | 
					
						
							|  |  |  |     body: { name, parent }, | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  |   return res.body.data; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('Folder structure', () => { | 
					
						
							|  |  |  |   const builder = createTestBuilder(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   beforeAll(async () => { | 
					
						
							|  |  |  |     strapi = await createStrapiInstance(); | 
					
						
							|  |  |  |     rq = await createAuthRequest({ strapi }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-05 18:55:00 +02:00
										 |  |  |     // delete all possibly existing folders
 | 
					
						
							|  |  |  |     const res = await rq({ | 
					
						
							|  |  |  |       method: 'GET', | 
					
						
							| 
									
										
										
										
											2022-05-19 14:47:23 +02:00
										 |  |  |       url: '/upload/folders', | 
					
						
							| 
									
										
										
										
											2022-05-05 18:55:00 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await rq({ | 
					
						
							|  |  |  |       method: 'POST', | 
					
						
							|  |  |  |       url: '/upload/actions/bulk-delete', | 
					
						
							|  |  |  |       body: { | 
					
						
							| 
									
										
										
										
											2022-08-08 23:33:39 +02:00
										 |  |  |         folderIds: res.body.data.map((f) => f.id), | 
					
						
							| 
									
										
										
										
											2022-05-05 18:55:00 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 12:52:44 +02:00
										 |  |  |     const rootFolder1 = await createFolder('folder1'); | 
					
						
							|  |  |  |     const rootFolder2 = await createFolder('folder2'); | 
					
						
							|  |  |  |     const nestedFolder1a = await createFolder('folder1A', rootFolder1.id); | 
					
						
							|  |  |  |     const nestedFolder1b = await createFolder('folder1B', rootFolder1.id); | 
					
						
							|  |  |  |     const nestedFolder1a1 = await createFolder('folder1A1', nestedFolder1a.id); | 
					
						
							|  |  |  |     data.folders.push(rootFolder1, rootFolder2, nestedFolder1a, nestedFolder1b, nestedFolder1a1); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   afterAll(async () => { | 
					
						
							|  |  |  |     await rq({ | 
					
						
							|  |  |  |       method: 'POST', | 
					
						
							| 
									
										
										
										
											2022-04-26 11:23:07 +02:00
										 |  |  |       url: '/upload/actions/bulk-delete', | 
					
						
							| 
									
										
										
										
											2022-04-13 12:52:44 +02:00
										 |  |  |       body: { | 
					
						
							| 
									
										
										
										
											2022-08-08 23:33:39 +02:00
										 |  |  |         folderIds: data.folders.map((f) => f.id), | 
					
						
							| 
									
										
										
										
											2022-04-13 12:52:44 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await strapi.destroy(); | 
					
						
							|  |  |  |     await builder.cleanup(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe('Read', () => { | 
					
						
							|  |  |  |     test('get structure', async () => { | 
					
						
							|  |  |  |       const res = await rq({ | 
					
						
							|  |  |  |         method: 'GET', | 
					
						
							|  |  |  |         url: '/upload/folder-structure', | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(res.statusCode).toBe(200); | 
					
						
							|  |  |  |       expect(res.body).toMatchObject({ | 
					
						
							|  |  |  |         data: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             children: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 children: [{ children: [], id: expect.anything(), name: 'folder1A1' }], | 
					
						
							|  |  |  |                 id: expect.anything(), | 
					
						
							|  |  |  |                 name: 'folder1A', | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |               { children: [], id: expect.anything(), name: 'folder1B' }, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |             id: expect.anything(), | 
					
						
							|  |  |  |             name: 'folder1', | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |           { children: [], id: expect.anything(), name: 'folder2' }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |