Skip to content

Commit 16b33f4

Browse files
Remove downloading of draft when retrieving last completed build (#3610)
Co-authored-by: Nathaniel Paulus <[email protected]>
1 parent 7d5fb11 commit 16b33f4

File tree

3 files changed

+12
-98
lines changed

3 files changed

+12
-98
lines changed

src/SIL.XForge.Scripture/ClientApp/e2e/workflows/localized-screenshots.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -417,9 +417,15 @@ export async function localizedScreenshots(
417417
await navLocator(page, 'settings').click();
418418
await navLocator(page, 'generate_draft').click();
419419
await expect(page.getByText('The draft is ready')).toBeVisible();
420-
// Wait for the draft to finalize
421-
await expect(page.getByText('Draft is Finishing')).toBeVisible();
422-
await expect(page.getByText('Draft is Finishing')).not.toBeVisible({ timeout: 15_000 });
420+
// Wait for draft to finalize. In some cases it may already have finalized, so if it doesn't show up, skip it
421+
let finishing: boolean;
422+
try {
423+
await expect(page.getByText('Draft is Finishing')).toBeVisible({ timeout: 15_000 });
424+
finishing = true;
425+
} catch {
426+
finishing = false;
427+
}
428+
if (finishing) await expect(page.getByText('Draft is Finishing')).not.toBeVisible({ timeout: 15_000 });
423429

424430
// Select formatting options
425431
await user.click(page.getByRole('button', { name: 'Formatting options' }));

src/SIL.XForge.Scripture/Services/MachineApiService.cs

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,36 +1063,16 @@ CancellationToken cancellationToken
10631063

10641064
try
10651065
{
1066-
// Get the last build and the last completed build
1066+
// Get the last completed build
10671067
IList<TranslationBuild> translationBuilds = await translationEnginesClient.GetAllBuildsAsync(
10681068
translationEngineId,
10691069
cancellationToken
10701070
);
1071-
TranslationBuild? lastTranslationBuild = translationBuilds.LastOrDefault();
10721071
TranslationBuild? lastCompletedTranslationBuild = translationBuilds
10731072
.Where(b => b.State == JobState.Completed)
10741073
.MaxBy(b => b.DateFinished);
1075-
1076-
// See if the very last build has completed
1077-
if (lastTranslationBuild?.State == JobState.Completed)
1078-
{
1079-
// See if the current scripture range has changed
1080-
string currentScriptureRange = GetDraftedScriptureRange(lastTranslationBuild);
1081-
if (
1082-
!string.IsNullOrWhiteSpace(currentScriptureRange)
1083-
&& project.TranslateConfig.DraftConfig.CurrentScriptureRange != currentScriptureRange
1084-
)
1085-
{
1086-
backgroundJobClient.Enqueue<IMachineApiService>(r =>
1087-
r.RetrievePreTranslationStatusAsync(sfProjectId, CancellationToken.None)
1088-
);
1089-
}
1090-
1091-
buildDto = CreateDto(lastTranslationBuild);
1092-
}
1093-
else if (lastCompletedTranslationBuild is not null)
1074+
if (lastCompletedTranslationBuild is not null)
10941075
{
1095-
// The very last build is active, so return the last completed build
10961076
buildDto = CreateDto(lastCompletedTranslationBuild);
10971077
}
10981078
}

test/SIL.XForge.Scripture.Tests/Services/MachineApiServiceTests.cs

Lines changed: 1 addition & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1869,76 +1869,7 @@ public async Task GetLastCompletedPreTranslationBuildAsync_ServalAdminDoesNotNee
18691869
}
18701870

18711871
[Test]
1872-
public async Task GetLastCompletedPreTranslationBuildAsync_RetrievePreTranslationStatusAsyncCall_Success()
1873-
{
1874-
// Set up test environment
1875-
var env = new TestEnvironment();
1876-
const string buildDtoId = $"{Project01}.{Build01}";
1877-
const double percentCompleted = 0;
1878-
const int revision = 43;
1879-
const JobState state = JobState.Completed;
1880-
env.TranslationEnginesClient.GetAllBuildsAsync(TranslationEngine01, CancellationToken.None)
1881-
.Returns(
1882-
Task.FromResult<IList<TranslationBuild>>(
1883-
[
1884-
new TranslationBuild
1885-
{
1886-
Url = "https://example.com",
1887-
Id = Build01,
1888-
Engine = new ResourceLink { Id = "engineId", Url = "https://example.com" },
1889-
Message = MachineApiService.BuildStateCompleted,
1890-
Progress = percentCompleted,
1891-
Revision = revision,
1892-
State = state,
1893-
DateFinished = DateTimeOffset.UtcNow,
1894-
Pretranslate =
1895-
[
1896-
new PretranslateCorpus
1897-
{
1898-
ParallelCorpus = new ResourceLink
1899-
{
1900-
Id = ParallelCorpusId01,
1901-
Url = "https://example.com",
1902-
},
1903-
SourceFilters =
1904-
[
1905-
new ParallelCorpusFilter
1906-
{
1907-
Corpus = { Id = ParallelCorpusId01, Url = "https://example.com" },
1908-
ScriptureRange = "GEN",
1909-
},
1910-
],
1911-
},
1912-
],
1913-
},
1914-
]
1915-
)
1916-
);
1917-
_ = env.Projects.Get(Project01);
1918-
1919-
// SUT
1920-
ServalBuildDto? actual = await env.Service.GetLastCompletedPreTranslationBuildAsync(
1921-
User01,
1922-
Project01,
1923-
false,
1924-
CancellationToken.None
1925-
);
1926-
1927-
// Verify that a job was scheduled and the correct build was returned
1928-
env.BackgroundJobClient.Received(1).Create(Arg.Any<Job>(), Arg.Any<IState>());
1929-
Assert.IsNotNull(actual);
1930-
Assert.AreEqual(MachineApiService.BuildStateCompleted, actual.Message);
1931-
Assert.AreEqual(percentCompleted, actual.PercentCompleted);
1932-
Assert.AreEqual(revision, actual.Revision);
1933-
Assert.AreEqual(state.ToString().ToUpperInvariant(), actual.State);
1934-
Assert.AreEqual(buildDtoId, actual.Id);
1935-
Assert.AreEqual(MachineApi.GetBuildHref(Project01, Build01), actual.Href);
1936-
Assert.AreEqual(Project01, actual.Engine.Id);
1937-
Assert.AreEqual(MachineApi.GetEngineHref(Project01), actual.Engine.Href);
1938-
}
1939-
1940-
[Test]
1941-
public async Task GetLastCompletedPreTranslationBuildAsync_NoRetrievePreTranslationStatusAsyncCallWhenActiveBuild_Success()
1872+
public async Task GetLastCompletedPreTranslationBuildAsync_Success()
19421873
{
19431874
// Set up test environment
19441875
var env = new TestEnvironment();
@@ -1993,9 +1924,6 @@ public async Task GetLastCompletedPreTranslationBuildAsync_NoRetrievePreTranslat
19931924
CancellationToken.None
19941925
);
19951926

1996-
// RetrievePreTranslationStatusAsync is run via a background job, so we verify that no new job was scheduled
1997-
env.BackgroundJobClient.DidNotReceive().Create(Arg.Any<Job>(), Arg.Any<IState>());
1998-
19991927
TestEnvironment.AssertCoreBuildProperties(CompletedTranslationBuild, actual);
20001928
}
20011929

0 commit comments

Comments
 (0)