using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection; using SmallSoftwareContracts.DataModels; using SmallSoftwareContracts.Exceptions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SmallSoftwareTests.DataModelsTests; [TestFixture] internal class InstallationRequestDataModelTests { [Test] public void SoftwareIdIsNullOrEmptyTest() { var installationRequest = CreateDataModel(null, Guid.NewGuid().ToString(), 10, 10); Assert.That(() => installationRequest.Validate(), Throws.TypeOf()); installationRequest = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10, 10); Assert.That(() => installationRequest.Validate(), Throws.TypeOf()); } [Test] public void SoftwareIdIsNotGuidTest() { var installationRequest = CreateDataModel("softwareId", Guid.NewGuid().ToString(), 10, 10); Assert.That(() => installationRequest.Validate(), Throws.TypeOf()); } [Test] public void RequestIdIsNullOrEmptyTest() { var installationRequest = CreateDataModel(Guid.NewGuid().ToString(), null, 10, 10); Assert.That(() => installationRequest.Validate(), Throws.TypeOf()); installationRequest = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10, 10); Assert.That(() => installationRequest.Validate(), Throws.TypeOf()); } [Test] public void RequestIdIsNotGuidTest() { var installationRequest = CreateDataModel(Guid.NewGuid().ToString(), "requestId", 10, 10); Assert.That(() => installationRequest.Validate(), Throws.TypeOf()); } [Test] public void CountIsLessOrZeroTest() { var installationRequest = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, 0); Assert.That(() => installationRequest.Validate(), Throws.TypeOf()); installationRequest = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, -20); Assert.That(() => installationRequest.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsIsCorrectTest() { var softwareId = Guid.NewGuid().ToString(); var requestId = Guid.NewGuid().ToString(); var count = 10; var price = 10; var installationRequest = CreateDataModel(softwareId, requestId, count, price); Assert.That(() => installationRequest.Validate(), Throws.Nothing); Assert.Multiple(() => { Assert.That(installationRequest.SoftwareId, Is.EqualTo(softwareId)); Assert.That(installationRequest.RequestId, Is.EqualTo(requestId)); Assert.That(installationRequest.Count, Is.EqualTo(count)); }); } private static InstallationRequestDataModel CreateDataModel(string? softwareId, string? requestId, int count, double price) => new(softwareId, requestId, count, price); }