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

117 lines
4.5 KiB
C#

using SmallSoftwareContracts.DataModels;
using SmallSoftwareContracts.Enums;
using SmallSoftwareContracts.Exceptions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static NUnit.Framework.Internal.OSPlatform;
namespace SmallSoftwareTests.DataModelsTests;
[TestFixture]
internal class SoftwareDataModelTests
{
[Test]
public void IdIsNullOrEmptyTest()
{
var software = CreateDataModel(null, "name", SoftwareType.Windows,
Guid.NewGuid().ToString(), 10, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
software = CreateDataModel(string.Empty, "name",
SoftwareType.Windows, Guid.NewGuid().ToString(), 10, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
}
[Test]
public void IdIsNotGuidTest()
{
var software = CreateDataModel("id", "name", SoftwareType.Windows,
Guid.NewGuid().ToString(), 10, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
}
[Test]
public void SoftwareNameIsEmptyTest()
{
var software = CreateDataModel(Guid.NewGuid().ToString(), null,
SoftwareType.Windows, Guid.NewGuid().ToString(), 10, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
software = CreateDataModel(Guid.NewGuid().ToString(), string.Empty,
SoftwareType.Windows, Guid.NewGuid().ToString(), 10, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
}
[Test]
public void SoftwareTypeIsNoneTest()
{
var software = CreateDataModel(Guid.NewGuid().ToString(), null,
SoftwareType.None, Guid.NewGuid().ToString(), 10, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
}
[Test]
public void ManufacturerIdIsNullOrEmptyTest()
{
var software = CreateDataModel(Guid.NewGuid().ToString(), "name",
SoftwareType.Windows, null, 10, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
software = CreateDataModel(Guid.NewGuid().ToString(), "name",
SoftwareType.Windows, string.Empty, 10, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
}
[Test]
public void ManufacturerIdIsNotGuidTest()
{
var software = CreateDataModel(Guid.NewGuid().ToString(), "name",
SoftwareType.Windows, "manufacturerId", 10, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
}
[Test]
public void PriceIsLessOrZeroTest()
{
var software = CreateDataModel(Guid.NewGuid().ToString(), "name",
SoftwareType.Windows, Guid.NewGuid().ToString(), 0, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
software = CreateDataModel(Guid.NewGuid().ToString(), "name",
SoftwareType.Windows, Guid.NewGuid().ToString(), -10, false);
Assert.That(() => software.Validate(),
Throws.TypeOf<ValidationException>());
}
[Test]
public void AllFieldsIsCorrectTest()
{
var softwareId = Guid.NewGuid().ToString();
var softwareName = "name";
var softwareType = SoftwareType.Windows;
var softwareManufacturerId = Guid.NewGuid().ToString();
var softwarePrice = 10;
var softwareIsDelete = false;
var software = CreateDataModel(softwareId, softwareName, softwareType,
softwareManufacturerId, softwarePrice, softwareIsDelete);
Assert.That(() => software.Validate(), Throws.Nothing);
Assert.Multiple(() =>
{
Assert.That(software.Id, Is.EqualTo(softwareId));
Assert.That(software.SoftwareName, Is.EqualTo(softwareName));
Assert.That(software.SoftwareType, Is.EqualTo(softwareType));
Assert.That(software.ManufacturerId,
Is.EqualTo(softwareManufacturerId));
Assert.That(software.Price, Is.EqualTo(softwarePrice));
Assert.That(software.IsDeleted, Is.EqualTo(softwareIsDelete));
});
}
private static SoftwareDataModel CreateDataModel(string? id, string?
softwareName, SoftwareType softwareType, string? manufacturerId, double price, bool
isDeleted) =>
new(id, softwareName, softwareType, manufacturerId, price, isDeleted);
}