112 lines
2.9 KiB
C#
Executable File
112 lines
2.9 KiB
C#
Executable File
using MarketAlly.ProjectDetector;
|
|
|
|
namespace MarketAlly.AIPlugin.Tests;
|
|
|
|
/// <summary>
|
|
/// Tests for ProjectFileLocator
|
|
/// </summary>
|
|
public class ProjectFileLocatorTests
|
|
{
|
|
[Fact]
|
|
public void FindProjectFiles_WithNullPath_ShouldThrowArgumentNullException()
|
|
{
|
|
// Arrange & Act
|
|
Action act = () => ProjectFileLocator.FindProjectFiles(null!);
|
|
|
|
// Assert
|
|
act.Should().Throw<ArgumentNullException>()
|
|
.WithParameterName("startPath");
|
|
}
|
|
|
|
[Fact]
|
|
public void FindProjectFiles_WithEmptyPath_ShouldThrowArgumentException()
|
|
{
|
|
// Arrange & Act
|
|
Action act = () => ProjectFileLocator.FindProjectFiles("");
|
|
|
|
// Assert
|
|
act.Should().Throw<ArgumentException>();
|
|
}
|
|
|
|
[Fact]
|
|
public void FindProjectFiles_WithNonExistentPath_ShouldReturnEmptyList()
|
|
{
|
|
// Arrange
|
|
var nonExistentPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
|
|
|
|
// Act
|
|
var result = ProjectFileLocator.FindProjectFiles(nonExistentPath);
|
|
|
|
// Assert
|
|
result.Should().NotBeNull();
|
|
result.Should().BeEmpty();
|
|
}
|
|
|
|
[Fact]
|
|
public void FindProjectFiles_WithValidTempDirectory_ShouldNotThrow()
|
|
{
|
|
// Arrange
|
|
var tempPath = Path.GetTempPath();
|
|
|
|
// Act
|
|
Action act = () => ProjectFileLocator.FindProjectFiles(tempPath);
|
|
|
|
// Assert
|
|
act.Should().NotThrow();
|
|
}
|
|
|
|
[Fact]
|
|
public void FindProjectFiles_WithCustomOptions_ShouldRespectMaxDepth()
|
|
{
|
|
// Arrange
|
|
var tempPath = Path.GetTempPath();
|
|
var options = new ProjectDetectorOptions { MaxDepth = 0 };
|
|
|
|
// Act
|
|
var result = ProjectFileLocator.FindProjectFiles(tempPath, options);
|
|
|
|
// Assert
|
|
result.Should().NotBeNull();
|
|
// With MaxDepth = 0, should only search the immediate directory
|
|
}
|
|
|
|
[Fact]
|
|
public void FindProjectFiles_WithCustomOptions_ShouldRespectMaxResults()
|
|
{
|
|
// Arrange
|
|
var tempPath = Path.GetTempPath();
|
|
var options = new ProjectDetectorOptions { MaxResults = 1 };
|
|
|
|
// Act
|
|
var result = ProjectFileLocator.FindProjectFiles(tempPath, options);
|
|
|
|
// Assert
|
|
result.Should().NotBeNull();
|
|
result.Count.Should().BeLessOrEqualTo(1);
|
|
}
|
|
|
|
[Fact]
|
|
public void FindSolutionFiles_WithNullPath_ShouldThrowArgumentNullException()
|
|
{
|
|
// Arrange & Act
|
|
Action act = () => ProjectFileLocator.FindSolutionFiles(null!);
|
|
|
|
// Assert
|
|
act.Should().Throw<ArgumentNullException>()
|
|
.WithParameterName("startPath");
|
|
}
|
|
|
|
[Fact]
|
|
public void FindSolutionFiles_WithValidPath_ShouldNotThrow()
|
|
{
|
|
// Arrange
|
|
var tempPath = Path.GetTempPath();
|
|
|
|
// Act
|
|
Action act = () => ProjectFileLocator.FindSolutionFiles(tempPath);
|
|
|
|
// Assert
|
|
act.Should().NotThrow();
|
|
}
|
|
}
|