63 lines
2.1 KiB
C#
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);
|
|
}
|