Skip to content

Commit 2596645

Browse files
authored
Merge pull request #141 from jonsagara/feature/chat
Instead of making alert level a separate text paragraph widget, prepe…
2 parents e74bdd0 + 70c586a commit 2596645

4 files changed

Lines changed: 13 additions & 19 deletions

File tree

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<TargetFrameworks>net8.0;net9.0;net10.0</TargetFrameworks>
55

66
<!-- NuGet -->
7-
<Version>5.9.2</Version>
7+
<Version>5.9.3</Version>
88
<AssemblyVersion>5.9.0</AssemblyVersion>
99
<FileVersion>5.9.0</FileVersion>
1010
<Authors>Jon Sagara</Authors>

src/Sagara.Core.Google.Tests/Chat/GoogleChatServiceTests.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public async Task SendMessageAsync_BodyOnly_SendsTextOnlyPayload()
2525
}
2626

2727
[Fact]
28-
public async Task SendMessageAsync_Cards_EmitsAlertTextParagraphAndButtonWidgets()
28+
public async Task SendMessageAsync_Cards_EmitsAlertPrefixedTitleTextParagraphAndButtonWidgets()
2929
{
3030
var handler = new CapturingHttpMessageHandler(HttpStatusCode.OK);
3131
var service = CreateService(handler);
@@ -47,16 +47,15 @@ await service.SendMessageAsync(
4747
var json = await handler.GetRequestJsonAsync();
4848

4949
var cardElement = json.GetProperty("cardsV2").EnumerateArray().First().GetProperty("card");
50-
Assert.Equal("Deploy failed", cardElement.GetProperty("header").GetProperty("title").GetString());
50+
Assert.Equal("🔴 Deploy failed", cardElement.GetProperty("header").GetProperty("title").GetString());
5151
Assert.Equal("prod", cardElement.GetProperty("header").GetProperty("subtitle").GetString());
5252

5353
var widgets = cardElement.GetProperty("sections").EnumerateArray().First()
5454
.GetProperty("widgets").EnumerateArray().ToList();
5555

56-
Assert.Equal(3, widgets.Count); // alert accent widget + text paragraph widget + button list
57-
Assert.Contains("ERROR", widgets[0].GetProperty("textParagraph").GetProperty("text").GetString(), StringComparison.Ordinal);
58-
Assert.Contains("more **info**", widgets[1].GetProperty("textParagraph").GetProperty("text").GetString(), StringComparison.Ordinal);
59-
Assert.True(widgets[2].TryGetProperty("buttonList", out _));
56+
Assert.Equal(2, widgets.Count); // text paragraph widget + button list
57+
Assert.Contains("more **info**", widgets[0].GetProperty("textParagraph").GetProperty("text").GetString(), StringComparison.Ordinal);
58+
Assert.True(widgets[1].TryGetProperty("buttonList", out _));
6059
}
6160

6261
[Fact]

src/Sagara.Core.Google/Chat/GoogleChatAlertLevelInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public static GoogleChatAlertLevelInfo For(GoogleChatAlertLevel level)
1010
{
1111
GoogleChatAlertLevel.Info => new GoogleChatAlertLevelInfo("ℹ️", "INFO", "#1a73e8"),
1212
GoogleChatAlertLevel.Warning => new GoogleChatAlertLevelInfo("⚠️", "WARNING", "#f9ab00"),
13-
GoogleChatAlertLevel.Error => new GoogleChatAlertLevelInfo("", "ERROR", "#d93025"),
13+
GoogleChatAlertLevel.Error => new GoogleChatAlertLevelInfo("🔴", "ERROR", "#d93025"),
1414
GoogleChatAlertLevel.Success => new GoogleChatAlertLevelInfo("✅", "SUCCESS", "#188038"),
1515
_ => throw new ArgumentOutOfRangeException(nameof(level), level, message: null),
1616
};

src/Sagara.Core.Google/Chat/GoogleChatService.cs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -487,22 +487,17 @@ private static ChatCardWrapper BuildCard(
487487

488488

489489
//
490-
// First widget: Alert Level, if any.
490+
// If the caller specified an alert level and a title, prepend the emoji to the card title.
491491
//
492492

493493
if (alertLevel is { } level)
494494
{
495-
var alertLevelInfo = GoogleChatAlertLevelInfo.For(level);
496-
497-
widgets.Add(new ChatCardWidget
495+
if (title is not null)
498496
{
499-
// This is our content, not the user's, so we don't need to worry about escaping it.
500-
TextParagraph = new ChatTextParagraph
501-
{
502-
Text = $"<font color=\"{alertLevelInfo.HexColor}\">{alertLevelInfo.Emoji} {alertLevelInfo.Label}</font>",
503-
TextSyntax = "HTML",
504-
},
505-
});
497+
var alertLevelInfo = GoogleChatAlertLevelInfo.For(level);
498+
499+
title = $"{alertLevelInfo.Emoji} {title}";
500+
}
506501
}
507502

508503

0 commit comments

Comments
 (0)