Skip to content

Commit e801d1a

Browse files
committed
fix: scope presenter blocks to presentations
1 parent fe9d33e commit e801d1a

3 files changed

Lines changed: 37 additions & 22 deletions

File tree

SgfDevs.Tests/ImportedPresenterBlockBuilderTests.cs

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@ namespace SgfDevs.Tests;
88

99
public class ImportedPresenterBlockBuilderTests
1010
{
11+
private static readonly Guid PresentationKey = new("11111111-1111-1111-1111-111111111111");
12+
1113
private readonly ImportedPresenterBlockBuilder _builder = new(
1214
new Guid("1bdea08d-8393-4e70-85a9-2ca27bef54f1"),
1315
new Guid("5ff3a2c3-9dc3-4131-8f07-99c2c0a38be5"));
1416

1517
[Fact]
1618
public void Build_ReturnsEmptyStringWhenNoPresentersExist()
1719
{
18-
var result = _builder.Build([]);
20+
var result = _builder.Build(PresentationKey, []);
1921

2022
Assert.Equal(string.Empty, result);
2123
}
@@ -24,10 +26,11 @@ public void Build_ReturnsEmptyStringWhenNoPresentersExist()
2426
public void Build_CreatesBlockListPayloadForNonMemberPresenters()
2527
{
2628
var result = _builder.Build(
27-
[
28-
new ImportedPresenterPlan("speaker-1", "Bertram Gilfoyle", null, MatchedMemberKey: new Guid("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")),
29-
new ImportedPresenterPlan("speaker-2", "Dinesh Chugtai", null)
30-
]);
29+
PresentationKey,
30+
[
31+
new ImportedPresenterPlan("speaker-1", "Bertram Gilfoyle", null, MatchedMemberKey: new Guid("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")),
32+
new ImportedPresenterPlan("speaker-2", "Dinesh Chugtai", null)
33+
]);
3134

3235
using var document = JsonDocument.Parse(result);
3336
var root = document.RootElement;
@@ -55,9 +58,29 @@ public void Build_ReturnsSamePayloadForSamePresenters()
5558
new ImportedPresenterPlan("speaker-2", "Dinesh Chugtai", null)
5659
};
5760

58-
var first = _builder.Build(presenters);
59-
var second = _builder.Build(presenters);
61+
var first = _builder.Build(PresentationKey, presenters);
62+
var second = _builder.Build(PresentationKey, presenters);
6063

6164
Assert.Equal(first, second);
6265
}
66+
67+
[Fact]
68+
public void Build_ReturnsDifferentBlockKeysForDifferentPresentations()
69+
{
70+
var presenters = new[]
71+
{
72+
new ImportedPresenterPlan("speaker-1", "Bertram Gilfoyle", null)
73+
};
74+
75+
var first = GetFirstBlockKey(_builder.Build(PresentationKey, presenters));
76+
var second = GetFirstBlockKey(_builder.Build(new Guid("22222222-2222-2222-2222-222222222222"), presenters));
77+
78+
Assert.NotEqual(first, second);
79+
}
80+
81+
private static Guid GetFirstBlockKey(string payload)
82+
{
83+
using var document = JsonDocument.Parse(payload);
84+
return document.RootElement.GetProperty("contentData")[0].GetProperty("key").GetGuid();
85+
}
6386
}

SgfDevs/Dev/EventSync/ImportedPresenterBlockBuilder.cs

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ internal ImportedPresenterBlockBuilder(Guid presenterPickerTypeKey, Guid nonMemb
3131
_nonMemberPresenterTypeKey = nonMemberPresenterTypeKey;
3232
}
3333

34-
public string Build(IReadOnlyList<ImportedPresenterPlan> presenters)
34+
public string Build(Guid presentationKey, IReadOnlyList<ImportedPresenterPlan> presenters)
3535
{
3636
if (presenters.Count == 0)
3737
{
@@ -47,7 +47,7 @@ public string Build(IReadOnlyList<ImportedPresenterPlan> presenters)
4747

4848
var blocks = presenters.Select(presenter =>
4949
{
50-
var key = BuildBlockKey(presenter);
50+
var key = BuildBlockKey(presentationKey, presenter);
5151
var isMatchedMember = presenter.MatchedMemberKey.HasValue;
5252

5353
return new
@@ -117,19 +117,11 @@ public string Build(IReadOnlyList<ImportedPresenterPlan> presenters)
117117
return JsonSerializer.Serialize(payload);
118118
}
119119

120-
private static Guid BuildBlockKey(ImportedPresenterPlan presenter)
120+
private static Guid BuildBlockKey(Guid presentationKey, ImportedPresenterPlan presenter)
121121
{
122-
if (presenter.MatchedMemberKey.HasValue)
123-
{
124-
return presenter.MatchedMemberKey.Value;
125-
}
126-
127-
if (Guid.TryParse(presenter.SessionizeSpeakerId, out var sessionizeSpeakerKey))
128-
{
129-
return sessionizeSpeakerKey;
130-
}
131-
132-
var identity = $"{presenter.SessionizeSpeakerId}\n{presenter.Name}";
122+
var presenterIdentity = presenter.MatchedMemberKey?.ToString("N")
123+
?? (string.IsNullOrWhiteSpace(presenter.SessionizeSpeakerId) ? presenter.Name : presenter.SessionizeSpeakerId);
124+
var identity = $"{presentationKey:N}\n{presenterIdentity}";
133125
var hash = SHA256.HashData(Encoding.UTF8.GetBytes(identity));
134126
return new Guid(hash.AsSpan(0, 16));
135127
}

SgfDevs/Dev/EventSync/SessionizeEventSyncService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ private void SavePresentationContent(
222222
presentationContent.SetValue(MeetupUrlPropertyAlias, meetupUrl);
223223
}
224224

225-
presentationContent.SetValue(PresentersPropertyAlias, _presenterBlockBuilder.Build(presentationPlan.Presenters));
225+
presentationContent.SetValue(PresentersPropertyAlias, _presenterBlockBuilder.Build(presentationContent.Key, presentationPlan.Presenters));
226226
}
227227

228228
private async Task<IReadOnlyList<ImportedPresenterPlan>> ImportPresenterImagesAsync(

0 commit comments

Comments
 (0)