using SoftwareInstallationContracts.DataModels; using SoftwareInstallationContracts.Exceptions; using SoftwareInstallationContracts.Enums; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SoftwareInstallationTests.DataModelsTests; [TestFixture] internal class SoftwareHistoryDataModelTests { private SoftwareHistoryDataModel programHistory; [Test] public void programHistoryIdIsNullOrEmptyTest() { programHistory = CreateDataModel(null, 10); Assert.That(() => programHistory.Validate(), Throws.TypeOf()); programHistory = CreateDataModel(string.Empty, 10); Assert.That(() => programHistory.Validate(), Throws.TypeOf()); } [Test] public void programHistoryIdIsNotGuidTest() { programHistory = CreateDataModel("id", 10); Assert.That(() => programHistory.Validate(), Throws.TypeOf()); } [Test] public void OldPriceIsLessOrZeroTest() { programHistory = CreateDataModel(Guid.NewGuid().ToString(), 0); Assert.That(() => programHistory.Validate(), Throws.TypeOf()); programHistory = CreateDataModel(Guid.NewGuid().ToString(), -10); Assert.That(() => programHistory.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { string programHistoryId = Guid.NewGuid().ToString(); double oldPrice = 10; programHistory = CreateDataModel(programHistoryId, oldPrice); Assert.That(() => programHistory.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(programHistory.SoftwareId, Is.EqualTo(programHistoryId)); Assert.That(programHistory.OldPrice, Is.EqualTo(oldPrice)); Assert.That(programHistory.ChangeDate, Is.LessThan(DateTime.UtcNow)); Assert.That(programHistory.ChangeDate, Is.GreaterThan(DateTime.UtcNow.AddMinutes(-1))); }); } private static SoftwareHistoryDataModel CreateDataModel(string? programHistoryId, double oldPrice) => new(programHistoryId, oldPrice); }