diff --git a/Iceshrimp.Tests/Parsing/SearchQueryTests.cs b/Iceshrimp.Tests/Parsing/SearchQueryTests.cs index 11c6d43b..1fb79e66 100644 --- a/Iceshrimp.Tests/Parsing/SearchQueryTests.cs +++ b/Iceshrimp.Tests/Parsing/SearchQueryTests.cs @@ -210,6 +210,32 @@ public class SearchQueryTests .And.BeEquivalentTo(expectedResults, opts => opts.RespectingRuntimeTypes()); } + [TestMethod] + [DataRow(false)] + [DataRow(true)] + public void TestParseVisibility(bool negated) + { + var key = negated ? "-visibility" : "visibility"; + List candidates = + [ + "public", "home", "unlisted", "followers", "direct", "specified", "local" + ]; + var results = candidates.Select(v => $"{key}:{v}").SelectMany(p => SearchQueryParser.Parse(p)).ToList(); + List expectedResults = + [ + new VisibilityFilter(negated, VisibilityFilterType.Public), + new VisibilityFilter(negated, VisibilityFilterType.Home), + new VisibilityFilter(negated, VisibilityFilterType.Home), + new VisibilityFilter(negated, VisibilityFilterType.Followers), + new VisibilityFilter(negated, VisibilityFilterType.Specified), + new VisibilityFilter(negated, VisibilityFilterType.Specified), + new VisibilityFilter(negated, VisibilityFilterType.Local) + ]; + results.Should() + .HaveCount(expectedResults.Count) + .And.BeEquivalentTo(expectedResults, opts => opts.RespectingRuntimeTypes()); + } + [TestMethod] [DataRow(false)] [DataRow(true)]