Skip to content

Commit 3ea4ecb

Browse files
authored
Disambiguate complex-forms that reference same entry (#1564)
1 parent 62dddc2 commit 3ea4ecb

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

backend/FwLite/MiniLcm.Tests/ComplexFormComponentTestsBase.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,12 @@ public async Task CreateComplexFormComponent_CanCreateMultipleComponentSenses()
115115
component2.ComplexFormEntryId.Should().Be(_complexFormEntryId);
116116
component2.ComponentEntryId.Should().Be(_componentEntryId);
117117
component2.ComponentSenseId.Should().Be(_componentSenseId2);
118+
119+
// ensure our sync code can handle them too
120+
_complexFormEntry = (await Api.GetEntry(_complexFormEntryId))!;
121+
await Api.UpdateEntry(_complexFormEntry, _complexFormEntry);
122+
_componentEntry = (await Api.GetEntry(_componentEntryId))!;
123+
await Api.UpdateEntry(_componentEntry, _componentEntry);
118124
}
119125

120126
[Fact]
@@ -137,7 +143,8 @@ public async Task CreateComplexFormComponent_ThrowsWhenMakingA3LayerReferenceCyc
137143
{
138144
var entry3 = await Api.CreateEntry(new()
139145
{
140-
Id = Guid.NewGuid(), LexemeForm = { { "en", "entry3" } }
146+
Id = Guid.NewGuid(),
147+
LexemeForm = { { "en", "entry3" } }
141148
});
142149
await Api.CreateComplexFormComponent(ComplexFormComponent.FromEntries(_complexFormEntry, entry3));
143150
await Api.CreateComplexFormComponent(ComplexFormComponent.FromEntries(entry3, _componentEntry));
@@ -150,7 +157,8 @@ public async Task CreateComplexFormComponent_WorksWhenAComponentWasDeletedWhichW
150157
{
151158
var entry3 = await Api.CreateEntry(new()
152159
{
153-
Id = Guid.NewGuid(), LexemeForm = { { "en", "entry3" } }
160+
Id = Guid.NewGuid(),
161+
LexemeForm = { { "en", "entry3" } }
154162
});
155163
await Api.CreateComplexFormComponent(ComplexFormComponent.FromEntries(_complexFormEntry, entry3));
156164
var complexFormComponent = await Api.CreateComplexFormComponent(ComplexFormComponent.FromEntries(entry3, _componentEntry));

backend/FwLite/MiniLcm/SyncHelpers/EntrySync.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,12 @@ public override Task<int> Replace(ComplexFormType before, ComplexFormType after)
130130
}
131131
}
132132

133-
private class ComplexFormsDiffApi(IMiniLcmApi api) : CollectionDiffApi<ComplexFormComponent, Guid>
133+
private class ComplexFormsDiffApi(IMiniLcmApi api) : CollectionDiffApi<ComplexFormComponent, (Guid, Guid, Guid?)>
134134
{
135-
public override Guid GetId(ComplexFormComponent component)
135+
public override (Guid, Guid, Guid?) GetId(ComplexFormComponent component)
136136
{
137137
//we can't use the ID as there's none defined by Fw so it won't work as a sync key
138-
return component.ComplexFormEntryId;
138+
return (component.ComplexFormEntryId, component.ComponentEntryId, component.ComponentSenseId);
139139
}
140140

141141
public override async Task<int> Add(ComplexFormComponent after)

0 commit comments

Comments
 (0)