mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-07-13 16:51:27 +00:00
Prevent duplicate profile pins
This commit is contained in:
parent
931f079265
commit
67d0d3d7b1
2 changed files with 26 additions and 1 deletions
|
@ -180,7 +180,7 @@ public class UserController : ControllerBase
|
||||||
// Sometimes the update gets called periodically as pin progress updates via playing,
|
// Sometimes the update gets called periodically as pin progress updates via playing,
|
||||||
// may not affect equipped profile pins however, so check before setting it.
|
// may not affect equipped profile pins however, so check before setting it.
|
||||||
string currentPins = user.Pins;
|
string currentPins = user.Pins;
|
||||||
string newPins = string.Join(",", pinJson.ProfilePins);
|
string newPins = string.Join(",", pinJson.ProfilePins.Distinct());
|
||||||
|
|
||||||
if (string.Equals(currentPins, newPins)) return this.Ok("[{\"StatusCode\":200}]");
|
if (string.Equals(currentPins, newPins)) return this.Ok("[{\"StatusCode\":200}]");
|
||||||
|
|
||||||
|
|
|
@ -177,4 +177,29 @@ public class UserControllerTests
|
||||||
Assert.Equal(expectedPins, dbMock.Users.First().Pins);
|
Assert.Equal(expectedPins, dbMock.Users.First().Pins);
|
||||||
Assert.Equal(expectedResponse, pinsResponse);
|
Assert.Equal(expectedResponse, pinsResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task UpdateMyPins_ShouldRemove_DuplicatePins()
|
||||||
|
{
|
||||||
|
UserEntity entity = MockHelper.GetUnitTestUser();
|
||||||
|
entity.Pins = "1234";
|
||||||
|
List<UserEntity> users = new()
|
||||||
|
{
|
||||||
|
entity,
|
||||||
|
};
|
||||||
|
await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(users);
|
||||||
|
|
||||||
|
UserController userController = new(dbMock);
|
||||||
|
userController.SetupTestController("{\"profile_pins\": [1234, 1234]}");
|
||||||
|
|
||||||
|
const string expectedPins = "1234";
|
||||||
|
const string expectedResponse = "[{\"StatusCode\":200}]";
|
||||||
|
|
||||||
|
IActionResult result = await userController.UpdateMyPins();
|
||||||
|
|
||||||
|
string pinsResponse = result.CastTo<OkObjectResult, string>();
|
||||||
|
|
||||||
|
Assert.Equal(expectedPins, dbMock.Users.First().Pins);
|
||||||
|
Assert.Equal(expectedResponse, pinsResponse);
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue