Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,15 @@ public async Task HandleAsync_PlainRecipient_CallsCommandWithRecipient()
_mockKarmaRepo.Verify(r => r.GetKarmaReasonsAsync("alice"), Times.Once());
}

[Fact]
public async Task HandleAsync_NoRecipient_CallsCommandWithMessageUser()
[Theory]
[InlineData("_reasons")]
[InlineData("_reasons ")]
public async Task HandleAsync_NoRecipient_CallsCommandWithMessageUser(string message)
{
_mockKarmaRepo.Setup(r => r.GetKarmaReasonsAsync("U_sender")).ReturnsAsync(
new KarmaReasonsResult(0, new List<Karma>().AsReadOnly()));

await _handler.HandleAsync(CreateMessage("_reasons "));
await _handler.HandleAsync(CreateMessage(message));

_mockKarmaRepo.Verify(r => r.GetKarmaReasonsAsync("U_sender"), Times.Once());
}
Expand Down
10 changes: 10 additions & 0 deletions Bottomly.Tests/Slack/EventHandlers/GiphyHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,16 @@ public async Task HandleAsync_ValidEvent_EmptyResult_SendsNoGifsMessage()
_mockBroker.Verify(b => b.SendMessageAsync("No gifs found for \"xyz\"", "C1", null), Times.Once());
}

[Theory]
[InlineData("_gif")]
[InlineData("_gif ")]
public async Task HandleAsync_NoArgument_SendsPleaseProvideMessage(string text)
{
await _handler.HandleAsync(CreateMessage(text));

_mockBroker.Verify(b => b.SendMessageAsync("Please provide a search term.", "C1", null), Times.Once());
}

[Fact]
public async Task HandleAsync_HelpEvent_SendsHelpMessage()
{
Expand Down
10 changes: 10 additions & 0 deletions Bottomly.Tests/Slack/EventHandlers/ImageSearchHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,16 @@ public async Task HandleAsync_ValidEvent_NoResultsFound_SendsNoResultMessage()
_mockBroker.Verify(b => b.SendMessageAsync("No image results found for \"xyz\"", "C1", null), Times.Once());
}

[Theory]
[InlineData("_gi")]
[InlineData("_gi ")]
public async Task HandleAsync_NoArgument_SendsPleaseProvideMessage(string text)
{
await _handler.HandleAsync(CreateMessage(text));

_mockBroker.Verify(b => b.SendMessageAsync("Please provide a search query.", "C1", null), Times.Once());
}

[Fact]
public async Task HandleAsync_HelpEvent_SendsHelpMessage()
{
Expand Down
10 changes: 10 additions & 0 deletions Bottomly.Tests/Slack/EventHandlers/SearchHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,16 @@ public async Task HandleAsync_ValidEvent_EmptySearchTermResult_SendsNoResultMess
_mockBroker.Verify(b => b.SendMessageAsync("No results found for \"xyz\"", "C1", null), Times.Once());
}

[Theory]
[InlineData("_g")]
[InlineData("_g ")]
public async Task HandleAsync_NoArgument_SendsPleaseProvideMessage(string text)
{
await _handler.HandleAsync(CreateMessage(text));

_mockBroker.Verify(b => b.SendMessageAsync("Please provide a search query.", "C1", null), Times.Once());
}

[Fact]
public async Task HandleAsync_HelpEvent_SendsHelpMessage()
{
Expand Down
10 changes: 10 additions & 0 deletions Bottomly.Tests/Slack/EventHandlers/UrbanHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,16 @@ public async Task HandleAsync_ValidEvent_NotFoundResult_SendsExerciseMessage()
_mockBroker.Verify(b => b.SendMessageAsync("Left as an exercise for the reader.", "C1", "ts1"), Times.Once());
}

[Theory]
[InlineData("_ud")]
[InlineData("_ud ")]
public async Task HandleAsync_NoArgument_SendsPleaseProvideMessage(string text)
{
await _handler.HandleAsync(CreateMessage(text));

_mockBroker.Verify(b => b.SendMessageAsync("Please provide a search term.", "C1", null), Times.Once());
}

[Fact]
public async Task HandleAsync_HelpEvent_SendsHelpMessage()
{
Expand Down
10 changes: 10 additions & 0 deletions Bottomly.Tests/Slack/EventHandlers/WikipediaHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,16 @@ public async Task HandleAsync_ValidEvent_NotFoundResult_SendsNoResultMessage()
_mockBroker.Verify(b => b.SendMessageAsync("No results found for \"xyz\"", "C1", null), Times.Once());
}

[Theory]
[InlineData("_wik")]
[InlineData("_wik ")]
public async Task HandleAsync_NoArgument_SendsPleaseProvideMessage(string text)
{
await _handler.HandleAsync(CreateMessage(text));

_mockBroker.Verify(b => b.SendMessageAsync("Please provide a search term.", "C1", null), Times.Once());
}

[Fact]
public async Task HandleAsync_HelpEvent_SendsHelpMessage()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ protected override string GetPurpose() =>
protected override async Task InvokeHandlerLogicAsync(MessageEvent message)
{
var text = await parser.ReplaceSlackIdTokensWithUsernamesAsync(message.Text!);
var recipient = text[CommandTrigger.Length..].Split(' ')[0];
var recipient = text[CommandTrigger.TrimEnd().Length..].TrimStart().Split(' ')[0];
if (string.IsNullOrEmpty(recipient))
{
recipient = message.User;
Expand Down
8 changes: 7 additions & 1 deletion Bottomly/Slack/MessageEventHandlers/GiphyHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,13 @@ public class GiphyHandler(

protected override async Task InvokeHandlerLogicAsync(MessageEvent message)
{
var term = message.Text![CommandTrigger.Length..];
var term = message.Text![CommandTrigger.TrimEnd().Length..].Trim();
if (string.IsNullOrEmpty(term))
{
await SendMessageResponseAsync("Please provide a search term.", message);
return;
}

var result = await command.ExecuteAsync(term);

if (result is GiphySuccessResult success)
Expand Down
8 changes: 7 additions & 1 deletion Bottomly/Slack/MessageEventHandlers/ImageSearchHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,13 @@ public class ImageSearchHandler(

protected override async Task InvokeHandlerLogicAsync(MessageEvent message)
{
var query = message.Text![CommandTrigger.Length..];
var query = message.Text![CommandTrigger.TrimEnd().Length..].Trim();
if (string.IsNullOrEmpty(query))
{
await SendMessageResponseAsync("Please provide a search query.", message);
return;
}

var result = await command.ExecuteAsync(query);

if (result is SearchResult success)
Expand Down
8 changes: 7 additions & 1 deletion Bottomly/Slack/MessageEventHandlers/SearchHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,13 @@ public class SearchHandler(

protected override async Task InvokeHandlerLogicAsync(MessageEvent message)
{
var query = message.Text![CommandTrigger.Length..];
var query = message.Text![CommandTrigger.TrimEnd().Length..].Trim();
if (string.IsNullOrEmpty(query))
{
await SendMessageResponseAsync("Please provide a search query.", message);
return;
}

var result = await command.ExecuteAsync(query);

var response = result switch
Expand Down
8 changes: 7 additions & 1 deletion Bottomly/Slack/MessageEventHandlers/UrbanHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,13 @@ public class UrbanHandler(

protected override async Task InvokeHandlerLogicAsync(MessageEvent message)
{
var term = message.Text![CommandTrigger.Length..];
var term = message.Text![CommandTrigger.TrimEnd().Length..].Trim();
if (string.IsNullOrEmpty(term))
{
await SendMessageResponseAsync("Please provide a search term.", message);
return;
}

var result = await command.ExecuteAsync(term);
var response = result switch
{
Expand Down
8 changes: 7 additions & 1 deletion Bottomly/Slack/MessageEventHandlers/WikipediaHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,13 @@ public class WikipediaHandler(

protected override async Task InvokeHandlerLogicAsync(MessageEvent message)
{
var term = message.Text![CommandTrigger.Length..];
var term = message.Text![CommandTrigger.TrimEnd().Length..].Trim();
if (string.IsNullOrEmpty(term))
{
await SendMessageResponseAsync("Please provide a search term.", message);
return;
}

var result = await command.ExecuteAsync(term);
var response = result switch
{
Expand Down
Loading