Skip to content

Commit

Permalink
Update module name
Browse files Browse the repository at this point in the history
- Add test to show/hide team settings editor
  • Loading branch information
araszka committed Jul 13, 2024
1 parent d637504 commit 4e7ee67
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public async Task SaveTeamSettingsAsync(TeamSettingsModel input)
{
if (!IsModelValid)
{
await ShowAsync(Context.Player, "TeamSettings.EditTeamSettings",
await ShowAsync(Context.Player, "TeamSettingsModule.EditTeamSettings",
new { Settings = input, Locale = locale }
);
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public Task<NameValueCollection> ParseClubLinkUrl(string clubLinkUrl)
public Task<string> GenerateClubLinkUrl(string teamName, string primaryColor, string? secondaryColor = null,
string? emblemUrl = null)
{
var url = new UriBuilder(ClubLinkGeneratorUrl)
var url = new UriBuilder(new Uri(ClubLinkGeneratorUrl, UriKind.Absolute))
{
Query = $"name={Uri.EscapeDataString(teamName)}&primary={Uri.EscapeDataString(primaryColor)}"
};
Expand All @@ -89,11 +89,11 @@ public Task<string> GenerateClubLinkUrl(string teamName, string primaryColor, st

public async Task ShowTeamSettingsAsync(IPlayer player, TeamSettingsModel teamSettings)
{
await manialinks.SendManialinkAsync(player, "TeamSettings.EditTeamSettings",
await manialinks.SendManialinkAsync(player, "TeamSettingsModule.EditTeamSettings",
new { Settings = teamSettings, Locale = locale }
);
}

public async Task HideTeamSettingsAsync(IPlayer player)
=> await manialinks.HideManialinkAsync(player, "TeamSettings.EditTeamSettings");
=> await manialinks.HideManialinkAsync(player, "TeamSettingsModule.EditTeamSettings");
}
2 changes: 1 addition & 1 deletion src/Modules/TeamSettingsModule/Templates/ColorInput.mt
Original file line number Diff line number Diff line change
Expand Up @@ -103,5 +103,5 @@
</frame>
</template>

<script resource="TeamSettings.Scripts.ColorInput" once="true"/>
<script resource="TeamSettingsModule.Scripts.ColorInput" once="true"/>
</component>
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<import component="EvoSC.Containers.Window" as="Window"/>
<import component="EvoSC.Style.UIStyle" as="UIStyle"/>
<import component="EvoSC.Controls.Button" as="Button"/>
<import component="TeamSettings.ColorInput" as="ColorInput"/>
<import component="TeamSettingsModule.ColorInput" as="ColorInput"/>

<property type="FormValidationResult" name="Validation"/>
<property type="TeamSettingsModel" name="Settings"/>
Expand Down
6 changes: 3 additions & 3 deletions src/Modules/TeamSettingsModule/info.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[info]
# A unique name for this module, this is used as a identifier
name = "TeamSettings"
name = "TeamSettingsModule"
# The title of the module
title = "Team Settings"
title = "TeamSettings Module"
# A short description of what the module is and does
summary = "Change team settings (name, logo, color)."
summary = "Change team settings (name, colors, emblem)."
# The current version of this module, using SEMVER
version = "1.0.0"
# The name of the author that created this module
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,6 @@ public async Task Team_Settings_Do_Not_Update_With_Invalid_Data(

_teamSettingsService.Verify(m => m.SetTeamSettingsAsync(teamSettings), Times.Never);
_teamSettingsService.Verify(m => m.HideTeamSettingsAsync(_player.Object), Times.Never);
ManialinkManager.Verify(m => m.SendManialinkAsync(_player.Object, "TeamSettings.EditTeamSettings", It.IsAny<ExpandoObject>()), Times.Once);
ManialinkManager.Verify(m => m.SendManialinkAsync(_player.Object, "TeamSettingsModule.EditTeamSettings", It.IsAny<ExpandoObject>()), Times.Once);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,20 @@ namespace EvoSC.Modules.Official.TeamSettingsModule.Tests.Services;

public class TeamSettingsServiceTests
{
private readonly Mock<IOnlinePlayer> _player = new();
private readonly Mock<IManialinkManager> _manialinkManager = new();

private readonly (Mock<IServerClient> Client, Mock<IGbxRemoteClient> Remote)
_server = Mocking.NewServerClientMock();

private ITeamSettingsService TeamSettingsServiceMock()
{
var player = new Mock<IOnlinePlayer>();
var mlAction = new Mock<IManialinkActionContext>();
var mlManager = new Mock<IManialinkManager>();
var context = Mocking.NewManialinkInteractionContextMock(player.Object, mlAction.Object, mlManager.Object);
var context = Mocking.NewManialinkInteractionContextMock(_player.Object, mlAction.Object, _manialinkManager.Object);
var contextService = Mocking.NewContextServiceMock(context.Context.Object, null);
var locale = Mocking.NewLocaleMock(contextService.Object);
var manialinkManagerService = new Mock<IManialinkManager>();
var teamSettingsService = new TeamSettingsService(_server.Client.Object, manialinkManagerService.Object, locale);

return teamSettingsService;

return new TeamSettingsService(_server.Client.Object, _manialinkManager.Object, locale);
}

[Theory]
Expand All @@ -52,27 +51,52 @@ public async Task Generates_And_Parses_Club_Link_URL(string teamName, string pri
Assert.True(Uri.IsWellFormedUriString(clubLinkUrl, UriKind.Absolute));

var parsedTeamSettings = await teamSettingsService.ParseClubLinkUrl(clubLinkUrl);

Assert.Equal(teamName, parsedTeamSettings.Get("name"));
Assert.Equal(primaryColor, parsedTeamSettings.Get("primary"));
Assert.Equal(secondaryColor, parsedTeamSettings.Get("secondary"));
Assert.Equal(emblemUrl, parsedTeamSettings.Get("emblem"));
}

[Fact]
public async Task Shows_Team_Settings()
{
var teamSettings = new TeamSettingsModel();

await TeamSettingsServiceMock().ShowTeamSettingsAsync(_player.Object, teamSettings);

_manialinkManager.Verify(m => m.SendManialinkAsync(_player.Object, "TeamSettingsModule.EditTeamSettings", It.IsAny<It.IsAnyType>()), Times.Once);
}

[Fact]
public async Task Hides_Team_Settings_Editor()
{
await TeamSettingsServiceMock().HideTeamSettingsAsync(_player.Object);

_manialinkManager.Verify(m => m.HideManialinkAsync(_player.Object, "TeamSettingsModule.EditTeamSettings"), Times.Once);
}

[Fact]
public async Task Sets_Team_Settings()
{
var teamSettingsService = TeamSettingsServiceMock();
var teamSettings = new TeamSettingsModel
{
Team1Name = "Test1",
Team2Name = "Test2",
};
var teamSettings = new TeamSettingsModel { Team1Name = "Test1", Team2Name = "Test2", };

await teamSettingsService.SetTeamSettingsAsync(teamSettings);

var clubLinkUrlTeam1 = await teamSettingsService.GenerateClubLinkUrl(teamSettings.Team1Name, teamSettings.Team1PrimaryColor, teamSettings.Team1SecondaryColor, teamSettings.Team1EmblemUrl);
var clubLinkUrlTeam2 = await teamSettingsService.GenerateClubLinkUrl(teamSettings.Team2Name, teamSettings.Team2PrimaryColor, teamSettings.Team2SecondaryColor, teamSettings.Team2EmblemUrl);
var clubLinkUrlTeam1 = await teamSettingsService.GenerateClubLinkUrl(
"Test1",
teamSettings.Team1PrimaryColor,
teamSettings.Team1SecondaryColor,
teamSettings.Team1EmblemUrl
);

var clubLinkUrlTeam2 = await teamSettingsService.GenerateClubLinkUrl(
"Test2",
teamSettings.Team2PrimaryColor,
teamSettings.Team2SecondaryColor,
teamSettings.Team2EmblemUrl
);

_server.Remote.Verify(m => m.SetForcedClubLinksAsync(clubLinkUrlTeam1, clubLinkUrlTeam2), Times.Once);
}
Expand Down

0 comments on commit 4e7ee67

Please sign in to comment.