UnitTests/ConnecterAssetScannerTests.cs
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Editor;
using Sandbox;

[TestClass]
public sealed class ConnecterAssetScannerTests
{
	private string TempRoot;

	[TestInitialize]
	public void SetUp()
	{
		TempRoot = Path.Combine( Path.GetTempPath(), "ConnectorIntegrationTests", Guid.NewGuid().ToString( "N" ) );
		Directory.CreateDirectory( TempRoot );
	}

	[TestCleanup]
	public void TearDown()
	{
		if ( Directory.Exists( TempRoot ) )
		{
			Directory.Delete( TempRoot, true );
		}
	}

	[TestMethod]
	public async Task AssetModeScansFilesRecursivelyWithoutFolders()
	{
		var props = Path.Combine( TempRoot, "Props" );
		Directory.CreateDirectory( props );
		File.WriteAllText( Path.Combine( props, "crate.fbx" ), "" );
		File.WriteAllText( Path.Combine( props, "crate.vmat" ), "" );
		File.WriteAllText( Path.Combine( props, "crate.png" ), "" );
		File.WriteAllText( Path.Combine( props, "notes.txt" ), "" );

		var repository = ConnecterRepository.FromPath( TempRoot );
		var result = await ConnecterAssetScanner.ScanAssetsAsync( [repository], "", ConnecterBrowserFilter.All, CancellationToken.None );

		Assert.AreEqual( 3, result.Items.Count );
		Assert.IsFalse( result.Items.Any( x => x.IsDirectory ) );
		Assert.IsTrue( result.Items.Any( x => x.Name == "crate.fbx" ) );
		Assert.IsTrue( result.Items.Any( x => x.Name == "crate.vmat" ) );
		Assert.IsTrue( result.Items.Any( x => x.Name == "crate.png" ) );
	}

	[TestMethod]
	public async Task AssetModeFiltersMaterials()
	{
		File.WriteAllText( Path.Combine( TempRoot, "crate.fbx" ), "" );
		File.WriteAllText( Path.Combine( TempRoot, "crate.vmat" ), "" );

		var repository = ConnecterRepository.FromPath( TempRoot );
		var result = await ConnecterAssetScanner.ScanAssetsAsync( [repository], "", ConnecterBrowserFilter.Materials, CancellationToken.None );

		Assert.AreEqual( 1, result.Items.Count );
		Assert.AreEqual( "crate.vmat", result.Items[0].Name );
		Assert.AreEqual( ConnecterAssetKind.Material, result.Items[0].Kind );
	}
}