Files
Pibd-21_Semin_D.A._SmallSof…/SmallSoftwareProject/SmallSoftwareTests/DataModelsTests/SoftwareHistoryDataModelTests.cs
2025-02-12 21:08:09 +04:00

63 lines
2.1 KiB
C#

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