File: CommandTests\Workload\Install\MockWorkloadResolverFactory.cs
Web Access
Project: ..\..\..\test\dotnet.Tests\dotnet.Tests.csproj (dotnet.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
#nullable disable
 
using Microsoft.Deployment.DotNet.Releases;
using Microsoft.DotNet.Cli.Commands.Workload.Install;
using Microsoft.NET.Sdk.WorkloadManifestReader;
 
namespace Microsoft.DotNet.Cli.Workload.Install.Tests
{
    internal class MockWorkloadResolverFactory : IWorkloadResolverFactory
    {
        public IWorkloadResolverFactory.CreationResult MockResult { get; set; } = new();
 
        public IWorkloadResolverFactory.CreationResult Create(string globalJsonStartDir = null) => MockResult;
        public IWorkloadResolver CreateForWorkloadSet(string dotnetPath, string sdkVersion, string userProfileDir, string workloadSetVersion)
        {
            if (dotnetPath != MockResult.DotnetPath ||
                sdkVersion != MockResult.SdkVersion.ToString() ||
                userProfileDir != MockResult.UserProfileDir ||
                workloadSetVersion != null)
            {
                throw new NotImplementedException("Workload resolver factory mock does not support argument.");
            }
            return MockResult.WorkloadResolver;
        }
 
        public MockWorkloadResolverFactory()
        {
        }
 
        public MockWorkloadResolverFactory(string dotnetPath, string sdkVersion, IWorkloadResolver workloadResolver, string userProfileDir = null)
        {
            MockResult.DotnetPath = dotnetPath;
            MockResult.SdkVersion = new ReleaseVersion(sdkVersion);
            MockResult.WorkloadResolver = workloadResolver;
            MockResult.UserProfileDir = userProfileDir;
        }
    }
}