@@ -88,13 +88,14 @@ test('replaceRomanNumbers() should return the original string if no book number
8888
8989test ( 'parseBookName() should return the book name (including sequence nr) along with the index at which first chapter reference begins' , async ( t ) => {
9090 const cases = [
91- { input : "Genesis 1:1" , expected : { bookName : "Genesis" , chapterBeginIndex : 8 } } ,
92- { input : "Genesis" , expected : { bookName : "Genesis" , chapterBeginIndex : 0 } } ,
93- { input : "1 Peter 1:1" , expected : { bookName : "1 Peter" , chapterBeginIndex : 8 } } ,
94- { input : "1 John 1" , expected : { bookName : "1 John" , chapterBeginIndex : 7 } } ,
95- { input : "1 John 1" , expected : { bookName : "1 John" , chapterBeginIndex : 10 } } ,
96- { input : "1 John 1" , expected : { bookName : "1 John" , chapterBeginIndex : 10 } } ,
97- { input : "1John" , expected : { bookName : "1 John" , chapterBeginIndex : 0 } } ,
91+ { input : "Genesis 1:1" , expected : { bookName : "Genesis" , chapterBeginIndex : 8 } } ,
92+ { input : "Genesis" , expected : { bookName : "Genesis" , chapterBeginIndex : 0 } } ,
93+ { input : "1 Peter 1:1" , expected : { bookName : "1 Peter" , chapterBeginIndex : 8 } } ,
94+ { input : "1 John 1" , expected : { bookName : "1 John" , chapterBeginIndex : 7 } } ,
95+ { input : "1 John 1" , expected : { bookName : "1 John" , chapterBeginIndex : 10 } } ,
96+ { input : "1 John 1" , expected : { bookName : "1 John" , chapterBeginIndex : 10 } } ,
97+ { input : "1John" , expected : { bookName : "1 John" , chapterBeginIndex : 0 } } ,
98+ { input : "Song of solomon" , expected : { bookName : "Song of solomon" , chapterBeginIndex : 0 } }
9899 ]
99100
100101 for ( const { input, expected } of cases ) {
@@ -258,35 +259,43 @@ test('validateBookName() should return true for books that are in the list', asy
258259test ( 'parseBook() should return the expected bookData' , async ( t ) => {
259260 const cases = [
260261 { input : "1Kings1:2" , expected : {
261- name : "1 Kings" ,
262- references : [
263- { chapter : 1 , verses : [ { from : 2 , to : undefined } ] }
264- ]
262+ book : { name : "1 Kings" , references : [ { chapter : 1 , verses : [ { from : 2 , to : undefined } ] } ] } ,
263+ error : null
264+ } } ,
265+
266+ { input : "III John 1" , expected : {
267+ book : { name : "3 John" , references : [ ] } ,
268+ error : null
265269 } } ,
266270
267- { input : "III John 1" , expected : { name : "3 John" , references : [ ] } } ,
268-
269- { input : "Gen 1" , expected : { name : "Genesis" , references : [ ] } } ,
270-
271- { input : "2 Pt 1:2" , expected : { name : "2 Peter" , references : [
272- { chapter : 1 , verses : [ { from : 2 , to : undefined } ] }
273- ] } } ,
274-
275- { input : "2 Pet 1:2" , expected : { name : "2 Peter" , references : [
276- { chapter : 1 , verses : [ { from : 2 , to : undefined } ] }
277- ] } } ,
278-
279- { input : "2nd Peter" , expected : { name : "2 Peter" , references : [ ] } } ,
280- { input : "First John" , expected : { name : "1 John" , references : [ ] } } ,
281- { input : "1 John" , expected : { name : "1 John" , references : [ ] } } ,
282- { input : "1st John" , expected : { name : "1 John" , references : [ ] } } ,
283- { input : "first JOHN" , expected : { name : "1 John" , references : [ ] } } ,
284- { input : "2ndtim" , expected : { name : "2 Timothy" , references : [ ] } } ,
285- { input : "isa" , expected : { name : "Isaiah" , references : [ ] } } ,
286- { input : "isam" , expected : { name : "1 Samuel" , references : [ ] } } ,
287- { input : "Ism" , expected : { name : "1 Samuel" , references : [ ] } } ,
288- { input : "IIsm" , expected : { name : "2 Samuel" , references : [ ] } } ,
289- { input : "iSaIAH" , expected : { name : "Isaiah" , references : [ ] } } ,
271+ { input : "Gen 1" , expected : {
272+ book : { name : "Genesis" , references : [ ] } ,
273+ error : null
274+ } } ,
275+
276+ { input : "2 Pt 1:2" , expected : {
277+ book : { name : "2 Peter" , references : [ { chapter : 1 , verses : [ { from : 2 , to : undefined } ] } ] } ,
278+ error : null
279+ } } ,
280+
281+ { input : "2 Pet 1:2" , expected : {
282+ book : { name : "2 Peter" , references : [ { chapter : 1 , verses : [ { from : 2 , to : undefined } ] } ] } ,
283+ error : null
284+ } } ,
285+
286+ { input : "2nd Peter" , expected : { book : { name : "2 Peter" , references : [ ] } , error : null } } ,
287+ { input : "First John" , expected : { book : { name : "1 John" , references : [ ] } , error : null } } ,
288+ { input : "1 John" , expected : { book : { name : "1 John" , references : [ ] } , error : null } } ,
289+ { input : "1st John" , expected : { book : { name : "1 John" , references : [ ] } , error : null } } ,
290+ { input : "first JOHN" , expected : { book : { name : "1 John" , references : [ ] } , error : null } } ,
291+ { input : "2ndtim" , expected : { book : { name : "2 Timothy" , references : [ ] } , error : null } } ,
292+ { input : "isa" , expected : { book : { name : "Isaiah" , references : [ ] } , error : null } } ,
293+ { input : "isam" , expected : { book : { name : "1 Samuel" , references : [ ] } , error : null } } ,
294+ { input : "Ism" , expected : { book : { name : "1 Samuel" , references : [ ] } , error : null } } ,
295+ { input : "IIsm" , expected : { book : { name : "2 Samuel" , references : [ ] } , error : null } } ,
296+ { input : "iSaIAH" , expected : { book : { name : "Isaiah" , references : [ ] } , error : null } } ,
297+
298+ // { input: "! Genesis", expected: { book: null, error: "!Genesis" } },
290299 ]
291300
292301 for ( const { input, expected } of cases ) {
@@ -299,39 +308,52 @@ test('parseQuery() should return the expected bookData[]', async (t) => {
299308 const cases = [
300309 {
301310 input : "1Kings1:2;IIIJohn1" ,
302- expected : [
303- {
304- name : "1 Kings" ,
305- references : [
306- { chapter : 1 , verses : [ { from : 2 , to : undefined } ] }
307- ]
308- } ,
309- { name : "3 John" , references : [ ] }
310- ]
311+ expected : {
312+ books : [
313+ {
314+ name : "1 Kings" ,
315+ references : [
316+ { chapter : 1 , verses : [ { from : 2 , to : undefined } ] }
317+ ]
318+ } ,
319+ { name : "3 John" , references : [ ] }
320+ ] ,
321+ errors : [ ]
322+ }
311323 } ,
312324
313325 {
314326 input : "III John 1:1-2;Genesis 1:10-12" ,
315- expected : [
316- {
317- name : "3 John" ,
318- references : [ { chapter : 1 , verses : [ { from : 1 , to : 2 } ] } ]
319- } ,
320- {
321- name : "Genesis" ,
322- references : [ { chapter : 1 , verses : [ { from : 10 , to : 12 } ] } ]
323- }
324- ]
327+ expected : {
328+ books : [
329+ {
330+ name : "3 John" ,
331+ references : [ { chapter : 1 , verses : [ { from : 1 , to : 2 } ] } ]
332+ } ,
333+ {
334+ name : "Genesis" ,
335+ references : [ { chapter : 1 , verses : [ { from : 10 , to : 12 } ] } ]
336+ }
337+ ] ,
338+ errors : [ ]
339+ }
325340 } ,
326341
327342 {
328- input : ";##;#!\"@,;Genesis 1:10-12" ,
329- expected : [
330- {
331- name : "Genesis" ,
332- references : [ { chapter : 1 , verses : [ { from : 10 , to : 12 } ] } ]
333- }
334- ]
343+ input : ";##;#!\"@,;Genesis 1:10-12;song of solomon" ,
344+ expected : {
345+ books : [
346+ {
347+ name : "Genesis" ,
348+ references : [ { chapter : 1 , verses : [ { from : 10 , to : 12 } ] } ]
349+ } ,
350+ {
351+ name : "Song of Solomon" ,
352+ references : [ ]
353+ }
354+ ] ,
355+ errors : [ "##" , "#!\"@," ]
356+ }
335357 }
336358 ]
337359
0 commit comments