From 1f77f2ef27fa370bb4032b8fabb3ba6d8d66a17b Mon Sep 17 00:00:00 2001 From: romtec Date: Fri, 7 Feb 2025 19:35:45 +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 --- .../TwoFromTheCasketContracts.sln | 6 + .../Enums/Specializations.cs | 5 +- .../Enums/TypeRoom.cs | 11 +- .../ComplitedWorkDataModelTests.cs | 108 ++++++++++++++++++ .../DataModelsTests/RoomsDataModelTests.cs | 74 ++++++++++++ .../SalaryHistoryDataModelTests.cs | 63 ++++++++++ .../DataModelsTests/WorkDataModelTests.cs | 70 ++++++++++++ .../WorkerComplitedWorkDataModelTests.cs | 70 ++++++++++++ .../DataModelsTests/WorkerDataModelTests.cs | 84 ++++++++++++++ .../TwoFromTheCasketTests.csproj | 27 +++++ 10 files changed, 511 insertions(+), 7 deletions(-) create mode 100644 TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/ComplitedWorkDataModelTests.cs create mode 100644 TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/RoomsDataModelTests.cs create mode 100644 TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/SalaryHistoryDataModelTests.cs create mode 100644 TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkDataModelTests.cs create mode 100644 TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkerComplitedWorkDataModelTests.cs create mode 100644 TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkerDataModelTests.cs create mode 100644 TwoFromTheCasketContracts/TwoFromTheCasketTests/TwoFromTheCasketTests.csproj diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketContracts.sln b/TwoFromTheCasketContracts/TwoFromTheCasketContracts.sln index 9c7f017..dbe9257 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketContracts.sln +++ b/TwoFromTheCasketContracts/TwoFromTheCasketContracts.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 17.12.35527.113 d17.12 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TwoFromTheCasketContracts", "TwoFromTheCasketContracts\TwoFromTheCasketContracts.csproj", "{0498D87C-7F20-4B8D-BC34-040D0CC55BB7}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TwoFromTheCasketTests", "TwoFromTheCasketTests\TwoFromTheCasketTests.csproj", "{E6FA5F6D-7A09-4576-9447-A1661C214545}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,10 @@ Global {0498D87C-7F20-4B8D-BC34-040D0CC55BB7}.Debug|Any CPU.Build.0 = Debug|Any CPU {0498D87C-7F20-4B8D-BC34-040D0CC55BB7}.Release|Any CPU.ActiveCfg = Release|Any CPU {0498D87C-7F20-4B8D-BC34-040D0CC55BB7}.Release|Any CPU.Build.0 = Release|Any CPU + {E6FA5F6D-7A09-4576-9447-A1661C214545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E6FA5F6D-7A09-4576-9447-A1661C214545}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E6FA5F6D-7A09-4576-9447-A1661C214545}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E6FA5F6D-7A09-4576-9447-A1661C214545}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketContracts/Enums/Specializations.cs b/TwoFromTheCasketContracts/TwoFromTheCasketContracts/Enums/Specializations.cs index 1ad75c9..21a1b63 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketContracts/Enums/Specializations.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketContracts/Enums/Specializations.cs @@ -12,5 +12,8 @@ public enum Specializations None = 0, Plasterer = 1, Painter = 2, - Carpenter = 4 + Carpenter = 4, + Electrician = 8, + Plumber = 16, + Mason = 32 } diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketContracts/Enums/TypeRoom.cs b/TwoFromTheCasketContracts/TwoFromTheCasketContracts/Enums/TypeRoom.cs index e4d32cc..be7099f 100644 --- a/TwoFromTheCasketContracts/TwoFromTheCasketContracts/Enums/TypeRoom.cs +++ b/TwoFromTheCasketContracts/TwoFromTheCasketContracts/Enums/TypeRoom.cs @@ -9,10 +9,9 @@ namespace TwoFromTheCasketContracts.Enums; public enum TypeRoom { None = 0, - Plasterer = 1, - Painter = 2, - Carpenter = 4, - Electrician = 8, - Plumber = 16, - Mason = 32 + Residential = 1, + Office = 2, + Storage = 3, + Industrial = 4, + PublicBuilding = 5 } diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/ComplitedWorkDataModelTests.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/ComplitedWorkDataModelTests.cs new file mode 100644 index 0000000..c75cab4 --- /dev/null +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/ComplitedWorkDataModelTests.cs @@ -0,0 +1,108 @@ +using TwoFromTheCasketContracts.DataModels; +using TwoFromTheCasketContracts.Exceptions; + +namespace TwoFromTheCasketTests.DataModelsTests; + +[TestFixture] +internal class ComplitedWorkDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + List workers = new List { new("1", "2", 3) }; + + var complitedWork = CreateDataModel(null, "1", "2", workers); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + + complitedWork = CreateDataModel(string.Empty, "1", "2", workers); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + List workers = new List { new("1", "2", 3) }; + + var complitedWork = CreateDataModel("not-a-guid", "1", "2", workers); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkIdIsNullOrEmptyTest() + { + List workers = new List { new("1", "2", 3) }; + + var complitedWork = CreateDataModel("1", null, "2", workers); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + + complitedWork = CreateDataModel("1", string.Empty, "2", workers); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkIdIsNotGuidTest() + { + List workers = new List { new("1", "2", 3) }; + + var complitedWork = CreateDataModel("1", "not-a-guid", "2", workers); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void RoomIdIsNullOrEmptyTest() + { + List workers = new List { new("1", "2", 3) }; + + var complitedWork = CreateDataModel("1", "2", null, workers); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + + complitedWork = CreateDataModel("1", "2", string.Empty, workers); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void RoomIdIsNotGuidTest() + { + List workers = new List { new("1", "2", 3) }; + + var complitedWork = CreateDataModel("1", "2", "not-a-guid", workers); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkersIsNullOrEmptyTest() + { + var complitedWork = CreateDataModel("1", "2", "3", null); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + + complitedWork = CreateDataModel("1", "2", "3", new List()); + Assert.That(() => complitedWork.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var id = Guid.NewGuid().ToString(); + var workId = Guid.NewGuid().ToString(); + var roomId = Guid.NewGuid().ToString(); + var workers = new List + { + new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5) + }; + + var complitedWork = CreateDataModel(id, workId, roomId, workers); + + Assert.That(() => complitedWork.Validate(), Throws.Nothing); + + Assert.Multiple(() => + { + Assert.That(complitedWork.Id, Is.EqualTo(id)); + Assert.That(complitedWork.WorkId, Is.EqualTo(workId)); + Assert.That(complitedWork.RoomId, Is.EqualTo(roomId)); + Assert.That(complitedWork.Workers, Is.EquivalentTo(workers)); + }); + } + + private static ComplitedWorkDataModel CreateDataModel(string? id, string? workId, string? roomId, List? workers) + => new(id, workId, roomId, workers); +} diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/RoomsDataModelTests.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/RoomsDataModelTests.cs new file mode 100644 index 0000000..1c85869 --- /dev/null +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/RoomsDataModelTests.cs @@ -0,0 +1,74 @@ +using TwoFromTheCasketContracts.DataModels; +using TwoFromTheCasketContracts.Exceptions; +using TwoFromTheCasketContracts.Enums; +using System.Text.RegularExpressions; + +namespace TwoFromTheCasketTests.DataModelsTests; + +[TestFixture] +internal class RoomsDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var room = CreateDataModel(null, "Ленина, д. 5", 50, TypeRoom.Office); + Assert.That(() => room.Validate(), Throws.TypeOf()); + + room = CreateDataModel(string.Empty, "Ленина, д. 5", 50, TypeRoom.Office); + Assert.That(() => room.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var room = CreateDataModel("not-a-guid", "Ленина, д. 5", 50, TypeRoom.Office); + Assert.That(() => room.Validate(), Throws.TypeOf()); + } + + [Test] + public void AddressIsEmptyOrInvalidTest() + { + var room = CreateDataModel(Guid.NewGuid().ToString(), "", 50, TypeRoom.Office); + Assert.That(() => room.Validate(), Throws.TypeOf()); + + room = CreateDataModel(Guid.NewGuid().ToString(), "Invalid Address", 50, TypeRoom.Office); + Assert.That(() => room.Validate(), Throws.TypeOf()); + } + + [Test] + public void SpaceIsNegativeOrZeroTest() + { + var room = CreateDataModel(Guid.NewGuid().ToString(), "Ленина, д. 5", 0, TypeRoom.Office); + Assert.That(() => room.Validate(), Throws.TypeOf()); + } + + [Test] + public void TypeIsNoneTest() + { + var room = CreateDataModel(Guid.NewGuid().ToString(), "Ленина, д. 5", 50, TypeRoom.None); + Assert.That(() => room.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var id = Guid.NewGuid().ToString(); + var address = "Ленина, д. 5"; + var space = 50.0; + var type = TypeRoom.Office; + + var room = CreateDataModel(id, address, space, type); + Assert.That(() => room.Validate(), Throws.Nothing); + + Assert.Multiple(() => + { + Assert.That(room.Id, Is.EqualTo(id)); + Assert.That(room.Address, Is.EqualTo(address)); + Assert.That(room.Space, Is.EqualTo(space)); + Assert.That(room.Type, Is.EqualTo(type)); + }); + } + + private static RoomsDataModel CreateDataModel(string? id, string address, double space, TypeRoom type) + => new(id, address, space, type); +} diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/SalaryHistoryDataModelTests.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/SalaryHistoryDataModelTests.cs new file mode 100644 index 0000000..3d6a286 --- /dev/null +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/SalaryHistoryDataModelTests.cs @@ -0,0 +1,63 @@ +using TwoFromTheCasketContracts.DataModels; +using TwoFromTheCasketContracts.Exceptions; + +namespace TwoFromTheCasketTests.DataModelsTests; + +[TestFixture] +internal class SalaryHistoryDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var salaryHistory = CreateDataModel(null, Guid.NewGuid().ToString(), 50000); + Assert.That(() => salaryHistory.Validate(), Throws.TypeOf()); + + salaryHistory = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 50000); + Assert.That(() => salaryHistory.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var salaryHistory = CreateDataModel("not-a-guid", Guid.NewGuid().ToString(), 50000); + Assert.That(() => salaryHistory.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkerIdIsNullOrEmptyTest() + { + var salaryHistory = CreateDataModel(Guid.NewGuid().ToString(), null, 50000); + Assert.That(() => salaryHistory.Validate(), Throws.TypeOf()); + + salaryHistory = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 50000); + Assert.That(() => salaryHistory.Validate(), Throws.TypeOf()); + } + + [Test] + public void SumIsNegativeOrZeroTest() + { + var salaryHistory = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0); + Assert.That(() => salaryHistory.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var id = Guid.NewGuid().ToString(); + var workerId = Guid.NewGuid().ToString(); + var sum = 50000; + + var salaryHistory = CreateDataModel(id, workerId, sum); + Assert.That(() => salaryHistory.Validate(), Throws.Nothing); + + Assert.Multiple(() => + { + Assert.That(salaryHistory.Id, Is.EqualTo(id)); + Assert.That(salaryHistory.WorkerId, Is.EqualTo(workerId)); + Assert.That(salaryHistory.Sum, Is.EqualTo(sum)); + }); + } + + private static SalaryHistoryDataModel CreateDataModel(string? id, string? workerId, double sum) + => new(id, workerId, sum); +} diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkDataModelTests.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkDataModelTests.cs new file mode 100644 index 0000000..d6456c1 --- /dev/null +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkDataModelTests.cs @@ -0,0 +1,70 @@ +using TwoFromTheCasketContracts.DataModels; +using TwoFromTheCasketContracts.Exceptions; +using TwoFromTheCasketContracts.Enums; + +namespace TwoFromTheCasketTests.DataModelsTests; + +[TestFixture] +internal class WorkDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var work = CreateDataModel(null, TypeWork.Plaster, "Штукатурка стен", DateTime.Now); + Assert.That(() => work.Validate(), Throws.TypeOf()); + + work = CreateDataModel(string.Empty, TypeWork.Plaster, "Штукатурка стен", DateTime.Now); + Assert.That(() => work.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var work = CreateDataModel("not-a-guid", TypeWork.Plaster, "Штукатурка стен", DateTime.Now); + Assert.That(() => work.Validate(), Throws.TypeOf()); + } + + [Test] + public void DescriptionIsEmptyTest() + { + var work = CreateDataModel(Guid.NewGuid().ToString(), TypeWork.Plaster, "", DateTime.Now); + Assert.That(() => work.Validate(), Throws.TypeOf()); + } + + [Test] + public void DateIsInPastTest() + { + var work = CreateDataModel(Guid.NewGuid().ToString(), TypeWork.Plaster, "Штукатурка стен", DateTime.Now.AddDays(-1)); + Assert.That(() => work.Validate(), Throws.TypeOf()); + } + + [Test] + public void TypeIsNoneTest() + { + var work = CreateDataModel(Guid.NewGuid().ToString(), TypeWork.None, "Штукатурка стен", DateTime.Now); + Assert.That(() => work.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var id = Guid.NewGuid().ToString(); + var type = TypeWork.Plaster; + var description = "Штукатурка стен"; + var date = DateTime.Now.AddDays(10); + + var work = CreateDataModel(id, type, description, date); + Assert.That(() => work.Validate(), Throws.Nothing); + + Assert.Multiple(() => + { + Assert.That(work.Id, Is.EqualTo(id)); + Assert.That(work.Type, Is.EqualTo(type)); + Assert.That(work.Description, Is.EqualTo(description)); + Assert.That(work.Date, Is.EqualTo(date)); + }); + } + + private static WorkDataModel CreateDataModel(string? id, TypeWork type, string description, DateTime date) + => new(id, type, description, date); +} diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkerComplitedWorkDataModelTests.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkerComplitedWorkDataModelTests.cs new file mode 100644 index 0000000..6db63b5 --- /dev/null +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkerComplitedWorkDataModelTests.cs @@ -0,0 +1,70 @@ +using TwoFromTheCasketContracts.DataModels; +using TwoFromTheCasketContracts.Exceptions; + +namespace TwoFromTheCasketTests.DataModelsTests; + +[TestFixture] +internal class WorkerComplitedWorkDataModelTests +{ + [Test] + public void WorkerIdIsNullOrEmptyTest() + { + var model = CreateDataModel(null, Guid.NewGuid().ToString(), 8); + Assert.That(() => model.Validate(), Throws.TypeOf()); + + model = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 8); + Assert.That(() => model.Validate(), Throws.TypeOf()); + } + + [Test] + public void WorkerIdIsNotGuidTest() + { + var model = CreateDataModel("not-a-guid", Guid.NewGuid().ToString(), 8); + Assert.That(() => model.Validate(), Throws.TypeOf()); + } + + [Test] + public void ComplitedWorkIdIsNullOrEmptyTest() + { + var model = CreateDataModel(Guid.NewGuid().ToString(), null, 8); + Assert.That(() => model.Validate(), Throws.TypeOf()); + + model = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 8); + Assert.That(() => model.Validate(), Throws.TypeOf()); + } + + [Test] + public void ComplitedWorkIdIsNotGuidTest() + { + var model = CreateDataModel(Guid.NewGuid().ToString(), "not-a-guid", 8); + Assert.That(() => model.Validate(), Throws.TypeOf()); + } + + [Test] + public void NumberOfWorkingHoursIsZeroOrNegativeTest() + { + var model = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0); + Assert.That(() => model.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var workerId = Guid.NewGuid().ToString(); + var complitedWorkId = Guid.NewGuid().ToString(); + var hours = 10; + + var model = CreateDataModel(workerId, complitedWorkId, hours); + Assert.That(() => model.Validate(), Throws.Nothing); + + Assert.Multiple(() => + { + Assert.That(model.WorkerId, Is.EqualTo(workerId)); + Assert.That(model.ComplitedWorkId, Is.EqualTo(complitedWorkId)); + Assert.That(model.NumberOfWorkingHours, Is.EqualTo(hours)); + }); + } + + private static WorkerComplitedWorkDataModel CreateDataModel(string? workerId, string? complitedWorkId, double hours) + => new(workerId, complitedWorkId, hours); +} diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkerDataModelTests.cs b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkerDataModelTests.cs new file mode 100644 index 0000000..20a0e31 --- /dev/null +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/DataModelsTests/WorkerDataModelTests.cs @@ -0,0 +1,84 @@ +using TwoFromTheCasketContracts.DataModels; +using TwoFromTheCasketContracts.Exceptions; +using TwoFromTheCasketContracts.Enums; + +namespace TwoFromTheCasketTests.DataModelsTests; + +[TestFixture] +internal class WorkerDataModelTests +{ + [Test] + public void IdIsNullOrEmptyTest() + { + var worker = CreateDataModel(null, "John Doe", Specializations.Plasterer, 50000, "+7-777-777-77-77", DateTime.Now.AddYears(-25)); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + + worker = CreateDataModel(string.Empty, "John Doe", Specializations.Plasterer, 50000, "+7-777-777-77-77", DateTime.Now.AddYears(-25)); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void IdIsNotGuidTest() + { + var worker = CreateDataModel("not-a-guid", "John Doe", Specializations.Plasterer, 50000, "+7-777-777-77-77", DateTime.Now.AddYears(-25)); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void FIOIsEmptyTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "", Specializations.Plasterer, 50000, "+7-777-777-77-77", DateTime.Now.AddYears(-25)); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void SpecializationIsNoneTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "John Doe", Specializations.None, 50000, "+7-777-777-77-77", DateTime.Now.AddYears(-25)); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void PhoneNumberIsEmptyOrInvalidTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "John Doe", Specializations.Plasterer, 50000, string.Empty, DateTime.Now.AddYears(-25)); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + + worker = CreateDataModel(Guid.NewGuid().ToString(), "John Doe", Specializations.Plasterer, 50000, "invalid-phone", DateTime.Now.AddYears(-25)); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void DateBirthDayIsTooYoungTest() + { + var worker = CreateDataModel(Guid.NewGuid().ToString(), "John Doe", Specializations.Plasterer, 50000, "+7-777-777-77-77", DateTime.Now.AddYears(-15)); + Assert.That(() => worker.Validate(), Throws.TypeOf()); + } + + [Test] + public void AllFieldsIsCorrectTest() + { + var id = Guid.NewGuid().ToString(); + var fio = "John Doe"; + var specialization = Specializations.Plasterer; + var salary = 50000; + var phoneNumber = "+7-777-777-77-77"; + var dateBirthday = DateTime.Now.AddYears(-25); + + var worker = CreateDataModel(id, fio, specialization, salary, phoneNumber, dateBirthday); + Assert.That(() => worker.Validate(), Throws.Nothing); + + Assert.Multiple(() => + { + Assert.That(worker.Id, Is.EqualTo(id)); + Assert.That(worker.FIO, Is.EqualTo(fio)); + Assert.That(worker.Specialization, Is.EqualTo(specialization)); + Assert.That(worker.Salary, Is.EqualTo(salary)); + Assert.That(worker.PhoneNumber, Is.EqualTo(phoneNumber)); + Assert.That(worker.DateBirthDay, Is.EqualTo(dateBirthday)); + }); + } + + private static WorkerDataModel CreateDataModel(string? id, string fio, Specializations specialization, double salary, string phoneNumber, DateTime dateBirthday) + => new(id, fio, specialization, salary, phoneNumber, dateBirthday); +} diff --git a/TwoFromTheCasketContracts/TwoFromTheCasketTests/TwoFromTheCasketTests.csproj b/TwoFromTheCasketContracts/TwoFromTheCasketTests/TwoFromTheCasketTests.csproj new file mode 100644 index 0000000..a647302 --- /dev/null +++ b/TwoFromTheCasketContracts/TwoFromTheCasketTests/TwoFromTheCasketTests.csproj @@ -0,0 +1,27 @@ + + + + net9.0 + latest + enable + enable + false + + + + + + + + + + + + + + + + + + +