2025-02-10 21:50:27 +04:00

75 lines
2.8 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;
internal class WarehouseDataModelTests
{
private WarehouseDataModel warehouse;
[Test]
public void IdIsEmptyTest()
{
warehouse = CreateDataModel(null, 10, 20, DateTime.Now);
Assert.That(() => warehouse.Validate(), Throws.TypeOf<ValidationFieldException>());
warehouse = CreateDataModel(string.Empty, 10, 20, DateTime.Now);
Assert.That(() => warehouse.Validate(), Throws.TypeOf<ValidationFieldException>());
}
[Test]
public void IdIsNotGuidTest()
{
warehouse = CreateDataModel("id", 10, 20, DateTime.Now);
Assert.That(() => warehouse.Validate(), Throws.TypeOf<ValidationFieldException>());
}
[Test]
public void MinCountIsLessOrZeroTest()
{
warehouse = CreateDataModel(Guid.NewGuid().ToString(), 0, 10, DateTime.Now);
Assert.That(() => warehouse.Validate(), Throws.TypeOf<ValidationFieldException>());
warehouse = CreateDataModel(Guid.NewGuid().ToString(), -10, 10, DateTime.Now);
Assert.That(() => warehouse.Validate(), Throws.TypeOf<ValidationFieldException>());
}
[Test]
public void CurrentCountIsLessOrZeroTest()
{
warehouse = CreateDataModel(Guid.NewGuid().ToString(), 10, 0, DateTime.Now);
Assert.That(() => warehouse.Validate(), Throws.TypeOf<ValidationFieldException>());
warehouse = CreateDataModel(Guid.NewGuid().ToString(), 10, -10, DateTime.Now);
Assert.That(() => warehouse.Validate(), Throws.TypeOf<ValidationFieldException>());
}
[Test]
public void CurrentCountIsLessThanMinCount()
{
warehouse = CreateDataModel(Guid.NewGuid().ToString(), 10, 0, DateTime.Now);
Assert.That(() => warehouse.Validate(), Throws.TypeOf<ValidationFieldException>());
}
public void AllFieldsIsCorrectTest()
{
string warehouseId = Guid.NewGuid().ToString();
int minCount = 10;
int currentCount = 10;
DateTime date = DateTime.UtcNow;
WarehouseDataModel warehouse = CreateDataModel(warehouseId, minCount, currentCount, date);
Assert.That(() => warehouse.Validate(), Throws.Nothing);
Assert.Multiple(() =>
{
Assert.That(warehouse.Id, Is.EqualTo(warehouseId));
Assert.That(warehouse.MinCount, Is.EqualTo(minCount));
Assert.That(warehouse.CurrentCount, Is.EqualTo(currentCount));
Assert.That(warehouse.ChangeDate, Is.EqualTo(date));
});
}
private static WarehouseDataModel CreateDataModel(string? id, int minCount, int currentCount, DateTime date)
=> new(id, minCount, currentCount, date);
}