< Summary

Information
Class: TestUtilities.MockFileProviderHelpers
Assembly: TestUtilities
File(s): /home/runner/work/KicktippAi/KicktippAi/src/TestUtilities/MockFileProviderHelpers.cs
Line coverage
100%
Covered lines: 17
Uncovered lines: 0
Coverable lines: 17
Total lines: 54
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CreateMockFileProvider(...)100%44100%
CreateMockFileInfo(...)100%11100%

File(s)

/home/runner/work/KicktippAi/KicktippAi/src/TestUtilities/MockFileProviderHelpers.cs

#LineLine coverage
 1using Microsoft.Extensions.FileProviders;
 2using Moq;
 3
 4namespace TestUtilities;
 5
 6/// <summary>
 7/// Helper methods for creating mock IFileProvider instances for testing
 8/// </summary>
 9public static class MockFileProviderHelpers
 10{
 11    /// <summary>
 12    /// Creates a mock IFileProvider with the specified file contents
 13    /// </summary>
 14    /// <param name="fileContents">Dictionary mapping file paths to their contents</param>
 15    /// <returns>A configured mock IFileProvider</returns>
 16    public static Mock<IFileProvider> CreateMockFileProvider(Dictionary<string, string> fileContents)
 17    {
 118        var mockFileProvider = new Mock<IFileProvider>();
 19
 20        // Setup GetFileInfo for each file
 121        foreach (var (path, content) in fileContents)
 22        {
 123            var mockFileInfo = CreateMockFileInfo(content, path);
 124            mockFileProvider.Setup(fp => fp.GetFileInfo(path)).Returns(mockFileInfo.Object);
 25        }
 26
 27        // Setup non-existent files to return NotFoundFileInfo
 128        mockFileProvider.Setup(fp => fp.GetFileInfo(It.Is<string>(p => !fileContents.ContainsKey(p))))
 129            .Returns<string>(name => new NotFoundFileInfo(name));
 30
 131        return mockFileProvider;
 32    }
 33
 34    /// <summary>
 35    /// Creates a mock IFileInfo that returns the specified content
 36    /// </summary>
 37    /// <param name="content">The file content to return when the file is read</param>
 38    /// <param name="path">The path to use for PhysicalPath</param>
 39    /// <returns>A configured mock IFileInfo</returns>
 40    public static Mock<IFileInfo> CreateMockFileInfo(string content, string path)
 41    {
 142        var mockFileInfo = new Mock<IFileInfo>();
 143        mockFileInfo.Setup(fi => fi.Exists).Returns(true);
 144        mockFileInfo.Setup(fi => fi.PhysicalPath).Returns(path);
 145        mockFileInfo.Setup(fi => fi.Name).Returns(Path.GetFileName(path));
 146        mockFileInfo.Setup(fi => fi.CreateReadStream()).Returns(() =>
 147        {
 148            var bytes = System.Text.Encoding.UTF8.GetBytes(content);
 149            return new MemoryStream(bytes);
 150        });
 51
 152        return mockFileInfo;
 53    }
 54}