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()); software = CreateDataModel(string.Empty, "name", SoftwareType.Windows, Guid.NewGuid().ToString(), 10, false); Assert.That(() => software.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var software = CreateDataModel("id", "name", SoftwareType.Windows, Guid.NewGuid().ToString(), 10, false); Assert.That(() => software.Validate(), Throws.TypeOf()); } [Test] public void SoftwareNameIsEmptyTest() { var software = CreateDataModel(Guid.NewGuid().ToString(), null, SoftwareType.Windows, Guid.NewGuid().ToString(), 10, false); Assert.That(() => software.Validate(), Throws.TypeOf()); software = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, SoftwareType.Windows, Guid.NewGuid().ToString(), 10, false); Assert.That(() => software.Validate(), Throws.TypeOf()); } [Test] public void SoftwareTypeIsNoneTest() { var software = CreateDataModel(Guid.NewGuid().ToString(), null, SoftwareType.None, Guid.NewGuid().ToString(), 10, false); Assert.That(() => software.Validate(), Throws.TypeOf()); } [Test] public void ManufacturerIdIsNullOrEmptyTest() { var software = CreateDataModel(Guid.NewGuid().ToString(), "name", SoftwareType.Windows, null, 10, false); Assert.That(() => software.Validate(), Throws.TypeOf()); software = CreateDataModel(Guid.NewGuid().ToString(), "name", SoftwareType.Windows, string.Empty, 10, false); Assert.That(() => software.Validate(), Throws.TypeOf()); } [Test] public void ManufacturerIdIsNotGuidTest() { var software = CreateDataModel(Guid.NewGuid().ToString(), "name", SoftwareType.Windows, "manufacturerId", 10, false); Assert.That(() => software.Validate(), Throws.TypeOf()); } [Test] public void PriceIsLessOrZeroTest() { var software = CreateDataModel(Guid.NewGuid().ToString(), "name", SoftwareType.Windows, Guid.NewGuid().ToString(), 0, false); Assert.That(() => software.Validate(), Throws.TypeOf()); software = CreateDataModel(Guid.NewGuid().ToString(), "name", SoftwareType.Windows, Guid.NewGuid().ToString(), -10, false); Assert.That(() => software.Validate(), Throws.TypeOf()); } [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); }