using SoftwareInstallationContracts.DataModels; using SoftwareInstallationContracts.Exceptions; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SoftwareInstallationTests.DataModelsTests; [TestFixture] internal class InstallationSoftwareDataModelTests { private InstallationSoftwareDataModel installSoftware; [Test] public void InstallIdIsNullOrEmptyTest() { installSoftware = CreateDataModel(null, Guid.NewGuid().ToString(), 10); Assert.That(() => installSoftware.Validate(), Throws.TypeOf()); installSoftware = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10); Assert.That(() => installSoftware.Validate(), Throws.TypeOf()); } [Test] public void InstallIdIsNotGuidTest() { installSoftware = CreateDataModel("installId", Guid.NewGuid().ToString(), 10); Assert.That(() => installSoftware.Validate(), Throws.TypeOf()); } [Test] public void SoftwareIdIsNullOrEmptyTest() { installSoftware = CreateDataModel(Guid.NewGuid().ToString(), null, 10); Assert.That(() => installSoftware.Validate(), Throws.TypeOf()); installSoftware = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10); Assert.That(() => installSoftware.Validate(), Throws.TypeOf()); } [Test] public void SoftwareIdIsNotGuidTest() { installSoftware = CreateDataModel(Guid.NewGuid().ToString(), "softwareId", 10); Assert.That(() => installSoftware.Validate(), Throws.TypeOf()); } [Test] public void CountIsLessOrZeroTest() { installSoftware = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0); Assert.That(() => installSoftware.Validate(), Throws.TypeOf()); installSoftware = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10); Assert.That(() => installSoftware.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { string installId = Guid.NewGuid().ToString(); string softwareId = Guid.NewGuid().ToString(); int count = 10; installSoftware = CreateDataModel(installId, softwareId, count); Assert.That(() => installSoftware.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(installSoftware.InstallationId, Is.EqualTo(installId)); Assert.That(installSoftware.ProgramId, Is.EqualTo(softwareId)); Assert.That(installSoftware.Count, Is.EqualTo(count)); }); } private static InstallationSoftwareDataModel CreateDataModel(string? installId, string? softwareId, int count) => new(installId, softwareId, count); }