@@ -79,6 +79,19 @@ describe('DraftGenerationStepsComponent', () => {
7979 { text : { bookNum : 6 } , translated : 20 , blank : 2 , percentage : 90 } as TextProgress ,
8080 { text : { bookNum : 7 } , translated : 0 } as TextProgress
8181 ] ) ;
82+ const defaultTextProgress = [
83+ { text : { bookNum : 1 } , translated : 100 , percentage : 100 } as TextProgress ,
84+ { text : { bookNum : 2 } , translated : 100 , percentage : 100 } as TextProgress ,
85+ { text : { bookNum : 3 } , translated : 100 , percentage : 100 } as TextProgress ,
86+ { text : { bookNum : 4 } , translated : 100 , percentage : 100 } as TextProgress ,
87+ { text : { bookNum : 5 } , translated : 100 , percentage : 100 } as TextProgress ,
88+ { text : { bookNum : 6 } , translated : 100 , percentage : 100 } as TextProgress ,
89+ { text : { bookNum : 7 } , translated : 100 , percentage : 100 } as TextProgress ,
90+ { text : { bookNum : 8 } , translated : 100 , percentage : 100 } as TextProgress ,
91+ { text : { bookNum : 9 } , translated : 100 , percentage : 100 } as TextProgress ,
92+ { text : { bookNum : 10 } , translated : 100 , percentage : 100 } as TextProgress
93+ ] ;
94+ when ( mockProgressService . getTextProgressForProject ( anything ( ) ) ) . thenResolve ( defaultTextProgress ) ;
8295 when ( mockOnlineStatusService . isOnline ) . thenReturn ( true ) ;
8396 } ) ) ;
8497
@@ -291,6 +304,7 @@ describe('DraftGenerationStepsComponent', () => {
291304 when ( mockActivatedProjectService . projectDoc ) . thenReturn ( mockTargetProjectDoc ) ;
292305 when ( mockActivatedProjectService . projectDoc$ ) . thenReturn ( targetProjectDoc$ ) ;
293306 when ( mockActivatedProjectService . changes$ ) . thenReturn ( targetProjectDoc$ ) ;
307+ // setup mock source with empty book
294308 setupProjectProfileMock (
295309 sourceProjectId ,
296310 sourceBooks . map ( b => b . bookNum ) ,
@@ -331,14 +345,12 @@ describe('DraftGenerationStepsComponent', () => {
331345 project01 : [
332346 { number : 1 , selected : true } ,
333347 { number : 2 , selected : true } ,
334- { number : 3 , selected : false } ,
335- { number : 5 , selected : false }
348+ { number : 3 , selected : false }
336349 ] ,
337350 sourceProject : [
338351 { number : 1 , selected : true } ,
339352 { number : 2 , selected : true } ,
340- { number : 3 , selected : false } ,
341- { number : 5 , selected : false }
353+ { number : 3 , selected : false }
342354 ]
343355 } ) ;
344356 } ) ) ;
@@ -347,8 +359,7 @@ describe('DraftGenerationStepsComponent', () => {
347359 expect ( component . selectableTrainingBooksByProj ( 'project01' ) ) . toEqual ( [
348360 { number : 1 , selected : true } ,
349361 { number : 2 , selected : true } ,
350- { number : 3 , selected : false } ,
351- { number : 5 , selected : false }
362+ { number : 3 , selected : false }
352363 ] ) ;
353364 expect ( component . selectableTrainingBooksByProj ( sourceProjectId ) ) . toEqual ( [
354365 { number : 1 , selected : true } ,
@@ -374,6 +385,10 @@ describe('DraftGenerationStepsComponent', () => {
374385 expect ( component . emptyTranslateSourceBooks ) . toEqual ( [ 5 ] ) ;
375386 } ) ) ;
376387
388+ it ( 'should set "emptyTrainingSourceBooks"' , fakeAsync ( ( ) => {
389+ expect ( component . emptyTrainingSourceBooks ) . toEqual ( [ 5 ] ) ;
390+ } ) ) ;
391+
377392 it ( 'should set "unusableTranslateTargetBooks" and "unusableTrainingTargetBooks" correctly' , fakeAsync ( ( ) => {
378393 expect ( component . unusableTranslateTargetBooks ) . toEqual ( [ 7 ] ) ;
379394 expect ( component . unusableTrainingTargetBooks ) . toEqual ( [ 7 ] ) ;
@@ -496,10 +511,7 @@ describe('DraftGenerationStepsComponent', () => {
496511 component . tryAdvanceStep ( ) ;
497512 fixture . detectChanges ( ) ;
498513 component . onTranslatedBookSelect ( [ 1 ] ) ;
499- expect ( component . selectableTrainingBooksByProj ( 'project01' ) ) . toEqual ( [
500- { number : 1 , selected : true } ,
501- { number : 5 , selected : false }
502- ] ) ;
514+ expect ( component . selectableTrainingBooksByProj ( 'project01' ) ) . toEqual ( [ { number : 1 , selected : true } ] ) ;
503515 expect ( component . selectedTrainingBooksByProj ( 'project01' ) ) . toEqual ( [ { number : 1 , selected : true } ] ) ;
504516 expect ( component . selectedTrainingBooksByProj ( 'sourceProject' ) ) . toEqual ( [ { number : 1 , selected : true } ] ) ;
505517 component . stepper . selectedIndex = 1 ;
@@ -511,8 +523,7 @@ describe('DraftGenerationStepsComponent', () => {
511523 // Exodus becomes a selectable training book
512524 expect ( component . selectableTrainingBooksByProj ( 'project01' ) ) . toEqual ( [
513525 { number : 1 , selected : true } ,
514- { number : 2 , selected : false } ,
515- { number : 5 , selected : false }
526+ { number : 2 , selected : false }
516527 ] ) ;
517528 expect ( component . selectedTrainingBooksByProj ( 'sourceProject' ) ) . toEqual ( [ { number : 1 , selected : true } ] ) ;
518529 expect ( component . selectedTrainingBooksByProj ( 'project01' ) ) . toEqual ( [ { number : 1 , selected : true } ] ) ;
@@ -618,9 +629,11 @@ describe('DraftGenerationStepsComponent', () => {
618629 } ) ;
619630
620631 describe ( 'two training sources' , ( ) => {
621- const availableBooks = [ { bookNum : 2 } , { bookNum : 3 } ] ;
632+ const availableBooks = [ { bookNum : 2 } , { bookNum : 3 } , { bookNum : 5 } ] ;
622633 const allBooks = [ { bookNum : 1 } , ...availableBooks , { bookNum : 6 } , { bookNum : 7 } , { bookNum : 8 } ] ;
623634 const draftingSourceBooks = availableBooks . concat ( { bookNum : 7 } ) ;
635+ const trainingSource1Books = availableBooks . concat ( { bookNum : 1 } ) ;
636+ const trainingSource2Books = availableBooks . concat ( { bookNum : 6 } ) ;
624637 const draftingSourceId = 'draftingSource' ;
625638 const config = {
626639 trainingSources : [
@@ -629,14 +642,14 @@ describe('DraftGenerationStepsComponent', () => {
629642 paratextId : 'PT_SP1' ,
630643 shortName : 'sP1' ,
631644 writingSystem : { tag : 'eng' } ,
632- texts : availableBooks . concat ( { bookNum : 1 } )
645+ texts : trainingSource1Books
633646 } ,
634647 {
635648 projectRef : 'source2' ,
636649 paratextId : 'PT_SP2' ,
637650 shortName : 'sP2' ,
638651 writingSystem : { tag : 'eng' } ,
639- texts : availableBooks . concat ( { bookNum : 6 } )
652+ texts : trainingSource2Books
640653 }
641654 ] as [ DraftSource , DraftSource ] ,
642655 trainingTargets : [
@@ -657,14 +670,27 @@ describe('DraftGenerationStepsComponent', () => {
657670 ] as [ DraftSource ]
658671 } ;
659672
673+ const emptyBooks = [ 5 ] ;
660674 beforeEach ( fakeAsync ( ( ) => {
661675 when ( mockDraftSourceService . getDraftProjectSources ( ) ) . thenReturn ( of ( config ) ) ;
662676 when ( mockActivatedProjectService . projectDoc$ ) . thenReturn ( of ( { } as any ) ) ;
663677 when ( mockActivatedProjectService . changes$ ) . thenReturn ( of ( { } as any ) ) ;
664678 when ( mockActivatedProjectService . projectDoc ) . thenReturn ( { } as any ) ;
679+ // setup mock sources with empty book
665680 setupProjectProfileMock (
666681 draftingSourceId ,
667- draftingSourceBooks . map ( b => b . bookNum )
682+ draftingSourceBooks . map ( b => b . bookNum ) ,
683+ emptyBooks
684+ ) ;
685+ setupProjectProfileMock (
686+ 'source1' ,
687+ trainingSource1Books . map ( b => b . bookNum ) ,
688+ emptyBooks
689+ ) ;
690+ setupProjectProfileMock (
691+ 'source2' ,
692+ trainingSource2Books . map ( b => b . bookNum ) ,
693+ emptyBooks
668694 ) ;
669695 when ( mockFeatureFlagService . showDeveloperTools ) . thenReturn ( createTestFeatureFlag ( false ) ) ;
670696 when ( mockNllbLanguageService . isNllbLanguageAsync ( anything ( ) ) ) . thenResolve ( true ) ;
@@ -680,6 +706,7 @@ describe('DraftGenerationStepsComponent', () => {
680706 expect ( component . allAvailableTranslateBooks ) . toEqual ( [
681707 { number : 2 , selected : false } ,
682708 { number : 3 , selected : false } ,
709+ { number : 5 , selected : false } ,
683710 { number : 7 , selected : false }
684711 ] ) ;
685712 } ) ) ;
@@ -720,6 +747,8 @@ describe('DraftGenerationStepsComponent', () => {
720747 fixture . detectChanges ( ) ;
721748 expect ( component . unusableTranslateSourceBooks ) . toEqual ( [ 1 , 6 , 8 ] ) ;
722749 expect ( component . unusableTrainingSourceBooks ) . toEqual ( [ 6 , 7 , 8 ] ) ;
750+ expect ( component . emptyTranslateSourceBooks ) . toEqual ( [ 5 ] ) ;
751+ expect ( component . emptyTrainingSourceBooks ) . toEqual ( [ 5 ] ) ;
723752
724753 // interact with unusable books notice
725754 const unusableTranslateBooks = fixture . nativeElement . querySelector ( '.unusable-translate-books' ) ;
@@ -1456,10 +1485,18 @@ describe('DraftGenerationStepsComponent', () => {
14561485 const profileDoc = {
14571486 id : projectId ,
14581487 data : createTestProjectProfile ( {
1459- texts : texts . map ( b => ( { bookNum : b , chapters : [ { number : 1 , lastVerse : emptyBooks . includes ( b ) ? 0 : 10 } ] } ) )
1488+ texts : texts . map ( b => ( { bookNum : b , chapters : [ { number : 1 , lastVerse : 10 } ] } ) )
14601489 } )
14611490 } as SFProjectProfileDoc ;
14621491
14631492 when ( mockProjectService . getProfile ( projectId ) ) . thenResolve ( profileDoc ) ;
1493+ const textProgress = texts . map ( bookNum => {
1494+ return {
1495+ text : { bookNum } ,
1496+ translated : emptyBooks . includes ( bookNum ) ? 0 : 100 ,
1497+ percentage : emptyBooks . includes ( bookNum ) ? 0 : 100
1498+ } as TextProgress ;
1499+ } ) ;
1500+ when ( mockProgressService . getTextProgressForProject ( projectId ) ) . thenResolve ( textProgress ) ;
14641501 }
14651502} ) ;
0 commit comments