Files
libremetaverse/LibreMetaverse.RLV.Tests/Queries/FindFolderQueryTests.cs

117 lines
4.0 KiB
C#
Raw Normal View History

using Moq;
namespace LibreMetaverse.RLV.Tests.Queries
{
public class FindFolderQueryTests : RestrictionsBase
{
#region @findfolder:part1[&&...&&partN]=<channel_number>
[Fact]
public async Task FindFolder_MultipleTerms()
{
// #RLV
// |
// |- .private
// |
// |- Clothing
// | |= Business Pants (attached to 'groin')
// | |= Happy Shirt (attached to 'chest')
// | |= Retro Pants (worn on 'pants')
// | \-Hats
// | |
// | |- Sub Hats
// | | \ (Empty)
// | |
// | |= Fancy Hat (attached to 'chin')
// | \= Party Hat (attached to 'groin')
// \-Accessories
// |= Watch (worn on 'tattoo')
// \= Glasses (attached to 'chin')
var actual = _actionCallbacks.RecordReplies();
var sampleTree = SampleInventoryTree.BuildInventoryTree();
var sharedFolder = sampleTree.Root;
_queryCallbacks.Setup(e =>
e.TryGetSharedFolderAsync(default)
).ReturnsAsync((true, sharedFolder));
var expected = new List<(int Channel, string Text)>
{
(1234, "Clothing/Hats/Sub Hats"),
};
Assert.True(await _rlv.ProcessMessage("@findfolder:at&&ub=1234", _sender.Id, _sender.Name));
Assert.Equal(expected, actual);
}
[Fact]
public async Task FindFolder_SearchOrder()
{
var actual = _actionCallbacks.RecordReplies();
var sampleTree = SampleInventoryTree.BuildInventoryTree();
var sharedFolder = sampleTree.Root;
_queryCallbacks.Setup(e =>
e.TryGetSharedFolderAsync(default)
).ReturnsAsync((true, sharedFolder));
var expected = new List<(int Channel, string Text)>
{
(1234, "Clothing/Hats"),
};
Assert.True(await _rlv.ProcessMessage("@findfolder:at=1234", _sender.Id, _sender.Name));
Assert.Equal(expected, actual);
}
[Fact]
public async Task FindFolder_IgnorePrivate()
{
var actual = _actionCallbacks.RecordReplies();
var sampleTree = SampleInventoryTree.BuildInventoryTree();
var sharedFolder = sampleTree.Root;
var clothingFolder = sampleTree.Root.Children.Where(n => n.Name == "Clothing").First();
var hatsFolder = clothingFolder.Children.Where(n => n.Name == "Hats").First();
hatsFolder.Name = ".Hats";
_queryCallbacks.Setup(e =>
e.TryGetSharedFolderAsync(default)
).ReturnsAsync((true, sharedFolder));
var expected = new List<(int Channel, string Text)>
{
(1234, ""),
};
Assert.True(await _rlv.ProcessMessage("@findfolder:at=1234", _sender.Id, _sender.Name));
Assert.Equal(expected, actual);
}
[Fact]
public async Task FindFolder_IgnoreTildePrefix()
{
var actual = _actionCallbacks.RecordReplies();
var sampleTree = SampleInventoryTree.BuildInventoryTree();
var sharedFolder = sampleTree.Root;
var clothingFolder = sampleTree.Root.Children.Where(n => n.Name == "Clothing").First();
var hatsFolder = clothingFolder.Children.Where(n => n.Name == "Hats").First();
hatsFolder.Name = "~Hats";
_queryCallbacks.Setup(e =>
e.TryGetSharedFolderAsync(default)
).ReturnsAsync((true, sharedFolder));
var expected = new List<(int Channel, string Text)>
{
(1234, ""),
};
Assert.True(await _rlv.ProcessMessage("@findfolder:at=1234", _sender.Id, _sender.Name));
Assert.Equal(expected, actual);
}
#endregion
}
}