mirror of https://github.com/ppy/osu
Add test coverage of new imports not correctly being filtered by collection filter
This commit is contained in:
parent
5111bad86c
commit
a90967715c
|
@ -128,6 +128,8 @@ IEnumerable<BeatmapInfo> getBeatmaps(int count)
|
||||||
|
|
||||||
var rulesetInfo = getRuleset();
|
var rulesetInfo = getRuleset();
|
||||||
|
|
||||||
|
string hash = Guid.NewGuid().ToString().ComputeMD5Hash();
|
||||||
|
|
||||||
yield return new BeatmapInfo
|
yield return new BeatmapInfo
|
||||||
{
|
{
|
||||||
OnlineID = beatmapId,
|
OnlineID = beatmapId,
|
||||||
|
@ -136,7 +138,8 @@ IEnumerable<BeatmapInfo> getBeatmaps(int count)
|
||||||
Length = length,
|
Length = length,
|
||||||
BeatmapSet = beatmapSet,
|
BeatmapSet = beatmapSet,
|
||||||
BPM = bpm,
|
BPM = bpm,
|
||||||
Hash = Guid.NewGuid().ToString().ComputeMD5Hash(),
|
Hash = hash,
|
||||||
|
MD5Hash = hash,
|
||||||
Ruleset = rulesetInfo,
|
Ruleset = rulesetInfo,
|
||||||
Metadata = metadata.DeepClone(),
|
Metadata = metadata.DeepClone(),
|
||||||
Difficulty = new BeatmapDifficulty
|
Difficulty = new BeatmapDifficulty
|
||||||
|
|
|
@ -27,8 +27,6 @@ public class TestScenePlaylistOverlay : OsuManualInputManagerTestScene
|
||||||
|
|
||||||
private PlaylistOverlay playlistOverlay = null!;
|
private PlaylistOverlay playlistOverlay = null!;
|
||||||
|
|
||||||
private Live<BeatmapSetInfo> first = null!;
|
|
||||||
|
|
||||||
private BeatmapManager beatmapManager = null!;
|
private BeatmapManager beatmapManager = null!;
|
||||||
|
|
||||||
private const int item_count = 20;
|
private const int item_count = 20;
|
||||||
|
@ -67,7 +65,7 @@ public void Setup() => Schedule(() =>
|
||||||
beatmapManager.Import(TestResources.CreateTestBeatmapSetInfo());
|
beatmapManager.Import(TestResources.CreateTestBeatmapSetInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
first = beatmapSets.First().ToLive(Realm);
|
beatmapSets.First().ToLive(Realm);
|
||||||
});
|
});
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -117,6 +115,68 @@ public void TestFiltering()
|
||||||
() => playlistOverlay.ChildrenOfType<PlaylistItem>()
|
() => playlistOverlay.ChildrenOfType<PlaylistItem>()
|
||||||
.Where(item => item.MatchingFilter)
|
.Where(item => item.MatchingFilter)
|
||||||
.All(item => item.FilterTerms.Any(term => term.ToString().Contains("10"))));
|
.All(item => item.FilterTerms.Any(term => term.ToString().Contains("10"))));
|
||||||
|
|
||||||
|
AddStep("Import new non-matching beatmap", () =>
|
||||||
|
{
|
||||||
|
var testBeatmapSetInfo = TestResources.CreateTestBeatmapSetInfo(1);
|
||||||
|
testBeatmapSetInfo.Beatmaps.Single().Metadata.Title = "no guid";
|
||||||
|
beatmapManager.Import(testBeatmapSetInfo);
|
||||||
|
});
|
||||||
|
|
||||||
|
AddStep("Force realm refresh", () => Realm.Run(r => r.Refresh()));
|
||||||
|
|
||||||
|
AddAssert("results filtered correctly",
|
||||||
|
() => playlistOverlay.ChildrenOfType<PlaylistItem>()
|
||||||
|
.Where(item => item.MatchingFilter)
|
||||||
|
.All(item => item.FilterTerms.Any(term => term.ToString().Contains("10"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestCollectionFiltering()
|
||||||
|
{
|
||||||
|
NowPlayingCollectionDropdown collectionDropdown() => playlistOverlay.ChildrenOfType<NowPlayingCollectionDropdown>().Single();
|
||||||
|
|
||||||
|
AddStep("Add collection", () =>
|
||||||
|
{
|
||||||
|
Dependencies.Get<RealmAccess>().Write(r =>
|
||||||
|
{
|
||||||
|
r.RemoveAll<BeatmapCollection>();
|
||||||
|
r.Add(new BeatmapCollection("wang"));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
AddUntilStep("wait for dropdown to have new collection", () => collectionDropdown().Items.Count() == 2);
|
||||||
|
|
||||||
|
AddStep("Filter to collection", () =>
|
||||||
|
{
|
||||||
|
collectionDropdown().Current.Value = collectionDropdown().Items.Last();
|
||||||
|
});
|
||||||
|
|
||||||
|
AddUntilStep("No items present", () => !playlistOverlay.ChildrenOfType<PlaylistItem>().Any(i => i.MatchingFilter));
|
||||||
|
|
||||||
|
AddStep("Import new non-matching beatmap", () =>
|
||||||
|
{
|
||||||
|
beatmapManager.Import(TestResources.CreateTestBeatmapSetInfo(1));
|
||||||
|
});
|
||||||
|
|
||||||
|
AddStep("Force realm refresh", () => Realm.Run(r => r.Refresh()));
|
||||||
|
|
||||||
|
AddUntilStep("No items matching", () => !playlistOverlay.ChildrenOfType<PlaylistItem>().Any(i => i.MatchingFilter));
|
||||||
|
|
||||||
|
BeatmapSetInfo collectionAddedBeatmapSet = null!;
|
||||||
|
|
||||||
|
AddStep("Import new matching beatmap", () =>
|
||||||
|
{
|
||||||
|
collectionAddedBeatmapSet = TestResources.CreateTestBeatmapSetInfo(1);
|
||||||
|
|
||||||
|
beatmapManager.Import(collectionAddedBeatmapSet);
|
||||||
|
Realm.Write(r => r.All<BeatmapCollection>().First().BeatmapMD5Hashes.Add(collectionAddedBeatmapSet.Beatmaps.First().MD5Hash));
|
||||||
|
});
|
||||||
|
|
||||||
|
AddStep("Force realm refresh", () => Realm.Run(r => r.Refresh()));
|
||||||
|
|
||||||
|
AddUntilStep("Only matching item",
|
||||||
|
() => playlistOverlay.ChildrenOfType<PlaylistItem>().Where(i => i.MatchingFilter).Select(i => i.Model.ID), () => Is.EquivalentTo(new[] { collectionAddedBeatmapSet.ID }));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue