using System.IO; using System.Threading.Tasks; using Wabbajack.Common; using Wabbajack.Lib; using Xunit; namespace Wabbajack.Test { public class MO2Tests { #region CheckValidInstallPath [Fact] public async Task CheckValidInstallPath_Empty() { await using var tempDir = await TempFolder.Create(); Assert.True(MO2Installer.CheckValidInstallPath(tempDir.Dir, null, null).Succeeded); } [Fact] public async Task CheckValidInstallPath_DoesNotExist() { await using var tempDir = await TempFolder.Create(); Assert.True(MO2Installer.CheckValidInstallPath(tempDir.Dir.Combine("Subfolder"), null, null).Succeeded); } [Fact] public async Task CheckValidInstallPath_HasModlist() { await using var tempDir = await TempFolder.Create(); await using var mo2 = await tempDir.Dir.Combine("ModOrganizer.exe").Create(); await using var molist = await tempDir.Dir.Combine(((RelativePath)"modlist")).WithExtension(Consts.ModListExtension).Create(); Assert.False(MO2Installer.CheckValidInstallPath(tempDir.Dir, null, null).Succeeded); } [Fact] public async Task CheckValidInstallPath_ProperOverwrite() { await using var tempDir = await TempFolder.Create(); await using var tmp = await tempDir.Dir.Combine(Consts.ModOrganizer2Exe).Create(); Assert.True(MO2Installer.CheckValidInstallPath(tempDir.Dir, null, null).Succeeded); } [Fact] public async Task CheckValidInstallPath_ImproperOverwrite() { await using var tempDir = await TempFolder.Create(); await tempDir.Dir.DeleteDirectory(); tempDir.Dir.CreateDirectory(); await using var tmp = await tempDir.Dir.Combine($"someFile.txt").Create(); Assert.False(MO2Installer.CheckValidInstallPath(tempDir.Dir, null, null).Succeeded); } [Fact] public async Task CheckValidInstallPath_OverwriteFilesInDownloads() { await using var tempDir = await TempFolder.Create(); var downloadsFolder = tempDir.Dir.Combine("downloads"); downloadsFolder.CreateDirectory(); await using var tmp = await tempDir.Dir.Combine($"downloads/someFile.txt").Create(); Assert.True(MO2Installer.CheckValidInstallPath(tempDir.Dir, downloadsFolder, null).Succeeded); } [Fact] public async Task CheckValidInstallPath_NullPath() { var tempDir = new AbsolutePath("", true); Assert.True(MO2Installer.CheckValidInstallPath(tempDir, null, null).Succeeded == false); } #endregion } }