using ElectricalRepairServiceContract.DataModels; using ElectricalRepairServiceContract.Exceptions; namespace ElectricalRepairServiceTests.DataModelsTests { [TestFixture] internal class DetailsDataModelTest { [Test] public void IdIsNullOrEmptyTest() { var details = CreateDataModel(null, "name", 1, 1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); details = CreateDataModel(string.Empty, "name", 1, 1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); } [Test] public void IdIsNotGuidTest() { var details = CreateDataModel("invalid-id", "name", 1, 1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); } [Test] public void NameIsNullOrEmptyTest() { var details = CreateDataModel(Guid.NewGuid().ToString(), null, 1, 1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); details = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 1, 1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); } [Test] public void CountIsNegativeTest() { var details = CreateDataModel(Guid.NewGuid().ToString(), "name", -1, 10, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); } [Test] public void OldCountIsNegativeTest() { var details = CreateDataModel(Guid.NewGuid().ToString(), "name", 10, -1, DateTime.Now, null, null); Assert.That(() => details.Validate(), Throws.TypeOf()); } [Test] public void AllFieldsCorrectTest() { var id = Guid.NewGuid().ToString(); var name = "ValidName"; var count = 10; var oldCount = 10; var dateTime = DateTime.Now; List detailsDelivery = [new DetailDeliveryDataModel(null, null, 0, DateTime.Now)]; List detailsUses = [new DetailsUseDataModel(null, null, 0)]; var details = CreateDataModel(id, name, count, oldCount, dateTime, detailsDelivery, detailsUses); Assert.That(details.Id, Is.EqualTo(id)); Assert.That(details.Name, Is.EqualTo(name)); Assert.That(details.Count, Is.EqualTo(count)); Assert.That(details.OldCount, Is.EqualTo(oldCount)); Assert.That(details.UpdateDate, Is.EqualTo(dateTime)); Assert.That(details.DetailsDelivery, Is.EqualTo(detailsDelivery)); Assert.That(details.DetailsUses, Is.EqualTo(detailsUses)); } private DetailsDataModel CreateDataModel(string id, string name, int count, int oldCount, DateTime dateTime, List? detailsDelivery, List? detailsUses) => new DetailsDataModel(id, name, count, oldCount, dateTime, detailsDelivery, detailsUses); } }