mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Add test for parseNfoMetadata
This commit is contained in:
		
							parent
							
								
									a4d4f1bc2e
								
							
						
					
					
						commit
						781d4f570f
					
				
							
								
								
									
										123
									
								
								test/server/utils/parsers/parseNfoMetadata.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								test/server/utils/parsers/parseNfoMetadata.test.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,123 @@ | ||||
| const chai = require('chai') | ||||
| const expect = chai.expect | ||||
| const { parseNfoMetadata } = require('../../../../server/utils/parsers/parseNfoMetadata') | ||||
| 
 | ||||
| describe('parseNfoMetadata', () => { | ||||
|   it('returns null if nfoText is empty', () => { | ||||
|     const result = parseNfoMetadata('') | ||||
|     expect(result).to.be.null | ||||
|   }) | ||||
| 
 | ||||
|   it('parses title', () => { | ||||
|     const nfoText = 'Title: The Great Gatsby' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.title).to.equal('The Great Gatsby') | ||||
|   }) | ||||
| 
 | ||||
|   it('parses title with subtitle', () => { | ||||
|     const nfoText = 'Title: The Great Gatsby: A Novel' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.title).to.equal('The Great Gatsby') | ||||
|     expect(result.subtitle).to.equal('A Novel') | ||||
|   }) | ||||
| 
 | ||||
|   it('parses authors', () => { | ||||
|     const nfoText = 'Author: F. Scott Fitzgerald' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.authors).to.deep.equal(['F. Scott Fitzgerald']) | ||||
|   }) | ||||
| 
 | ||||
|   it('parses multiple authors', () => { | ||||
|     const nfoText = 'Author: John Steinbeck, Ernest Hemingway' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.authors).to.deep.equal(['John Steinbeck', 'Ernest Hemingway']) | ||||
|   }) | ||||
| 
 | ||||
|   it('parses narrators', () => { | ||||
|     const nfoText = 'Read by: Jake Gyllenhaal' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.narrators).to.deep.equal(['Jake Gyllenhaal']) | ||||
|   }) | ||||
| 
 | ||||
|   it('parses multiple narrators', () => { | ||||
|     const nfoText = 'Read by: Jake Gyllenhaal, Kate Winslet' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.narrators).to.deep.equal(['Jake Gyllenhaal', 'Kate Winslet']) | ||||
|   }) | ||||
| 
 | ||||
|   it('parses series name', () => { | ||||
|     const nfoText = 'Series Name: Harry Potter' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.series).to.equal('Harry Potter') | ||||
|   }) | ||||
| 
 | ||||
|   it('parses genre', () => { | ||||
|     const nfoText = 'Genre: Fiction' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.genres).to.deep.equal(['Fiction']) | ||||
|   }) | ||||
| 
 | ||||
|   it('parses multiple genres', () => { | ||||
|     const nfoText = 'Genre: Fiction, Historical' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.genres).to.deep.equal(['Fiction', 'Historical']) | ||||
|   }) | ||||
| 
 | ||||
|   it('parses tags', () => { | ||||
|     const nfoText = 'Tags: mystery, thriller' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.tags).to.deep.equal(['mystery', 'thriller']) | ||||
|   }) | ||||
| 
 | ||||
|   it('parses year from various date fields', () => { | ||||
|     const nfoText = 'Release Date: 2021-05-01\nBook Copyright: 2021\nRecording Copyright: 2021' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.publishedYear).to.equal('2021') | ||||
|   }) | ||||
| 
 | ||||
|   it('parses position in series', () => { | ||||
|     const nfoText = 'Position in Series: 2' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.sequence).to.equal('2') | ||||
|   }) | ||||
| 
 | ||||
|   it('parses abridged flag', () => { | ||||
|     const nfoText = 'Abridged: No' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.abridged).to.be.false | ||||
| 
 | ||||
|     const nfoText2 = 'Unabridged: Yes' | ||||
|     const result2 = parseNfoMetadata(nfoText2) | ||||
|     expect(result2.abridged).to.be.false | ||||
|   }) | ||||
| 
 | ||||
|   it('parses publisher', () => { | ||||
|     const nfoText = 'Publisher: Penguin Random House' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.publisher).to.equal('Penguin Random House') | ||||
|   }) | ||||
| 
 | ||||
|   it('parses ASIN', () => { | ||||
|     const nfoText = 'ASIN: B08X5JZJLH' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.asin).to.equal('B08X5JZJLH') | ||||
|   }) | ||||
| 
 | ||||
|   it('parses description', () => { | ||||
|     const nfoText = 'Book Description\n=========\nThis is a book.\n It\'s good' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.description).to.equal('This is a book.\n It\'s good\n') | ||||
|   }) | ||||
| 
 | ||||
|   it('no value', () => { | ||||
|     const nfoText = 'Title:' | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.title).to.be.undefined | ||||
|   }) | ||||
| 
 | ||||
|   it('no year value', () => { | ||||
|     const nfoText = "Date:0" | ||||
|     const result = parseNfoMetadata(nfoText) | ||||
|     expect(result.publishedYear).to.be.undefined | ||||
|   }) | ||||
| }) | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user