mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-04-19 19:14:51 +00:00
Prevent LBP3 reviews from showing up in LBP2 (#1015)
This commit is contained in:
parent
0ce748de8f
commit
ed5bb5d769
2 changed files with 113 additions and 0 deletions
|
@ -157,6 +157,13 @@ public class ReviewController : ControllerBase
|
|||
|
||||
List<GameReview> reviews = (await this.database.Reviews
|
||||
.Where(r => r.SlotId == slotId)
|
||||
.Select(r => new
|
||||
{
|
||||
Review = r,
|
||||
SlotVersion = r.Slot!.GameVersion,
|
||||
})
|
||||
.Where(a => a.SlotVersion <= token.GameVersion)
|
||||
.Select(a => a.Review)
|
||||
.OrderByDescending(r => r.ThumbsUp - r.ThumbsDown)
|
||||
.ThenByDescending(r => r.Timestamp)
|
||||
.ApplyPagination(pageData)
|
||||
|
@ -178,6 +185,13 @@ public class ReviewController : ControllerBase
|
|||
|
||||
List<GameReview> reviews = (await this.database.Reviews
|
||||
.Where(r => r.ReviewerId == targetUserId)
|
||||
.Select(r => new
|
||||
{
|
||||
Review = r,
|
||||
SlotVersion = r.Slot!.GameVersion,
|
||||
})
|
||||
.Where(a => a.SlotVersion <= token.GameVersion)
|
||||
.Select(a => a.Review)
|
||||
.OrderByDescending(r => r.Timestamp)
|
||||
.ApplyPagination(pageData)
|
||||
.ToListAsync()).ToSerializableList(r => GameReview.CreateFromEntity(r, token));
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using LBPUnion.ProjectLighthouse.Database;
|
||||
using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots;
|
||||
using LBPUnion.ProjectLighthouse.Tests.Helpers;
|
||||
using LBPUnion.ProjectLighthouse.Types.Entities.Level;
|
||||
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
|
||||
using LBPUnion.ProjectLighthouse.Types.Serialization;
|
||||
using LBPUnion.ProjectLighthouse.Types.Users;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Xunit;
|
||||
|
||||
namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers;
|
||||
|
||||
public class ReviewControllerTests
|
||||
{
|
||||
private static async Task InsertTestData(DatabaseContext database)
|
||||
{
|
||||
database.Slots.Add(new SlotEntity
|
||||
{
|
||||
SlotId = 1,
|
||||
CreatorId = 1,
|
||||
GameVersion = GameVersion.LittleBigPlanet3,
|
||||
});
|
||||
|
||||
database.Slots.Add(new SlotEntity
|
||||
{
|
||||
SlotId = 2,
|
||||
CreatorId = 1,
|
||||
GameVersion = GameVersion.LittleBigPlanet2,
|
||||
});
|
||||
|
||||
database.Reviews.Add(new ReviewEntity
|
||||
{
|
||||
ReviewId = 1,
|
||||
ReviewerId = 1,
|
||||
SlotId = 1,
|
||||
});
|
||||
|
||||
database.Reviews.Add(new ReviewEntity
|
||||
{
|
||||
ReviewId = 2,
|
||||
ReviewerId = 1,
|
||||
SlotId = 2,
|
||||
});
|
||||
await database.SaveChangesAsync();
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(GameVersion.LittleBigPlanet2, 1)]
|
||||
[InlineData(GameVersion.LittleBigPlanet3, 2)]
|
||||
public async Task ReviewsBy_ShouldNotList_HigherGameVersions(GameVersion version, int expected)
|
||||
{
|
||||
GameTokenEntity token = MockHelper.GetUnitTestToken();
|
||||
token.GameVersion = version;
|
||||
DatabaseContext database = await MockHelper.GetTestDatabase(new List<GameTokenEntity>
|
||||
{
|
||||
token,
|
||||
});
|
||||
|
||||
await InsertTestData(database);
|
||||
|
||||
ReviewController controller = new(database);
|
||||
controller.SetupTestController(token);
|
||||
|
||||
IActionResult response = await controller.ReviewsBy("unittest");
|
||||
ReviewResponse review = response.CastTo<OkObjectResult, ReviewResponse>();
|
||||
|
||||
Assert.Equal(expected, review.Reviews.Count);
|
||||
Assert.True(review.Reviews.All(r => database.Slots.FirstOrDefault(s => s.SlotId == r.Slot.SlotId)?.GameVersion <= version));
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(GameVersion.LittleBigPlanet2, 2, 1)]
|
||||
[InlineData(GameVersion.LittleBigPlanet2, 1, 0)]
|
||||
[InlineData(GameVersion.LittleBigPlanet3, 2, 1)]
|
||||
[InlineData(GameVersion.LittleBigPlanet3, 1, 1)]
|
||||
public async Task ReviewsFor_ShouldNotList_HigherGameVersions(GameVersion version, int slotId, int expected)
|
||||
{
|
||||
GameTokenEntity token = MockHelper.GetUnitTestToken();
|
||||
token.GameVersion = version;
|
||||
DatabaseContext database = await MockHelper.GetTestDatabase(new List<GameTokenEntity>
|
||||
{
|
||||
token,
|
||||
});
|
||||
|
||||
await InsertTestData(database);
|
||||
|
||||
ReviewController controller = new(database);
|
||||
controller.SetupTestController(token);
|
||||
|
||||
IActionResult response = await controller.ReviewsFor(slotId);
|
||||
ReviewResponse review = response.CastTo<OkObjectResult, ReviewResponse>();
|
||||
|
||||
Assert.Equal(expected, review.Reviews.Count);
|
||||
Assert.True(review.Reviews.All(r => database.Slots.FirstOrDefault(s => s.SlotId == r.Slot.SlotId)?.GameVersion <= version));
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue