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 InstallationDataModelTests { private InstallationDataModel installation; [Test] public void IdIsNullOrEmptyTest() { installation = CreateDataModel(null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => installation.Validate(), Throws.TypeOf()); installation = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => installation.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { installation = CreateDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => installation.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNullOrEmptyTest() { installation = CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => installation.Validate(), Throws.TypeOf()); installation = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => installation.Validate(), Throws.TypeOf()); } [Test] public void WorkerIdIsNotGuidTest() { installation = CreateDataModel(Guid.NewGuid().ToString(), "workerId", Guid.NewGuid().ToString(), 10, false, CreateSubDataModel()); Assert.That(() => installation.Validate(), Throws.TypeOf()); } [Test] public void ClientIdIsNotGuidTest() { installation = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "clientId", 10, false, CreateSubDataModel()); Assert.That(() => installation.Validate(), Throws.TypeOf()); } [Test] public void SumIsLessOrZeroTest() { installation = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, false, CreateSubDataModel()); Assert.That(() => installation.Validate(), Throws.TypeOf()); installation = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, false, CreateSubDataModel()); Assert.That(() => installation.Validate(), Throws.TypeOf()); } [Test] public void SoftwaresIsNullOrEmptyTest() { installation = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, null); Assert.That(() => installation.Validate(), Throws.TypeOf()); installation = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []); Assert.That(() => installation.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { string installationId = Guid.NewGuid().ToString(); string workerId = Guid.NewGuid().ToString(); string clientId = Guid.NewGuid().ToString(); double sum = 10; bool isCancel = true; List softwares = CreateSubDataModel(); installation = CreateDataModel(installationId, workerId, clientId, sum, isCancel, softwares); Assert.That(() => installation.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(installation.Id, Is.EqualTo(installationId)); Assert.That(installation.WorkerId, Is.EqualTo(workerId)); Assert.That(installation.ClientId, Is.EqualTo(clientId)); Assert.That(installation.Sum, Is.EqualTo(sum)); Assert.That(installation.IsCancel, Is.EqualTo(isCancel)); Assert.That(installation.Programs, Is.EquivalentTo(softwares)); }); } private static InstallationDataModel CreateDataModel(string? id, string? workerId, string? clientId, double sum, bool isCancel, List? softwares) => new(id, workerId, clientId, sum, isCancel, softwares); private static List CreateSubDataModel() => [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1)]; }