Тесты

This commit is contained in:
2025-02-07 19:35:45 +04:00
parent f565514739
commit 1f77f2ef27
10 changed files with 511 additions and 7 deletions

View File

@@ -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

View File

@@ -12,5 +12,8 @@ public enum Specializations
None = 0,
Plasterer = 1,
Painter = 2,
Carpenter = 4
Carpenter = 4,
Electrician = 8,
Plumber = 16,
Mason = 32
}

View File

@@ -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
}

View File

@@ -0,0 +1,108 @@
using TwoFromTheCasketContracts.DataModels;
using TwoFromTheCasketContracts.Exceptions;
namespace TwoFromTheCasketTests.DataModelsTests;
[TestFixture]
internal class ComplitedWorkDataModelTests
{
[Test]
public void IdIsNullOrEmptyTest()
{
List<WorkerComplitedWorkDataModel> workers = new List<WorkerComplitedWorkDataModel> { new("1", "2", 3) };
var complitedWork = CreateDataModel(null, "1", "2", workers);
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
complitedWork = CreateDataModel(string.Empty, "1", "2", workers);
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void IdIsNotGuidTest()
{
List<WorkerComplitedWorkDataModel> workers = new List<WorkerComplitedWorkDataModel> { new("1", "2", 3) };
var complitedWork = CreateDataModel("not-a-guid", "1", "2", workers);
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkIdIsNullOrEmptyTest()
{
List<WorkerComplitedWorkDataModel> workers = new List<WorkerComplitedWorkDataModel> { new("1", "2", 3) };
var complitedWork = CreateDataModel("1", null, "2", workers);
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
complitedWork = CreateDataModel("1", string.Empty, "2", workers);
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkIdIsNotGuidTest()
{
List<WorkerComplitedWorkDataModel> workers = new List<WorkerComplitedWorkDataModel> { new("1", "2", 3) };
var complitedWork = CreateDataModel("1", "not-a-guid", "2", workers);
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void RoomIdIsNullOrEmptyTest()
{
List<WorkerComplitedWorkDataModel> workers = new List<WorkerComplitedWorkDataModel> { new("1", "2", 3) };
var complitedWork = CreateDataModel("1", "2", null, workers);
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
complitedWork = CreateDataModel("1", "2", string.Empty, workers);
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void RoomIdIsNotGuidTest()
{
List<WorkerComplitedWorkDataModel> workers = new List<WorkerComplitedWorkDataModel> { new("1", "2", 3) };
var complitedWork = CreateDataModel("1", "2", "not-a-guid", workers);
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkersIsNullOrEmptyTest()
{
var complitedWork = CreateDataModel("1", "2", "3", null);
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
complitedWork = CreateDataModel("1", "2", "3", new List<WorkerComplitedWorkDataModel>());
Assert.That(() => complitedWork.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void AllFieldsIsCorrectTest()
{
var id = Guid.NewGuid().ToString();
var workId = Guid.NewGuid().ToString();
var roomId = Guid.NewGuid().ToString();
var workers = new List<WorkerComplitedWorkDataModel>
{
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<WorkerComplitedWorkDataModel>? workers)
=> new(id, workId, roomId, workers);
}

View File

@@ -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<ValidationException>());
room = CreateDataModel(string.Empty, "Ленина, д. 5", 50, TypeRoom.Office);
Assert.That(() => room.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void IdIsNotGuidTest()
{
var room = CreateDataModel("not-a-guid", "Ленина, д. 5", 50, TypeRoom.Office);
Assert.That(() => room.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void AddressIsEmptyOrInvalidTest()
{
var room = CreateDataModel(Guid.NewGuid().ToString(), "", 50, TypeRoom.Office);
Assert.That(() => room.Validate(), Throws.TypeOf<ValidationException>());
room = CreateDataModel(Guid.NewGuid().ToString(), "Invalid Address", 50, TypeRoom.Office);
Assert.That(() => room.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void SpaceIsNegativeOrZeroTest()
{
var room = CreateDataModel(Guid.NewGuid().ToString(), "Ленина, д. 5", 0, TypeRoom.Office);
Assert.That(() => room.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void TypeIsNoneTest()
{
var room = CreateDataModel(Guid.NewGuid().ToString(), "Ленина, д. 5", 50, TypeRoom.None);
Assert.That(() => room.Validate(), Throws.TypeOf<ValidationException>());
}
[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);
}

View File

@@ -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<ValidationException>());
salaryHistory = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 50000);
Assert.That(() => salaryHistory.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void IdIsNotGuidTest()
{
var salaryHistory = CreateDataModel("not-a-guid", Guid.NewGuid().ToString(), 50000);
Assert.That(() => salaryHistory.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkerIdIsNullOrEmptyTest()
{
var salaryHistory = CreateDataModel(Guid.NewGuid().ToString(), null, 50000);
Assert.That(() => salaryHistory.Validate(), Throws.TypeOf<ValidationException>());
salaryHistory = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 50000);
Assert.That(() => salaryHistory.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void SumIsNegativeOrZeroTest()
{
var salaryHistory = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0);
Assert.That(() => salaryHistory.Validate(), Throws.TypeOf<ValidationException>());
}
[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);
}

View File

@@ -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<ValidationException>());
work = CreateDataModel(string.Empty, TypeWork.Plaster, "Штукатурка стен", DateTime.Now);
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void IdIsNotGuidTest()
{
var work = CreateDataModel("not-a-guid", TypeWork.Plaster, "Штукатурка стен", DateTime.Now);
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void DescriptionIsEmptyTest()
{
var work = CreateDataModel(Guid.NewGuid().ToString(), TypeWork.Plaster, "", DateTime.Now);
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void DateIsInPastTest()
{
var work = CreateDataModel(Guid.NewGuid().ToString(), TypeWork.Plaster, "Штукатурка стен", DateTime.Now.AddDays(-1));
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void TypeIsNoneTest()
{
var work = CreateDataModel(Guid.NewGuid().ToString(), TypeWork.None, "Штукатурка стен", DateTime.Now);
Assert.That(() => work.Validate(), Throws.TypeOf<ValidationException>());
}
[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);
}

View File

@@ -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<ValidationException>());
model = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 8);
Assert.That(() => model.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void WorkerIdIsNotGuidTest()
{
var model = CreateDataModel("not-a-guid", Guid.NewGuid().ToString(), 8);
Assert.That(() => model.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void ComplitedWorkIdIsNullOrEmptyTest()
{
var model = CreateDataModel(Guid.NewGuid().ToString(), null, 8);
Assert.That(() => model.Validate(), Throws.TypeOf<ValidationException>());
model = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, 8);
Assert.That(() => model.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void ComplitedWorkIdIsNotGuidTest()
{
var model = CreateDataModel(Guid.NewGuid().ToString(), "not-a-guid", 8);
Assert.That(() => model.Validate(), Throws.TypeOf<ValidationException>());
}
[Test]
public void NumberOfWorkingHoursIsZeroOrNegativeTest()
{
var model = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0);
Assert.That(() => model.Validate(), Throws.TypeOf<ValidationException>());
}
[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);
}

View File

@@ -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<ValidationException>());
worker = CreateDataModel(string.Empty, "John Doe", Specializations.Plasterer, 50000, "+7-777-777-77-77", DateTime.Now.AddYears(-25));
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
}
[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<ValidationException>());
}
[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<ValidationException>());
}
[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<ValidationException>());
}
[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<ValidationException>());
worker = CreateDataModel(Guid.NewGuid().ToString(), "John Doe", Specializations.Plasterer, 50000, "invalid-phone", DateTime.Now.AddYears(-25));
Assert.That(() => worker.Validate(), Throws.TypeOf<ValidationException>());
}
[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<ValidationException>());
}
[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);
}

View File

@@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<LangVersion>latest</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="NUnit" Version="4.2.2" />
<PackageReference Include="NUnit.Analyzers" Version="4.3.0" />
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\TwoFromTheCasketContracts\TwoFromTheCasketContracts.csproj" />
</ItemGroup>
<ItemGroup>
<Using Include="NUnit.Framework" />
</ItemGroup>
</Project>