[skip ci] Fix unit tests on macOS (And probably Unix) (#3647)

This commit is contained in:
Fesaa 2025-03-19 11:13:05 +00:00 committed by GitHub
parent e897fb9a12
commit 98a2b9d3ed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 154 additions and 172 deletions

View file

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.IO.Abstractions.TestingHelpers;
using System.Threading;
using API.Entities;
using API.Entities.Enums;
using API.Helpers;
@ -11,9 +12,9 @@ using Xunit;
namespace API.Tests.Helpers;
public class CacheHelperTests
public class CacheHelperTests: AbstractFsTest
{
private const string TestCoverImageDirectory = @"c:\";
private static readonly string TestCoverImageDirectory = Root;
private const string TestCoverImageFile = "thumbnail.jpg";
private readonly string _testCoverPath = Path.Join(TestCoverImageDirectory, TestCoverImageFile);
private const string TestCoverArchive = @"file in folder.zip";
@ -37,24 +38,29 @@ public class CacheHelperTests
[Theory]
[InlineData("", false)]
[InlineData("C:/", false)]
[InlineData(null, false)]
public void CoverImageExists_DoesFileExist(string coverImage, bool exists)
{
Assert.Equal(exists, _cacheHelper.CoverImageExists(coverImage));
}
[Fact]
public void CoverImageExists_DoesFileExistRoot()
{
Assert.False(_cacheHelper.CoverImageExists(Root));
}
[Fact]
public void CoverImageExists_FileExists()
{
Assert.True(_cacheHelper.CoverImageExists(TestCoverArchive));
Assert.True(_cacheHelper.CoverImageExists(Path.Join(TestCoverImageDirectory, TestCoverArchive)));
}
[Fact]
public void ShouldUpdateCoverImage_OnFirstRun()
{
var file = new MangaFileBuilder(TestCoverArchive, MangaFormat.Archive)
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(DateTime.Now)
.Build();
Assert.True(_cacheHelper.ShouldUpdateCoverImage(null, file, DateTime.Now.Subtract(TimeSpan.FromMinutes(1)),
@ -65,7 +71,7 @@ public class CacheHelperTests
public void ShouldUpdateCoverImage_ShouldNotUpdateOnSecondRunWithCoverImageSetNotLocked()
{
// Represents first run
var file = new MangaFileBuilder(TestCoverArchive, MangaFormat.Archive)
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(DateTime.Now)
.Build();
Assert.False(_cacheHelper.ShouldUpdateCoverImage(_testCoverPath, file, DateTime.Now.Subtract(TimeSpan.FromMinutes(1)),
@ -76,7 +82,7 @@ public class CacheHelperTests
public void ShouldUpdateCoverImage_ShouldNotUpdateOnSecondRunWithCoverImageSetNotLocked_2()
{
// Represents first run
var file = new MangaFileBuilder(TestCoverArchive, MangaFormat.Archive)
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(DateTime.Now)
.Build();
Assert.False(_cacheHelper.ShouldUpdateCoverImage(_testCoverPath, file, DateTime.Now,
@ -87,7 +93,7 @@ public class CacheHelperTests
public void ShouldUpdateCoverImage_ShouldNotUpdateOnSecondRunWithCoverImageSetLocked()
{
// Represents first run
var file = new MangaFileBuilder(TestCoverArchive, MangaFormat.Archive)
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(DateTime.Now)
.Build();
Assert.False(_cacheHelper.ShouldUpdateCoverImage(_testCoverPath, file, DateTime.Now.Subtract(TimeSpan.FromMinutes(1)),
@ -98,7 +104,7 @@ public class CacheHelperTests
public void ShouldUpdateCoverImage_ShouldNotUpdateOnSecondRunWithCoverImageSetLocked_Modified()
{
// Represents first run
var file = new MangaFileBuilder(TestCoverArchive, MangaFormat.Archive)
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(DateTime.Now)
.Build();
Assert.False(_cacheHelper.ShouldUpdateCoverImage(_testCoverPath, file, DateTime.Now.Subtract(TimeSpan.FromMinutes(1)),
@ -122,7 +128,7 @@ public class CacheHelperTests
var cacheHelper = new CacheHelper(fileService);
var created = DateTime.Now.Subtract(TimeSpan.FromHours(1));
var file = new MangaFileBuilder(TestCoverArchive, MangaFormat.Archive)
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(DateTime.Now.Subtract(TimeSpan.FromMinutes(1)))
.Build();
@ -133,9 +139,10 @@ public class CacheHelperTests
[Fact]
public void HasFileNotChangedSinceCreationOrLastScan_NotChangedSinceCreated()
{
var now = DateTimeOffset.Now;
var filesystemFile = new MockFileData("")
{
LastWriteTime = DateTimeOffset.Now
LastWriteTime =now,
};
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
{
@ -147,12 +154,12 @@ public class CacheHelperTests
var cacheHelper = new CacheHelper(fileService);
var chapter = new ChapterBuilder("1")
.WithLastModified(filesystemFile.LastWriteTime.DateTime)
.WithCreated(filesystemFile.LastWriteTime.DateTime)
.WithLastModified(now.DateTime)
.WithCreated(now.DateTime)
.Build();
var file = new MangaFileBuilder(TestCoverArchive, MangaFormat.Archive)
.WithLastModified(filesystemFile.LastWriteTime.DateTime)
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(now.DateTime)
.Build();
Assert.True(cacheHelper.IsFileUnmodifiedSinceCreationOrLastScan(chapter, false, file));
}
@ -160,9 +167,10 @@ public class CacheHelperTests
[Fact]
public void HasFileNotChangedSinceCreationOrLastScan_NotChangedSinceLastModified()
{
var now = DateTimeOffset.Now;
var filesystemFile = new MockFileData("")
{
LastWriteTime = DateTimeOffset.Now
LastWriteTime = now,
};
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
{
@ -174,12 +182,12 @@ public class CacheHelperTests
var cacheHelper = new CacheHelper(fileService);
var chapter = new ChapterBuilder("1")
.WithLastModified(filesystemFile.LastWriteTime.DateTime)
.WithCreated(filesystemFile.LastWriteTime.DateTime)
.WithLastModified(now.DateTime)
.WithCreated(now.DateTime)
.Build();
var file = new MangaFileBuilder(TestCoverArchive, MangaFormat.Archive)
.WithLastModified(filesystemFile.LastWriteTime.DateTime)
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(now.DateTime)
.Build();
Assert.True(cacheHelper.IsFileUnmodifiedSinceCreationOrLastScan(chapter, false, file));
@ -188,9 +196,10 @@ public class CacheHelperTests
[Fact]
public void HasFileNotChangedSinceCreationOrLastScan_NotChangedSinceLastModified_ForceUpdate()
{
var now = DateTimeOffset.Now;
var filesystemFile = new MockFileData("")
{
LastWriteTime = DateTimeOffset.Now
LastWriteTime = now.DateTime,
};
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
{
@ -202,12 +211,12 @@ public class CacheHelperTests
var cacheHelper = new CacheHelper(fileService);
var chapter = new ChapterBuilder("1")
.WithLastModified(filesystemFile.LastWriteTime.DateTime)
.WithCreated(filesystemFile.LastWriteTime.DateTime)
.WithLastModified(now.DateTime)
.WithCreated(now.DateTime)
.Build();
var file = new MangaFileBuilder(TestCoverArchive, MangaFormat.Archive)
.WithLastModified(filesystemFile.LastWriteTime.DateTime)
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(now.DateTime)
.Build();
Assert.False(cacheHelper.IsFileUnmodifiedSinceCreationOrLastScan(chapter, true, file));
}
@ -215,10 +224,11 @@ public class CacheHelperTests
[Fact]
public void IsFileUnmodifiedSinceCreationOrLastScan_ModifiedSinceLastScan()
{
var now = DateTimeOffset.Now;
var filesystemFile = new MockFileData("")
{
LastWriteTime = DateTimeOffset.Now,
CreationTime = DateTimeOffset.Now
LastWriteTime = now.DateTime,
CreationTime = now.DateTime
};
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
{
@ -234,8 +244,8 @@ public class CacheHelperTests
.WithCreated(DateTime.Now.Subtract(TimeSpan.FromMinutes(10)))
.Build();
var file = new MangaFileBuilder(TestCoverArchive, MangaFormat.Archive)
.WithLastModified(filesystemFile.LastWriteTime.DateTime)
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(now.DateTime)
.Build();
Assert.False(cacheHelper.IsFileUnmodifiedSinceCreationOrLastScan(chapter, false, file));
}
@ -243,9 +253,10 @@ public class CacheHelperTests
[Fact]
public void HasFileNotChangedSinceCreationOrLastScan_ModifiedSinceLastScan_ButLastModifiedSame()
{
var now = DateTimeOffset.Now;
var filesystemFile = new MockFileData("")
{
LastWriteTime = DateTimeOffset.Now
LastWriteTime =now.DateTime
};
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
{
@ -262,7 +273,7 @@ public class CacheHelperTests
.Build();
var file = new MangaFileBuilder(Path.Join(TestCoverImageDirectory, TestCoverArchive), MangaFormat.Archive)
.WithLastModified(filesystemFile.LastWriteTime.DateTime)
.WithLastModified(now.DateTime)
.Build();
Assert.False(cacheHelper.IsFileUnmodifiedSinceCreationOrLastScan(chapter, false, file));