Skip to content

Commit 328e9dd

Browse files
committed
SF-3618 Write permissions for new books on sync
1 parent 9f18297 commit 328e9dd

File tree

5 files changed

+41
-0
lines changed

5 files changed

+41
-0
lines changed

src/SIL.XForge.Scripture/Models/SyncMetrics.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ public record SyncMetrics : IIdentifiable
5858
/// </summary>
5959
public SyncMetricInfo ParatextNotes { get; set; } = new SyncMetricInfo();
6060

61+
/// <summary>
62+
/// Gets or sets the info for changes to permissions outgoing to Paratext.
63+
/// </summary>
64+
public SyncMetricInfo ParatextPermissions { get; set; } = new SyncMetricInfo();
65+
6166
/// <summary>
6267
/// Gets or sets the info for changes to questions incoming from Paratext.
6368
/// </summary>

src/SIL.XForge.Scripture/Models/SyncPhase.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
namespace SIL.XForge.Scripture.Models;
2+
13
/// <summary>
24
/// The sync phase.
35
/// </summary>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ SyncMetrics syncMetrics
332332
syncMetrics.ParatextBooks != new SyncMetricInfo()
333333
|| syncMetrics.ParatextNotes != new SyncMetricInfo()
334334
|| syncMetrics.ParatextBiblicalTerms != new SyncMetricInfo()
335+
|| syncMetrics.ParatextPermissions != new SyncMetricInfo()
335336
)
336337
)
337338
{

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,12 @@ CancellationToken token
220220
// Update target Paratext books, notes and biblical terms, if this is not a resource
221221
if (!_paratextService.IsResource(targetParatextId))
222222
{
223+
_syncMetrics.ParatextPermissions += await _paratextService.UpdateParatextPermissionsForNewBooksAsync(
224+
_userSecret,
225+
targetParatextId,
226+
_projectDoc,
227+
writeToParatext: true
228+
);
223229
await GetAndUpdateParatextBooksAndNotes(
224230
SyncPhase.Phase2,
225231
targetParatextId,

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,33 @@ public async Task SyncAsync_ProjectTextSetToNotEditable()
716716
Assert.That(project.Editable, Is.False);
717717
}
718718

719+
[Test]
720+
public async Task SyncAsync_CreatesNewBooks()
721+
{
722+
var env = new TestEnvironment();
723+
Book[] sfBooks = [new Book("2JN", 1), new Book("3JN", 1)];
724+
env.SetupSFData(false, false, true, false, sfBooks);
725+
Book[] ptBooks = [new Book("2JN", 1)];
726+
env.SetupPTData(ptBooks);
727+
728+
await env.Runner.RunAsync("project01", "user01", "project01", false, CancellationToken.None);
729+
env.VerifyProjectSync(true);
730+
await env
731+
.ParatextService.Received()
732+
.PutBookText(Arg.Any<UserSecret>(), "target", 63, Arg.Any<XDocument>(), Arg.Any<Dictionary<int, string>>());
733+
await env
734+
.ParatextService.Received()
735+
.PutBookText(Arg.Any<UserSecret>(), "target", 64, Arg.Any<XDocument>(), Arg.Any<Dictionary<int, string>>());
736+
await env
737+
.ParatextService.Received()
738+
.UpdateParatextPermissionsForNewBooksAsync(
739+
Arg.Any<UserSecret>(),
740+
Arg.Any<string>(),
741+
Arg.Any<IDocument<SFProject>>(),
742+
writeToParatext: true
743+
);
744+
}
745+
719746
[Test]
720747
public async Task SyncAsync_CreatesNoteTagIcon()
721748
{

0 commit comments

Comments
 (0)