94 lines
4.0 KiB
C#
94 lines
4.0 KiB
C#
using SoftwareInstallationContracts.DataModels;
|
|
using SoftwareInstallationContracts.Exceptions;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace SoftwareInstallationTests.DataModelsTests;
|
|
|
|
[TestFixture]
|
|
internal class SupplyDataModelTests
|
|
{
|
|
private SupplyDataModel supply;
|
|
|
|
[Test]
|
|
public void IdIsEmptyTest()
|
|
{
|
|
supply = CreateDataModel(null, Guid.NewGuid().ToString(), DateTime.UtcNow, 10, CreateSubDataModel());
|
|
Assert.That(() => supply.Validate(), Throws.TypeOf<ValidationFieldException>());
|
|
supply = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), DateTime.UtcNow, 10, CreateSubDataModel());
|
|
Assert.That(() => supply.Validate(), Throws.TypeOf<ValidationFieldException>());
|
|
}
|
|
|
|
[Test]
|
|
public void IdIsNotGuidTest()
|
|
{
|
|
supply = CreateDataModel("Id", Guid.NewGuid().ToString(), DateTime.UtcNow, 10, CreateSubDataModel());
|
|
Assert.That(() => supply.Validate(), Throws.TypeOf<ValidationFieldException>());
|
|
}
|
|
|
|
[Test]
|
|
public void CompanyIdIsEmptyTest()
|
|
{
|
|
supply = CreateDataModel(Guid.NewGuid().ToString(), null, DateTime.UtcNow, 10, CreateSubDataModel());
|
|
Assert.That(() => supply.Validate(), Throws.TypeOf<ValidationFieldException>());
|
|
supply = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, DateTime.UtcNow, 10, CreateSubDataModel());
|
|
Assert.That(() => supply.Validate(), Throws.TypeOf<ValidationFieldException>());
|
|
}
|
|
|
|
[Test]
|
|
public void CompanyIdIsNotGuidTest()
|
|
{
|
|
supply = CreateDataModel(Guid.NewGuid().ToString(), "companyId", DateTime.UtcNow, 10, CreateSubDataModel());
|
|
Assert.That(() => supply.Validate(), Throws.TypeOf<ValidationFieldException>());
|
|
}
|
|
|
|
[Test]
|
|
public void CountIsLessOrZeroTest()
|
|
{
|
|
supply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, 0, CreateSubDataModel());
|
|
Assert.That(() => supply.Validate(), Throws.TypeOf<ValidationFieldException>());
|
|
supply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, -10, CreateSubDataModel());
|
|
Assert.That(() => supply.Validate(), Throws.TypeOf<ValidationFieldException>());
|
|
}
|
|
|
|
[Test]
|
|
public void SoftwaresIsNullOrEmptyTest()
|
|
{
|
|
supply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, 10, null);
|
|
Assert.That(() => supply.Validate(), Throws.TypeOf<ValidationFieldException>());
|
|
supply = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DateTime.UtcNow, 10, []);
|
|
Assert.That(() => supply.Validate(), Throws.TypeOf<ValidationFieldException>());
|
|
}
|
|
|
|
[Test]
|
|
public void AllFieldsIsCorrectTest()
|
|
{
|
|
string supplyId = Guid.NewGuid().ToString();
|
|
string companyId = Guid.NewGuid().ToString();
|
|
double totalCost = 10;
|
|
DateTime dateTime = DateTime.UtcNow;
|
|
List<SoftwareSupplyDataModel> softwares = CreateSubDataModel();
|
|
supply = CreateDataModel(supplyId, companyId, dateTime, totalCost, softwares);
|
|
Assert.That(() => supply.Validate(), Throws.Nothing);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(supply.Id, Is.EqualTo(supplyId));
|
|
Assert.That(supply.CompanyId, Is.EqualTo(companyId));
|
|
Assert.That(supply.TotalCost, Is.EqualTo(totalCost));
|
|
Assert.That(supply.SupplyDate, Is.EqualTo(dateTime));
|
|
Assert.That(supply.Softwares, Is.EquivalentTo(softwares));
|
|
});
|
|
}
|
|
|
|
|
|
private static SupplyDataModel CreateDataModel(string? id, string? companyId, DateTime supplyDate, double totalCost, List<SoftwareSupplyDataModel> softwares)
|
|
=> new(id, companyId, supplyDate, totalCost, softwares);
|
|
|
|
private static List<SoftwareSupplyDataModel> CreateSubDataModel()
|
|
=> [new (Guid.NewGuid().ToString(), 10, Guid.NewGuid().ToString(), Guid.NewGuid().ToString())];
|
|
|
|
}
|