| 
									
										
										
										
											2017-04-16 22:13:09 +01:00
										 |  |  | var testPackage = require('../../helpers/test-package'); | 
					
						
							|  |  |  | var Dgeni = require('dgeni'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('convertToJson processor', () => { | 
					
						
							|  |  |  |   var dgeni, injector, processor, log; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-15 15:10:31 +03:00
										 |  |  |   beforeEach(function() { | 
					
						
							| 
									
										
										
										
											2017-04-21 13:10:52 +01:00
										 |  |  |     dgeni = new Dgeni([testPackage('angular-base-package')]); | 
					
						
							| 
									
										
										
										
											2017-04-16 22:13:09 +01:00
										 |  |  |     injector = dgeni.configureInjector(); | 
					
						
							|  |  |  |     processor = injector.get('convertToJsonProcessor'); | 
					
						
							|  |  |  |     log = injector.get('log'); | 
					
						
							|  |  |  |     processor.docTypes = ['test-doc']; | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should be part of the dgeni package', () => { | 
					
						
							|  |  |  |     expect(processor).toBeDefined(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should convert the renderedContent to JSON', () => { | 
					
						
							|  |  |  |     const docs = [{ | 
					
						
							|  |  |  |       docType: 'test-doc', | 
					
						
							|  |  |  |       title: 'The Title', | 
					
						
							|  |  |  |       name: 'The Name', | 
					
						
							| 
									
										
										
										
											2017-04-20 12:55:34 +01:00
										 |  |  |       path: 'test/doc', | 
					
						
							| 
									
										
										
										
											2017-04-16 22:13:09 +01:00
										 |  |  |       renderedContent: 'Some Content' | 
					
						
							|  |  |  |     }]; | 
					
						
							|  |  |  |     processor.$process(docs); | 
					
						
							| 
									
										
										
										
											2017-04-20 12:55:34 +01:00
										 |  |  |     expect(JSON.parse(docs[0].renderedContent).id).toEqual('test/doc'); | 
					
						
							| 
									
										
										
										
											2017-04-16 22:13:09 +01:00
										 |  |  |     expect(JSON.parse(docs[0].renderedContent).title).toEqual('The Title'); | 
					
						
							|  |  |  |     expect(JSON.parse(docs[0].renderedContent).contents).toEqual('Some Content'); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should get the title from name if no title is specified', () => { | 
					
						
							|  |  |  |     const docs = [{ docType: 'test-doc', name: 'The Name' }]; | 
					
						
							|  |  |  |     processor.$process(docs); | 
					
						
							|  |  |  |     expect(JSON.parse(docs[0].renderedContent).title).toEqual('The Name'); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-19 09:56:39 +01:00
										 |  |  |   it('should accept an empty title', () => { | 
					
						
							|  |  |  |     const docs = [{ docType: 'test-doc', title: '' }]; | 
					
						
							|  |  |  |     processor.$process(docs); | 
					
						
							|  |  |  |     expect(JSON.parse(docs[0].renderedContent).title).toEqual(''); | 
					
						
							|  |  |  |     expect(log.warn).not.toHaveBeenCalled(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should accept an empty name if title is not provided', () => { | 
					
						
							|  |  |  |     const docs = [{ docType: 'test-doc', name: '' }]; | 
					
						
							|  |  |  |     processor.$process(docs); | 
					
						
							|  |  |  |     expect(JSON.parse(docs[0].renderedContent).title).toEqual(''); | 
					
						
							|  |  |  |     expect(log.warn).not.toHaveBeenCalled(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-30 22:24:44 +03:00
										 |  |  |   it('should get the title from the title extracted from the h1 in the rendered content if no title property is specified', () => { | 
					
						
							|  |  |  |     const docs = [{ | 
					
						
							|  |  |  |       docType: 'test-doc', | 
					
						
							|  |  |  |       vFile: { title: 'Some title' }, | 
					
						
							|  |  |  |       renderedContent: '<div><h1 class="title">Some title</h1><article><h1>Article 1</h1></article></div>' | 
					
						
							|  |  |  |     }]; | 
					
						
							| 
									
										
										
										
											2017-04-16 22:13:09 +01:00
										 |  |  |     processor.$process(docs); | 
					
						
							|  |  |  |     expect(JSON.parse(docs[0].renderedContent).contents).toEqual('<div><h1 class="title">Some title</h1><article><h1>Article 1</h1></article></div>'); | 
					
						
							|  |  |  |     expect(JSON.parse(docs[0].renderedContent).title).toEqual('Some title'); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should set missing titles to empty', () => { | 
					
						
							|  |  |  |     const docs = [{ docType: 'test-doc' }]; | 
					
						
							|  |  |  |     processor.$process(docs); | 
					
						
							|  |  |  |     expect(JSON.parse(docs[0].renderedContent).title).toBe(''); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should log a warning', () => { | 
					
						
							|  |  |  |     const docs = [{ docType: 'test-doc' }]; | 
					
						
							|  |  |  |     processor.$process(docs); | 
					
						
							| 
									
										
										
										
											2017-10-25 15:02:01 +01:00
										 |  |  |     expect(log.warn).toHaveBeenCalledWith('Title property expected - doc (test-doc) '); | 
					
						
							| 
									
										
										
										
											2017-04-16 22:13:09 +01:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2019-07-15 15:10:31 +03:00
										 |  |  | }); |