Skip to content

Commit 30abe0f

Browse files
authored
SF-3740 Do not select previously used and now empty books for training (#3765)
1 parent 1ca19f0 commit 30abe0f

2 files changed

Lines changed: 25 additions & 9 deletions

File tree

src/SIL.XForge.Scripture/ClientApp/src/app/translate/draft-generation/draft-generation-steps/draft-generation-steps.component.spec.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ describe('DraftGenerationStepsComponent', () => {
245245
describe('one training source', async () => {
246246
const sourceProjectId = 'sourceProject';
247247
const availableBooks = [{ bookNum: 1 }, { bookNum: 2 }, { bookNum: 3 }, { bookNum: 5 }];
248-
const allBooks = [...availableBooks, { bookNum: 6 }, { bookNum: 7 }];
248+
const allBooks = [...availableBooks, { bookNum: 6 }, { bookNum: 7 }, { bookNum: 8 }];
249249
const sourceBooks = allBooks.filter(b => b.bookNum !== 6);
250250
const config: DraftSourcesAsArrays = {
251251
trainingSources: [
@@ -286,14 +286,26 @@ describe('DraftGenerationStepsComponent', () => {
286286
data: createTestProjectProfile({
287287
texts: allBooks,
288288
translateConfig: {
289-
source: { projectRef: sourceProjectId, shortName: 'sP', writingSystem: { tag: 'xyz' } }
289+
source: { projectRef: sourceProjectId, shortName: 'sP', writingSystem: { tag: 'xyz' } },
290+
draftConfig: {
291+
lastSelectedTrainingScriptureRanges: [{ projectId: sourceProjectId, scriptureRange: 'GEN;EXO;RUT' }]
292+
}
290293
},
291294
writingSystem: { tag: 'eng' }
292295
})
293296
} as SFProjectProfileDoc;
294297
const targetProjectDoc$ = new BehaviorSubject<SFProjectProfileDoc>(mockTargetProjectDoc);
295-
const emptyBookNums = [5];
298+
// setup empty books in the target
299+
const emptyBooksInTarget = [3, 8];
300+
const books: BookProgress[] = allBooks.map(b => ({
301+
bookId: Canon.bookNumberToId(b.bookNum),
302+
verseSegments: 100,
303+
blankVerseSegments: emptyBooksInTarget.includes(b.bookNum) ? 100 : 0
304+
}));
305+
const progress = new ProjectProgress(books);
306+
when(mockProgressService.getProgress('project01', anything())).thenResolve(progress);
296307

308+
const emptyBookNums = [5];
297309
when(mockActivatedProjectService.projectDoc).thenReturn(mockTargetProjectDoc);
298310
when(mockActivatedProjectService.projectDoc$).thenReturn(targetProjectDoc$);
299311
when(mockActivatedProjectService.changes$).thenReturn(targetProjectDoc$);
@@ -319,7 +331,8 @@ describe('DraftGenerationStepsComponent', () => {
319331
{ number: 1, selected: false },
320332
{ number: 2, selected: false },
321333
{ number: 3, selected: false },
322-
{ number: 5, selected: false }
334+
{ number: 5, selected: false },
335+
{ number: 8, selected: false }
323336
]);
324337
}));
325338

@@ -328,7 +341,8 @@ describe('DraftGenerationStepsComponent', () => {
328341
sourceProject: [
329342
{ number: 1, selected: false },
330343
{ number: 2, selected: false },
331-
{ number: 3, selected: false }
344+
{ number: 3, selected: false },
345+
{ number: 8, selected: false }
332346
]
333347
});
334348
}));
@@ -342,7 +356,8 @@ describe('DraftGenerationStepsComponent', () => {
342356
sourceProject: [
343357
{ number: 1, selected: true },
344358
{ number: 2, selected: true },
345-
{ number: 3, selected: false }
359+
{ number: 3, selected: false },
360+
{ number: 8, selected: false }
346361
]
347362
});
348363
}));
@@ -377,7 +392,7 @@ describe('DraftGenerationStepsComponent', () => {
377392
}));
378393

379394
it('should set "trainingBooksWithoutEnoughData"', fakeAsync(() => {
380-
expect(component.trainingBooksWithoutEnoughData).toEqual([3, 5]);
395+
expect(component.trainingBooksWithoutEnoughData).toEqual([3, 5, 8]);
381396
}));
382397

383398
it('should set "unusableTranslateTargetBooks" and "unusableTrainingTargetBooks" correctly', fakeAsync(() => {

src/SIL.XForge.Scripture/ClientApp/src/app/translate/draft-generation/draft-generation-steps/draft-generation-steps.component.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -670,12 +670,13 @@ export class DraftGenerationStepsComponent implements OnInit {
670670
for (const bookNum of booksFromScriptureRange(range.scriptureRange)) {
671671
//select in the source
672672
const sourceBook = this.availableTrainingBooks[source.projectRef].find(b => b.number === bookNum);
673-
if (sourceBook !== undefined) {
673+
// We should only select the book for training if the target book has verse content
674+
if (sourceBook !== undefined && this.bookHasVerseContent(targetProjectId, bookNum)) {
674675
sourceBook.selected = true;
675676
}
676677
//select in the target
677678
const targetBook = this.availableTrainingBooks[targetProjectId].find(b => b.number === bookNum);
678-
if (targetBook !== undefined) {
679+
if (targetBook !== undefined && this.bookHasVerseContent(targetProjectId, bookNum)) {
679680
targetBook.selected = true;
680681
}
681682
}

0 commit comments

Comments
 (0)