From 43e0e2afea5647a6a91e61f864000f336992dc92 Mon Sep 17 00:00:00 2001 From: rakhaliullov Date: Sat, 8 Feb 2025 09:05:00 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DataModels/CollectDataModel.cs | 5 +- .../DataModels/FurnitureDataModel.cs | 7 +- .../DataModels/FurnitureHistoryDataModel.cs | 2 +- .../DataModels/WorkPieceDataModel.cs | 7 +- .../DataModelsTests/CollectDataModelTests.cs | 85 ++++++++++++++++++ .../FurnitureDataModelTests.cs | 82 +++++++++++++++++ .../FurnitureHistoryDataModelTests.cs | 52 +++++++++++ .../FurnitureWorkPieceDataModelTests.cs | 66 ++++++++++++++ .../DataModelsTests/PostDataModelTests.cs | 74 ++++++++++++++++ .../DataModelsTests/SalaryDataModelTests.cs | 51 +++++++++++ .../WorkPieceDataModelTests.cs | 75 ++++++++++++++++ .../DataModelsTests/WorkerDataModelTests.cs | 88 +++++++++++++++++++ .../SoftBedTests/SoftBedTests.csproj | 28 ++++++ TheSoftBedProject/TheSoftBedProject.sln | 8 +- 14 files changed, 620 insertions(+), 10 deletions(-) create mode 100644 TheSoftBedProject/SoftBedTests/DataModelsTests/CollectDataModelTests.cs create mode 100644 TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureDataModelTests.cs create mode 100644 TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureHistoryDataModelTests.cs create mode 100644 TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureWorkPieceDataModelTests.cs create mode 100644 TheSoftBedProject/SoftBedTests/DataModelsTests/PostDataModelTests.cs create mode 100644 TheSoftBedProject/SoftBedTests/DataModelsTests/SalaryDataModelTests.cs create mode 100644 TheSoftBedProject/SoftBedTests/DataModelsTests/WorkPieceDataModelTests.cs create mode 100644 TheSoftBedProject/SoftBedTests/DataModelsTests/WorkerDataModelTests.cs create mode 100644 TheSoftBedProject/SoftBedTests/SoftBedTests.csproj diff --git a/TheSoftBedProject/SoftBedContracts/DataModels/CollectDataModel.cs b/TheSoftBedProject/SoftBedContracts/DataModels/CollectDataModel.cs index 60b5ee8..4e7beb5 100644 --- a/TheSoftBedProject/SoftBedContracts/DataModels/CollectDataModel.cs +++ b/TheSoftBedProject/SoftBedContracts/DataModels/CollectDataModel.cs @@ -30,7 +30,10 @@ public class CollectDataModel(string id, string workerId, string furnitureId, do if (!WorkerId.IsGuid()) throw new ValidationException("The value in the field WorkerId is not a unique identifier"); - if (!FurnitureId?.IsGuid() ?? !FurnitureId?.IsEmpty() ?? false) + if (FurnitureId.IsEmpty()) + throw new ValidationException("Field FurnitureId is empty"); + + if (!FurnitureId.IsGuid()) throw new ValidationException("The value in the field FurnitureId is not a unique identifier"); if (Sum <= 0) diff --git a/TheSoftBedProject/SoftBedContracts/DataModels/FurnitureDataModel.cs b/TheSoftBedProject/SoftBedContracts/DataModels/FurnitureDataModel.cs index 1e0f55f..7bafa6d 100644 --- a/TheSoftBedProject/SoftBedContracts/DataModels/FurnitureDataModel.cs +++ b/TheSoftBedProject/SoftBedContracts/DataModels/FurnitureDataModel.cs @@ -5,7 +5,7 @@ using SoftBedContracts.Infrastructure; namespace SoftBedContracts.DataModels; -public class FurnitureDataModel(string id, string furnitureName, FurnitureType furnitureType, double price, bool isDeleted) : IValidation +public class FurnitureDataModel(string id, string furnitureName, FurnitureType furnitureType, double price, bool isDeleted, List workPieces) : IValidation { public string Id { get; private set; } = id; @@ -17,6 +17,8 @@ public class FurnitureDataModel(string id, string furnitureName, FurnitureType f public bool IsDeleted { get; private set; } = isDeleted; + public List WorkPieces { get; private set; } = workPieces; + public void Validate() { if (Id.IsEmpty()) @@ -33,5 +35,8 @@ public class FurnitureDataModel(string id, string furnitureName, FurnitureType f if (Price <= 0) throw new ValidationException("Field Price is less than or equal to 0"); + + if ((WorkPieces?.Count ?? 0) == 0) + throw new ValidationException("The sale must include Work Pieces"); } } diff --git a/TheSoftBedProject/SoftBedContracts/DataModels/FurnitureHistoryDataModel.cs b/TheSoftBedProject/SoftBedContracts/DataModels/FurnitureHistoryDataModel.cs index a1a4eb1..1b1d101 100644 --- a/TheSoftBedProject/SoftBedContracts/DataModels/FurnitureHistoryDataModel.cs +++ b/TheSoftBedProject/SoftBedContracts/DataModels/FurnitureHistoryDataModel.cs @@ -4,7 +4,7 @@ using SoftBedContracts.Infrastructure; namespace SoftBedContracts.DataModels; -public class ProductHistoryDataModel(string furnitureId, double oldPrice) : IValidation +public class FurnitureHistoryDataModel(string furnitureId, double oldPrice) : IValidation { public string FurnitureId { get; private set; } = furnitureId; diff --git a/TheSoftBedProject/SoftBedContracts/DataModels/WorkPieceDataModel.cs b/TheSoftBedProject/SoftBedContracts/DataModels/WorkPieceDataModel.cs index 667ef31..3f864ec 100644 --- a/TheSoftBedProject/SoftBedContracts/DataModels/WorkPieceDataModel.cs +++ b/TheSoftBedProject/SoftBedContracts/DataModels/WorkPieceDataModel.cs @@ -5,7 +5,7 @@ using System.Text.RegularExpressions; namespace SoftBedContracts.DataModels; -public class SaleDataModel(string id, string size, double weight, List workPieces) : IValidation +public class WorkPieceDataModel(string id, string size, double weight) : IValidation { public string Id { get; private set; } = id; @@ -13,8 +13,6 @@ public class SaleDataModel(string id, string size, double weight, List WorkPieces { get; private set; } = workPieces; - public void Validate() { if (Id.IsEmpty()) @@ -31,8 +29,5 @@ public class SaleDataModel(string id, string size, double weight, List collect.Validate(), Throws.TypeOf()); + collect = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10); + Assert.That(() => collect.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var collect = CreateDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10); + Assert.That(() => collect.Validate(), Throws.TypeOf()); + } + [Test] + public void WorkerIdIsNullOrEmptyTest() + { + var collect = CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), 10); + Assert.That(() => collect.Validate(), Throws.TypeOf()); + collect = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), 10); + Assert.That(() => collect.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkerIdIsNotGuidTest() + { + var collect = CreateDataModel(Guid.NewGuid().ToString(), "workerId", Guid.NewGuid().ToString(), 10); + Assert.That(() => collect.Validate(), Throws.TypeOf()); + } + + [Test] + public void FurnitureIdIsNullOrEmptyTest() + { + var collect = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10); + Assert.That(() => collect.Validate(), Throws.TypeOf()); + collect = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), string.Empty, 10); + Assert.That(() => collect.Validate(), Throws.TypeOf()); + } + + [Test] + public void FurnitureIdIsNotGuidTest() + { + var collect = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "furnitureId", 10); + Assert.That(() => collect.Validate(), Throws.TypeOf()); + } + + [Test] + public void SumIsLessOrZeroTest() + { + var collect = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0); + Assert.That(() => collect.Validate(), Throws.TypeOf()); + collect = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10); + Assert.That(() => collect.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var collectId = Guid.NewGuid().ToString(); + var workerId = Guid.NewGuid().ToString(); + var furnitureId = Guid.NewGuid().ToString(); + var sum = 10; + var collect = CreateDataModel(collectId, workerId, furnitureId, sum); + Assert.That(() => collect.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(collect.Id, Is.EqualTo(collectId)); + Assert.That(collect.WorkerId, Is.EqualTo(workerId)); + Assert.That(collect.FurnitureId, Is.EqualTo(furnitureId)); + Assert.That(collect.Sum, Is.EqualTo(sum)); + }); + } + + public static CollectDataModel CreateDataModel(string? id, string? workerId, string? furnitureId, double sum) => + new(id, workerId, furnitureId, sum); +} \ No newline at end of file diff --git a/TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureDataModelTests.cs b/TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureDataModelTests.cs new file mode 100644 index 0000000..ebac0c0 --- /dev/null +++ b/TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureDataModelTests.cs @@ -0,0 +1,82 @@ +using SoftBedContracts.DataModels; +using SoftBedContracts.Enums; +using SoftBedContracts.Exceptions; + +namespace SoftBedTests.DataModelsTests; + +[TestFixture] +internal class FurnitureDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var furniture = CreateDataModel(null, "furnitureName", FurnitureType.CabinetFurniture, 10, false, CreateSubDataModel()); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + furniture = CreateDataModel(string.Empty, "furnitureName", FurnitureType.CabinetFurniture, 10, false, CreateSubDataModel()); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var furniture = CreateDataModel("id", "furnitureName", FurnitureType.CabinetFurniture, 10, false, CreateSubDataModel()); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + } + [Test] + public void FurnitureNameIsEmptyTest() + { + var furniture = CreateDataModel(Guid.NewGuid().ToString(), null, FurnitureType.CabinetFurniture, 10, false, CreateSubDataModel()); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + furniture = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, FurnitureType.CabinetFurniture, 10, false, CreateSubDataModel()); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + } + + [Test] + public void FurnitureTypeIsNoneTest() + { + var furniture = CreateDataModel(Guid.NewGuid().ToString(), "furnitureName", FurnitureType.None, 10, false, CreateSubDataModel()); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + } + + [Test] + public void PriceIsLessOrZeroTest() + { + var furniture = CreateDataModel(Guid.NewGuid().ToString(), "furnitureName", FurnitureType.CabinetFurniture, 0, false, CreateSubDataModel()); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + furniture = CreateDataModel(Guid.NewGuid().ToString(), "furnitureName", FurnitureType.CabinetFurniture, -10, false, CreateSubDataModel()); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + } + [Test] + public void WorkPiecesIsNullOrEmptyTest() + { + var furniture = CreateDataModel(Guid.NewGuid().ToString(), "furnitureName", FurnitureType.CabinetFurniture, 0, false, null); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + furniture = CreateDataModel(Guid.NewGuid().ToString(), "furnitureName", FurnitureType.CabinetFurniture, 0, false, []); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + } + [Test] + public void AllFieldsIsCorrectTest() + { + var furnitureId = Guid.NewGuid().ToString(); + var furnitureName = "furnitureName"; + var furnitureType = FurnitureType.CabinetFurniture; + var price = 10; + var isDeleted = false; + var workPieces = CreateSubDataModel(); + var furniture = CreateDataModel(furnitureId, furnitureName, furnitureType, price, isDeleted, workPieces); + Assert.That(() => furniture.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(furniture.Id, Is.EqualTo(furnitureId)); + Assert.That(furniture.FurnitureName, Is.EqualTo(furnitureName)); + Assert.That(furniture.FurnitureType, Is.EqualTo(furnitureType)); + Assert.That(furniture.Price, Is.EqualTo(price)); + Assert.That(furniture.IsDeleted, Is.EqualTo(isDeleted)); + }); + } + + public static FurnitureDataModel CreateDataModel(string? id, string? furnitureName, FurnitureType furnitureType, double price, bool isDeleted, List workPieces) => + new(id, furnitureName, furnitureType, price, isDeleted, workPieces); + private static List CreateSubDataModel() + => [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1)]; +} diff --git a/TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureHistoryDataModelTests.cs b/TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureHistoryDataModelTests.cs new file mode 100644 index 0000000..45ea836 --- /dev/null +++ b/TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureHistoryDataModelTests.cs @@ -0,0 +1,52 @@ +using SoftBedContracts.DataModels; +using SoftBedContracts.Exceptions; + +namespace SoftBedTests.DataModelsTests; + +[TestFixture] +internal class FurnitureHistoryDataModelTests +{ + [Test] + public void ProductIdIsNullOrEmptyTest() + { + var furniture = CreateDataModel(null, 10); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + furniture = CreateDataModel(string.Empty, 10); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + } + + [Test] + public void ProductIdIsNotGuidTest() + { + var furniture = CreateDataModel("id", 10); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + } + + [Test] + public void OldPriceIsLessOrZeroTest() + { + var furniture = CreateDataModel(Guid.NewGuid().ToString(), 0); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + furniture = CreateDataModel(Guid.NewGuid().ToString(), -10); + Assert.That(() => furniture.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var furnitureId = Guid.NewGuid().ToString(); + var oldPrice = 10; + var furnitureHistory = CreateDataModel(furnitureId, oldPrice); + Assert.That(() => furnitureHistory.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(furnitureHistory.FurnitureId, Is.EqualTo(furnitureId)); + Assert.That(furnitureHistory.OldPrice, Is.EqualTo(oldPrice)); + Assert.That(furnitureHistory.ChangeDate, Is.LessThan(DateTime.UtcNow)); + Assert.That(furnitureHistory.ChangeDate, Is.GreaterThan(DateTime.UtcNow.AddMinutes(-1))); + }); + } + + private static FurnitureHistoryDataModel CreateDataModel(string? furnitureId, double oldPrice) => + new(furnitureId, oldPrice); +} diff --git a/TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureWorkPieceDataModelTests.cs b/TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureWorkPieceDataModelTests.cs new file mode 100644 index 0000000..016c50c --- /dev/null +++ b/TheSoftBedProject/SoftBedTests/DataModelsTests/FurnitureWorkPieceDataModelTests.cs @@ -0,0 +1,66 @@ +using SoftBedContracts.DataModels; +using SoftBedContracts.Exceptions; + +namespace SoftBedTests.DataModelsTests; + +[TestFixture] +internal class FurnitureWorkPieceDataModelTests +{ + [Test] + public void FurnitureIdIsNullOrEmptyTest() + { + var furnitureWorkPiece = CreateDataModel(null, Guid.NewGuid().ToString(), 10); + Assert.That(() => furnitureWorkPiece.Validate(), Throws.TypeOf()); + furnitureWorkPiece = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10); + Assert.That(() => furnitureWorkPiece.Validate(), Throws.TypeOf()); + } + + [Test] + public void FurnitureIdIsNotGuidTest() + { + var furnitureWorkPiece = CreateDataModel("furnitureId", Guid.NewGuid().ToString(), 10); + Assert.That(() => furnitureWorkPiece.Validate(), Throws.TypeOf()); + } + [Test] + public void WorkPieceIdIsNullOrEmptyTest() + { + var furnitureWorkPiece = CreateDataModel(Guid.NewGuid().ToString(), null, 10); + Assert.That(() => furnitureWorkPiece.Validate(), Throws.TypeOf()); + furnitureWorkPiece = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 10); + Assert.That(() => furnitureWorkPiece.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkPieceIdIsNotGuidTest() + { + var furnitureWorkPiece = CreateDataModel(Guid.NewGuid().ToString(), "workPieceId", 10); + Assert.That(() => furnitureWorkPiece.Validate(), Throws.TypeOf()); + } + + [Test] + public void CountIsLessOrZeroTest() + { + var furnitureWorkPiece = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0); + Assert.That(() => furnitureWorkPiece.Validate(), Throws.TypeOf()); + furnitureWorkPiece = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10); + Assert.That(() => furnitureWorkPiece.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var furnitureId = Guid.NewGuid().ToString(); + var workPieceId = Guid.NewGuid().ToString(); + var count = 10; + var furnitureWorkPiece = CreateDataModel(furnitureId, workPieceId, count); + Assert.That(() => furnitureWorkPiece.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(furnitureWorkPiece.FurnitureId, Is.EqualTo(furnitureId)); + Assert.That(furnitureWorkPiece.WorkPieceId, Is.EqualTo(workPieceId)); + Assert.That(furnitureWorkPiece.Count, Is.EqualTo(count)); + }); + } + public static FurnitureWorkPieceDataModel CreateDataModel(string? furnitureId, string? workPieceId, int count) => + new(furnitureId, workPieceId, count); +} diff --git a/TheSoftBedProject/SoftBedTests/DataModelsTests/PostDataModelTests.cs b/TheSoftBedProject/SoftBedTests/DataModelsTests/PostDataModelTests.cs new file mode 100644 index 0000000..ed47a5a --- /dev/null +++ b/TheSoftBedProject/SoftBedTests/DataModelsTests/PostDataModelTests.cs @@ -0,0 +1,74 @@ +using SoftBedContracts.DataModels; +using SoftBedContracts.Enums; +using SoftBedContracts.Exceptions; +using System.Data; + +namespace SoftBedTests.DataModelsTests; + +[TestFixture] +internal class PostDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var post = CreateDataModel(null, "postName", PostType.Loader, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + post = CreateDataModel(string.Empty, "postName", PostType.Loader, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var post = CreateDataModel("id", "postName", PostType.Loader, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + + [Test] + public void PostNameIsEmptyTest() + { + var post = CreateDataModel(Guid.NewGuid().ToString(), null, PostType.Loader, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + post = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, PostType.Loader, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + + [Test] + public void PostTypeIsNoneTest() + { + var post = CreateDataModel(Guid.NewGuid().ToString(), "postName", PostType.None, 10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + + [Test] + public void SalaryIsLessOrZeroTest() + { + var post = CreateDataModel(Guid.NewGuid().ToString(), "postName", PostType.Loader, 0, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + post = CreateDataModel(Guid.NewGuid().ToString(), "postName", PostType.Loader, -10, true, DateTime.UtcNow); + Assert.That(() => post.Validate(), Throws.TypeOf()); + } + [Test] + public void AllFieldsIsCorrectTest() + { + var postId = Guid.NewGuid().ToString(); + var postName = Guid.NewGuid().ToString(); + var postType = PostType.Loader; + var salary = 10; + var isActual = true; + var changeDate = DateTime.UtcNow.AddDays(-1); + var post = CreateDataModel(postId, postName, postType, salary, isActual, changeDate); + Assert.That(() => post.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(post.Id, Is.EqualTo(postId)); + Assert.That(post.PostName, Is.EqualTo(postName)); + Assert.That(post.PostType, Is.EqualTo(postType)); + Assert.That(post.Salary, Is.EqualTo(salary)); + Assert.That(post.IsActual, Is.EqualTo(isActual)); + Assert.That(post.ChangeDate, Is.EqualTo(changeDate)); + }); + } + private static PostDataModel CreateDataModel(string? id, string? postName, PostType postType, double salary, bool isActual, DateTime changeDate) => + new(id, postName, postType, salary, isActual, changeDate); +} diff --git a/TheSoftBedProject/SoftBedTests/DataModelsTests/SalaryDataModelTests.cs b/TheSoftBedProject/SoftBedTests/DataModelsTests/SalaryDataModelTests.cs new file mode 100644 index 0000000..393d12f --- /dev/null +++ b/TheSoftBedProject/SoftBedTests/DataModelsTests/SalaryDataModelTests.cs @@ -0,0 +1,51 @@ +using SoftBedContracts.DataModels; +using SoftBedContracts.Exceptions; + +namespace SoftBedTests.DataModelsTests; + +internal class SalaryDataModelTests +{ + [Test] + public void WorkerIdIsEmptyTest() + { + var salary = CreateDataModel(null, DateTime.Now, 10); + Assert.That(() => salary.Validate(), Throws.TypeOf()); + salary = CreateDataModel(string.Empty, DateTime.Now, 10); + Assert.That(() => salary.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkerIdIsNotGuidTest() + { + var salary = CreateDataModel("workerId", DateTime.Now, 10); + Assert.That(() => salary.Validate(), Throws.TypeOf()); + } + + [Test] + public void PriceIsLessOrZeroTest() + { + var salary = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, 0); + Assert.That(() => salary.Validate(), Throws.TypeOf()); + salary = CreateDataModel(Guid.NewGuid().ToString(), DateTime.Now, -10); + Assert.That(() => salary.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var workerId = Guid.NewGuid().ToString(); + var salaryDate = DateTime.Now.AddDays(-3).AddMinutes(-5); + var workerSalary = 10; + var salary = CreateDataModel(workerId, salaryDate, workerSalary); + Assert.That(() => salary.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(salary.WorkerId, Is.EqualTo(workerId)); + Assert.That(salary.SalaryDate, Is.EqualTo(salaryDate)); + Assert.That(salary.Salary, Is.EqualTo(workerSalary)); + }); + } + + private static SalaryDataModel CreateDataModel(string? workerId, DateTime salaryDate, double workerSalary) => + new(workerId, salaryDate, workerSalary); +} diff --git a/TheSoftBedProject/SoftBedTests/DataModelsTests/WorkPieceDataModelTests.cs b/TheSoftBedProject/SoftBedTests/DataModelsTests/WorkPieceDataModelTests.cs new file mode 100644 index 0000000..afe2913 --- /dev/null +++ b/TheSoftBedProject/SoftBedTests/DataModelsTests/WorkPieceDataModelTests.cs @@ -0,0 +1,75 @@ +using SoftBedContracts.DataModels; +using SoftBedContracts.Exceptions; + +namespace SoftBedTests.DataModelsTests; +[TestFixture] +internal class WorkPieceDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var workPiece = CreateDataModel(null, "size", 10); + Assert.That(() => workPiece.Validate(), Throws.TypeOf()); + workPiece = CreateDataModel(string.Empty, "size", 10); + Assert.That(() => workPiece.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var workPiece = CreateDataModel("id", "size", 10); + Assert.That(() => workPiece.Validate(), Throws.TypeOf()); + } + + [Test] + public void SizeIsNullOrEmptyTest() + { + var workPiece = CreateDataModel(Guid.NewGuid().ToString(), null, 10); + Assert.That(() => workPiece.Validate(), Throws.TypeOf()); + workPiece = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 10); + Assert.That(() => workPiece.Validate(), Throws.TypeOf()); + } + + [Test] + public void SizeIsIncorrectTest() + { + var workPiece = CreateDataModel(Guid.NewGuid().ToString(), "1010", 10); + Assert.That(() => workPiece.Validate(), Throws.TypeOf()); + } + + [Test] + public void PriceIsLessOrZeroTest() + { + var workPiece = CreateDataModel(Guid.NewGuid().ToString(), "size", 0); + Assert.That(() => workPiece.Validate(), Throws.TypeOf()); + workPiece = CreateDataModel(Guid.NewGuid().ToString(), "size", -10); + Assert.That(() => workPiece.Validate(), Throws.TypeOf()); + } + + [Test] + public void ProductsIsNullOrEmptyTest() + { + var workPiece = CreateDataModel(Guid.NewGuid().ToString(), "size", 0); + Assert.That(() => workPiece.Validate(), Throws.TypeOf()); + workPiece = CreateDataModel(Guid.NewGuid().ToString(), "size", 0); + Assert.That(() => workPiece.Validate(), Throws.TypeOf()); + } + [Test] + public void AllFieldsIsCorrectTest() + { + var workPieceId = Guid.NewGuid().ToString(); + var size = "10x10"; + var weight = 10; + var workPiece = CreateDataModel(workPieceId, size, weight); + Assert.That(() => workPiece.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(workPiece.Id, Is.EqualTo(workPieceId)); + Assert.That(workPiece.Size, Is.EqualTo(size)); + Assert.That(workPiece.Weight, Is.EqualTo(weight)); + }); + } + + private static WorkPieceDataModel CreateDataModel(string? id, string? size, double weight) => + new(id, size, weight); +} diff --git a/TheSoftBedProject/SoftBedTests/DataModelsTests/WorkerDataModelTests.cs b/TheSoftBedProject/SoftBedTests/DataModelsTests/WorkerDataModelTests.cs new file mode 100644 index 0000000..3c3addf --- /dev/null +++ b/TheSoftBedProject/SoftBedTests/DataModelsTests/WorkerDataModelTests.cs @@ -0,0 +1,88 @@ +using SoftBedContracts.DataModels; +using SoftBedContracts.Exceptions; + +namespace SoftBedTests.DataModelsTests; + +[TestFixture] +internal class WorkerDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var worker = CreateDataModel(null, "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + worker = CreateDataModel(string.Empty, "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var worker = CreateDataModel("id", "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void FIOIsNullOrEmptyTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + worker = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void PostIdIsNullOrEmptyTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", null, DateTime.Now.AddYears(-18), DateTime.Now); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", string.Empty, DateTime.Now.AddYears(-18), DateTime.Now); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void PostIdIsNotGuidTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", "postId", DateTime.Now.AddYears(-18), DateTime.Now); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void BirthDateIsNotCorrectTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18).AddDays(1), DateTime.Now); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void BirthDateAndEmploymentDateIsNotCorrectTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-18).AddDays(-1)); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + worker = CreateDataModel(Guid.NewGuid().ToString(), "fio", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-18), DateTime.Now.AddYears(-16)); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var workerId = Guid.NewGuid().ToString(); + var fio = "fio"; + var postId = Guid.NewGuid().ToString(); + var birthDate = DateTime.Now.AddYears(-18).AddDays(-1); + var employmentDate = DateTime.Now; + var worker = CreateDataModel(workerId, fio, postId, birthDate, employmentDate); + Assert.That(() => worker.Validate(), Throws.Nothing); + Assert.Multiple(() => + { + Assert.That(worker.Id, Is.EqualTo(workerId)); + Assert.That(worker.FIO, Is.EqualTo(fio)); + Assert.That(worker.PostId, Is.EqualTo(postId)); + Assert.That(worker.BirthDate, Is.EqualTo(birthDate)); + Assert.That(worker.EmploymentDate, Is.EqualTo(employmentDate)); + }); + } + + private static WorkerDataModel CreateDataModel(string? id, string? fio, string? postId, DateTime birthDate, DateTime employmentDate) => + new(id, fio, postId, birthDate, employmentDate); +} diff --git a/TheSoftBedProject/SoftBedTests/SoftBedTests.csproj b/TheSoftBedProject/SoftBedTests/SoftBedTests.csproj new file mode 100644 index 0000000..3bc0e7c --- /dev/null +++ b/TheSoftBedProject/SoftBedTests/SoftBedTests.csproj @@ -0,0 +1,28 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + + + + + + + + + diff --git a/TheSoftBedProject/TheSoftBedProject.sln b/TheSoftBedProject/TheSoftBedProject.sln index a900dbb..16d749c 100644 --- a/TheSoftBedProject/TheSoftBedProject.sln +++ b/TheSoftBedProject/TheSoftBedProject.sln @@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.9.34728.123 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoftBedContracts", "SoftBedContracts\SoftBedContracts.csproj", "{B0AF813F-CC99-4892-AA65-4CDB225B7AA3}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SoftBedContracts", "SoftBedContracts\SoftBedContracts.csproj", "{B0AF813F-CC99-4892-AA65-4CDB225B7AA3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoftBedTests", "SoftBedTests\SoftBedTests.csproj", "{0E56A9DB-177A-4114-B437-DE0F6C9711F4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,6 +17,10 @@ Global {B0AF813F-CC99-4892-AA65-4CDB225B7AA3}.Debug|Any CPU.Build.0 = Debug|Any CPU {B0AF813F-CC99-4892-AA65-4CDB225B7AA3}.Release|Any CPU.ActiveCfg = Release|Any CPU {B0AF813F-CC99-4892-AA65-4CDB225B7AA3}.Release|Any CPU.Build.0 = Release|Any CPU + {0E56A9DB-177A-4114-B437-DE0F6C9711F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E56A9DB-177A-4114-B437-DE0F6C9711F4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0E56A9DB-177A-4114-B437-DE0F6C9711F4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0E56A9DB-177A-4114-B437-DE0F6C9711F4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE