UnitTests/ConnecterImportUtilityTests.cs
using System.IO;
using Sandbox;

[TestClass]
public sealed class ConnecterImportUtilityTests
{
	[TestMethod]
	public void MapsImportDestinationInsideProjectAssets()
	{
		var repository = ConnecterRepository.FromPath( @"E:\Game Assets\Basic Assets" );
		var record = new ConnecterAssetRecord(
			@"E:\Game Assets\Basic Assets\Props\Crate\crate.fbx",
			repository.FullPath,
			repository.Name,
			"Props/Crate/crate.fbx",
			false,
			ConnecterAssetKind.ModelSource,
			null );

		var options = new ConnecterImportOptions( @"C:\Project\Assets" );

		var destination = ConnecterPathUtility.GetImportDirectory( record, options );

		Assert.AreEqual(
			Path.Combine( @"C:\Project\Assets", "ConnecterImports", "Basic Assets", "Props", "Crate" ),
			destination );
		Assert.IsTrue( ConnecterPathUtility.IsPathInside( options.ProjectAssetsPath, destination ) );
	}

	[TestMethod]
	public void ClassifiesSupportedAndUnsupportedAssetTypes()
	{
		Assert.AreEqual( ConnecterAssetKind.ModelSource, ConnecterAssetClassifier.Classify( "chair.fbx" ) );
		Assert.AreEqual( ConnecterAssetKind.ModelSource, ConnecterAssetClassifier.Classify( "shape.obj" ) );
		Assert.AreEqual( ConnecterAssetKind.Image, ConnecterAssetClassifier.Classify( "albedo.png" ) );
		Assert.AreEqual( ConnecterAssetKind.Audio, ConnecterAssetClassifier.Classify( "hit.wav" ) );
		Assert.AreEqual( ConnecterAssetKind.SboxModel, ConnecterAssetClassifier.Classify( "chair.vmdl" ) );
		Assert.AreEqual( ConnecterAssetKind.Unsupported, ConnecterAssetClassifier.Classify( "chair.glb" ) );
		Assert.AreEqual( ConnecterAssetKind.Unsupported, ConnecterAssetClassifier.Classify( "chair.blend" ) );
		Assert.AreEqual( ConnecterAssetKind.Unknown, ConnecterAssetClassifier.Classify( "notes.txt" ) );
	}

	[TestMethod]
	public void GeneratesVmdlWithRenderMeshAndBindPose()
	{
		var vmdl = ConnecterModelDocBuilder.CreateModelDoc( "connecterimports/basic assets/props/chair.fbx", "chair.fbx" );

		StringAssert.Contains( vmdl, "_class = \"RenderMeshFile\"" );
		StringAssert.Contains( vmdl, "filename = \"connecterimports/basic assets/props/chair.fbx\"" );
		StringAssert.Contains( vmdl, "_class = \"AnimBindPose\"" );
		StringAssert.Contains( vmdl, "model_archetype = \"static_prop_model\"" );
	}
}