| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  | const { isFunction, map } = require('lodash/fp'); | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  | const modelsUtils = require('../models'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const stringifyDates = object => | 
					
						
							|  |  |  |   JSON.parse( | 
					
						
							|  |  |  |     JSON.stringify(object, (key, value) => { | 
					
						
							|  |  |  |       if (this[key] instanceof Date) { | 
					
						
							|  |  |  |         return this[key].toUTCString(); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       return value; | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const formatFixtures = map(stringifyDates); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = { | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |   contentType: { | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |     create: contentType => { | 
					
						
							|  |  |  |       let createdModel; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return { | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |         async build(ctx) { | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |           createdModel = await modelsUtils.createContentType(contentType); | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |           ctx.addModel(createdModel); | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |         }, | 
					
						
							| 
									
										
										
										
											2021-07-06 14:18:03 +02:00
										 |  |  |         cleanup: () => modelsUtils.deleteContentType(createdModel.uid), | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |       }; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     createBatch: contentTypes => { | 
					
						
							|  |  |  |       let createdModels = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return { | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |         async build(ctx) { | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |           createdModels = await modelsUtils.createContentTypes(contentTypes); | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |           createdModels.forEach(ctx.addModel); | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |         }, | 
					
						
							|  |  |  |         async cleanup() { | 
					
						
							|  |  |  |           for (const model of createdModels) { | 
					
						
							| 
									
										
										
										
											2021-07-06 14:18:03 +02:00
										 |  |  |             await modelsUtils.deleteContentType(model.uid); | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |           } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     createMany: contentTypes => { | 
					
						
							|  |  |  |       const createdModels = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return { | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |         async build(ctx) { | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |           for (const contentType of contentTypes) { | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |             const model = await modelsUtils.createContentType(contentType); | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |             createdModels.push(model); | 
					
						
							|  |  |  |             ctx.addModel(model); | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |         }, | 
					
						
							|  |  |  |         async cleanup() { | 
					
						
							|  |  |  |           for (const model of createdModels) { | 
					
						
							| 
									
										
										
										
											2021-07-06 14:18:03 +02:00
										 |  |  |             await modelsUtils.deleteContentType(model.uid); | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |           } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |   component: { | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |     create: component => { | 
					
						
							|  |  |  |       let createdModel; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return { | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |         async build(ctx) { | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |           createdModel = await modelsUtils.createComponent(component); | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |           ctx.addModel(createdModel); | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |         }, | 
					
						
							|  |  |  |         cleanup: () => modelsUtils.deleteComponent(createdModel.uid), | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   fixtures: { | 
					
						
							|  |  |  |     create(modelName, entries, getFixtures) { | 
					
						
							|  |  |  |       let createdEntries = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return { | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  |         async build(ctx) { | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |           createdEntries = formatFixtures( | 
					
						
							|  |  |  |             await modelsUtils.createFixturesFor( | 
					
						
							|  |  |  |               modelName, | 
					
						
							|  |  |  |               isFunction(entries) ? entries(getFixtures()) : entries | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  |           ); | 
					
						
							| 
									
										
										
										
											2021-01-05 14:24:53 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |           ctx.addFixtures(modelName, createdEntries); | 
					
						
							| 
									
										
										
										
											2021-01-04 11:32:43 +01:00
										 |  |  |         }, | 
					
						
							|  |  |  |         cleanup: () => modelsUtils.deleteFixturesFor(modelName, createdEntries), | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }; |