-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNuGetReferenceResolverTests.cs
112 lines (94 loc) · 4.03 KB
/
NuGetReferenceResolverTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
namespace CSharpInteractive.Tests;
using NuGet.Versioning;
public class NuGetReferenceResolverTests
{
private readonly Mock<ILog<NuGetReferenceResolver>> _log;
private readonly Mock<INuGetEnvironment> _nugetEnv;
private readonly Mock<INuGetRestoreService> _nugetRestoreService;
private readonly Mock<INuGetAssetsReader> _nugetAssetsReader;
private readonly Mock<ICleaner> _cleaner;
private readonly AddNuGetReferenceCommand _command;
private readonly Mock<IDisposable> _trackToken;
private static readonly string[] Sources = ["src"];
private static readonly string[] FallbackFolders = ["fallback"];
private const string PackagesPath = "packages";
private readonly ReferencingAssembly _referencingAssembly1 = new("Abc1", "Abc1.dll");
private readonly ReferencingAssembly _referencingAssembly2 = new("Abc2", "Abc2.dll");
public NuGetReferenceResolverTests()
{
_command = new AddNuGetReferenceCommand("Abc", new VersionRange(new NuGetVersion(1, 2, 3)));
_log = new Mock<ILog<NuGetReferenceResolver>>();
_log.Setup(i => i.Info(It.IsAny<Text[]>()));
_nugetEnv = new Mock<INuGetEnvironment>();
_nugetEnv.SetupGet(i => i.Sources).Returns(Sources);
_nugetEnv.SetupGet(i => i.FallbackFolders).Returns(FallbackFolders);
_nugetEnv.SetupGet(i => i.PackagesPath).Returns(PackagesPath);
_nugetRestoreService = new Mock<INuGetRestoreService>();
var projectAssetsJson = Path.Combine("TMP", "project.assets.json");
var settings = new NuGetRestoreSettings(
_command.PackageId,
Sources,
FallbackFolders,
_command.VersionRange,
null,
PackagesPath);
_nugetRestoreService.Setup(i => i.TryRestore(settings, out projectAssetsJson)).Returns(true);
_nugetAssetsReader = new Mock<INuGetAssetsReader>();
_nugetAssetsReader.Setup(i => i.ReadReferencingAssemblies(projectAssetsJson)).Returns([_referencingAssembly1, _referencingAssembly2]);
_trackToken = new Mock<IDisposable>();
_cleaner = new Mock<ICleaner>();
_cleaner.Setup(i => i.Track("TMP")).Returns(_trackToken.Object);
}
[Fact]
public void ShouldRestore()
{
// Given
var resolver = CreateInstance();
// When
var result = resolver.TryResolveAssemblies(_command.PackageId, _command.VersionRange, out var assemblies);
// Then
result.ShouldBeTrue();
assemblies.ShouldBe([_referencingAssembly1, _referencingAssembly2]);
_trackToken.Verify(i => i.Dispose());
}
[Fact]
public void ShouldFailWhenRestoreFail()
{
// Given
var resolver = CreateInstance();
// When
var projectAssetsJson = Path.Combine("TMP", "project.assets.json");
var settings = new NuGetRestoreSettings(
_command.PackageId,
Sources,
FallbackFolders,
_command.VersionRange,
null,
PackagesPath);
_nugetRestoreService.Setup(i => i.TryRestore(settings, out projectAssetsJson)).Returns(false);
var result = resolver.TryResolveAssemblies(_command.PackageId, _command.VersionRange, out _);
// Then
result.ShouldBeFalse();
}
[Fact]
public void ShouldRestoreWhenHasNoAssemblies()
{
// Given
var resolver = CreateInstance();
// When
var projectAssetsJson = Path.Combine("TMP", "project.assets.json");
_nugetAssetsReader.Setup(i => i.ReadReferencingAssemblies(projectAssetsJson)).Returns([]);
var result = resolver.TryResolveAssemblies(_command.PackageId, _command.VersionRange, out var assemblies);
// Then
result.ShouldBeTrue();
assemblies.ShouldBeEmpty();
_trackToken.Verify(i => i.Dispose());
}
private NuGetReferenceResolver CreateInstance() =>
new(
_log.Object,
_nugetEnv.Object,
_nugetRestoreService.Object,
_nugetAssetsReader.Object,
_cleaner.Object);
}