feat: Replace Moq and FluentAssertions with NSubstitute and Shouldly in test projects
This commit is contained in:
parent
3c722a66df
commit
41d9dacfac
6 changed files with 96 additions and 91 deletions
|
|
@ -1,12 +1,12 @@
|
|||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using FluentAssertions;
|
||||
using ImageCatalog_2;
|
||||
using ImageCatalog_2.Services;
|
||||
using MaddoShared;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Moq;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using NSubstitute;
|
||||
using Shouldly;
|
||||
|
||||
namespace MaddoShared.Tests;
|
||||
|
||||
|
|
@ -22,41 +22,39 @@ public class DataModelCharacterizationTests
|
|||
|
||||
model.SelectSourceFolderCommand.Execute(null);
|
||||
|
||||
raised.Should().BeTrue();
|
||||
raised.ShouldBeTrue();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task SaveSettingsToFileAsync_DelegatesToSettingsService()
|
||||
{
|
||||
var settingsService = new Mock<ISettingsService>();
|
||||
var settingsService = Substitute.For<ISettingsService>();
|
||||
settingsService
|
||||
.Setup(s => s.SaveSettingsAsync(It.IsAny<string>(), It.IsAny<object>()))
|
||||
.SaveSettingsAsync(Arg.Any<string>(), Arg.Any<object>())
|
||||
.Returns(Task.CompletedTask);
|
||||
|
||||
var model = CreateModel(settingsService: settingsService.Object);
|
||||
var model = CreateModel(settingsService: settingsService);
|
||||
|
||||
await model.SaveSettingsToFileAsync("settings.xml");
|
||||
|
||||
settingsService.Verify(
|
||||
s => s.SaveSettingsAsync("settings.xml", model),
|
||||
Times.Once);
|
||||
await settingsService.Received(1)
|
||||
.SaveSettingsAsync("settings.xml", model);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task LoadSettingsFromFileAsync_DelegatesToSettingsService()
|
||||
{
|
||||
var settingsService = new Mock<ISettingsService>();
|
||||
var settingsService = Substitute.For<ISettingsService>();
|
||||
settingsService
|
||||
.Setup(s => s.LoadSettingsAsync(It.IsAny<string>(), It.IsAny<object>()))
|
||||
.LoadSettingsAsync(Arg.Any<string>(), Arg.Any<object>())
|
||||
.Returns(Task.CompletedTask);
|
||||
|
||||
var model = CreateModel(settingsService: settingsService.Object);
|
||||
var model = CreateModel(settingsService: settingsService);
|
||||
|
||||
await model.LoadSettingsFromFileAsync("settings.xml");
|
||||
|
||||
settingsService.Verify(
|
||||
s => s.LoadSettingsAsync("settings.xml", model),
|
||||
Times.Once);
|
||||
await settingsService.Received(1)
|
||||
.LoadSettingsAsync("settings.xml", model);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
|
@ -66,9 +64,9 @@ public class DataModelCharacterizationTests
|
|||
|
||||
model.ThumbnailOptionIndex = (int)DataModel.ThumbnailOptionEnum.RaceTime;
|
||||
|
||||
model.ThumbnailOption.Should().Be(DataModel.ThumbnailOptionEnum.RaceTime);
|
||||
model.AddRaceTimeToThumbnails.Should().BeTrue();
|
||||
model.ThumbnailMode.Should().Be("RaceTime");
|
||||
model.ThumbnailOption.ShouldBe(DataModel.ThumbnailOptionEnum.RaceTime);
|
||||
model.AddRaceTimeToThumbnails.ShouldBeTrue();
|
||||
model.ThumbnailMode.ShouldBe("RaceTime");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
|
@ -80,8 +78,8 @@ public class DataModelCharacterizationTests
|
|||
|
||||
model.Processing.SpeedCounter = "12.00 f/s";
|
||||
|
||||
changed.Should().Be(nameof(DataModel.SpeedCounter));
|
||||
model.SpeedCounter.Should().Be("12.00 f/s");
|
||||
changed.ShouldBe(nameof(DataModel.SpeedCounter));
|
||||
model.SpeedCounter.ShouldBe("12.00 f/s");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
|
@ -93,8 +91,8 @@ public class DataModelCharacterizationTests
|
|||
|
||||
model.Paths.NormalizePaths();
|
||||
|
||||
model.SourcePath.Should().Be($"C:{System.IO.Path.DirectorySeparatorChar}input{System.IO.Path.DirectorySeparatorChar}");
|
||||
model.DestinationPath.Should().Be($"C:{System.IO.Path.DirectorySeparatorChar}output{System.IO.Path.DirectorySeparatorChar}");
|
||||
model.SourcePath.ShouldBe($"C:{System.IO.Path.DirectorySeparatorChar}input{System.IO.Path.DirectorySeparatorChar}");
|
||||
model.DestinationPath.ShouldBe($"C:{System.IO.Path.DirectorySeparatorChar}output{System.IO.Path.DirectorySeparatorChar}");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
|
@ -106,8 +104,8 @@ public class DataModelCharacterizationTests
|
|||
|
||||
model.Ai.ModelsFolderPath = "K:/models";
|
||||
|
||||
changed.Should().Be(nameof(DataModel.ModelsFolderPath));
|
||||
model.ModelsFolderPath.Should().Be("K:/models");
|
||||
changed.ShouldBe(nameof(DataModel.ModelsFolderPath));
|
||||
model.ModelsFolderPath.ShouldBe("K:/models");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
|
@ -119,8 +117,8 @@ public class DataModelCharacterizationTests
|
|||
|
||||
model.RaceUpload.ApiLogin = "admin";
|
||||
|
||||
changed.Should().Be(nameof(DataModel.ApiLogin));
|
||||
model.ApiLogin.Should().Be("admin");
|
||||
changed.ShouldBe(nameof(DataModel.ApiLogin));
|
||||
model.ApiLogin.ShouldBe("admin");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
|
@ -132,43 +130,43 @@ public class DataModelCharacterizationTests
|
|||
|
||||
model.Visual.FontSize = 42;
|
||||
|
||||
changed.Should().Be(nameof(DataModel.FontSize));
|
||||
model.FontSize.Should().Be(42);
|
||||
changed.ShouldBe(nameof(DataModel.FontSize));
|
||||
model.FontSize.ShouldBe(42);
|
||||
}
|
||||
|
||||
private static DataModel CreateModel(
|
||||
ISettingsService? settingsService = null,
|
||||
ITestService? testService = null)
|
||||
{
|
||||
var mapper = new Mock<AutoMapper.IMapper>().Object;
|
||||
var mapper = Substitute.For<AutoMapper.IMapper>();
|
||||
var picSettings = new PicSettings();
|
||||
|
||||
var imageCreator = new Mock<IImageCreator>();
|
||||
var imageCreator = Substitute.For<IImageCreator>();
|
||||
imageCreator
|
||||
.Setup(x => x.CreateImageAsync(It.IsAny<ImageState>(), It.IsAny<byte[]?>()))
|
||||
.CreateImageAsync(Arg.Any<ImageState>(), Arg.Any<byte[]?>())
|
||||
.Returns(Task.CompletedTask);
|
||||
|
||||
var imageCreationService = new ImageCreationService(
|
||||
new Mock<ILogger<ImageCreationService>>().Object,
|
||||
Substitute.For<ILogger<ImageCreationService>>(),
|
||||
picSettings,
|
||||
imageCreator.Object);
|
||||
imageCreator);
|
||||
|
||||
var imageProcessingCoordinator = new ImageProcessingCoordinator(
|
||||
imageCreationService,
|
||||
new Mock<ILogger<ImageProcessingCoordinator>>().Object);
|
||||
Substitute.For<ILogger<ImageProcessingCoordinator>>());
|
||||
|
||||
var aiExtractionService = new AiExtractionService(
|
||||
new Mock<ILogger<AiExtractionService>>().Object);
|
||||
Substitute.For<ILogger<AiExtractionService>>());
|
||||
|
||||
return new DataModel(
|
||||
testService ?? new Mock<ITestService>().Object,
|
||||
settingsService ?? new Mock<ISettingsService>().Object,
|
||||
testService ?? Substitute.For<ITestService>(),
|
||||
settingsService ?? Substitute.For<ISettingsService>(),
|
||||
imageCreationService,
|
||||
aiExtractionService,
|
||||
imageProcessingCoordinator,
|
||||
picSettings,
|
||||
mapper,
|
||||
new Mock<ILogger<DataModel>>().Object,
|
||||
Substitute.For<ILogger<DataModel>>(),
|
||||
versionProvider: null);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue