all done
This commit is contained in:
@@ -24,7 +24,7 @@ postStorageContract, ILogger logger) : IPostBusinessLogicContract
|
|||||||
{
|
{
|
||||||
_logger.LogInformation("GetAllPosts params: {onlyActive}",
|
_logger.LogInformation("GetAllPosts params: {onlyActive}",
|
||||||
onlyActive);
|
onlyActive);
|
||||||
return _postStorageContract.GetList(onlyActive) ?? throw new
|
return _postStorageContract.GetList() ?? throw new
|
||||||
NullListException();
|
NullListException();
|
||||||
}
|
}
|
||||||
public List<PostDataModel> GetAllDataOfPost(string postId)
|
public List<PostDataModel> GetAllDataOfPost(string postId)
|
||||||
|
|||||||
@@ -5,30 +5,24 @@ using SmallSoftwareContracts.Infrastructure;
|
|||||||
|
|
||||||
namespace SmallSoftwareContracts.DataModels;
|
namespace SmallSoftwareContracts.DataModels;
|
||||||
|
|
||||||
public class PostDataModel(string id, string postName, PostType
|
public class PostDataModel(string postId, string postName, PostType
|
||||||
postType, double salary, bool isActual, DateTime changeDate) : IValidation
|
postType, double salary) : IValidation
|
||||||
{
|
{
|
||||||
public string Id { get; private set; } = id;
|
public string Id { get; private set; } = postId;
|
||||||
public string PostName { get; private set; } = postName;
|
public string PostName { get; private set; } = postName;
|
||||||
public PostType PostType { get; private set; } = postType;
|
public PostType PostType { get; private set; } = postType;
|
||||||
public double Salary { get; private set; } = salary;
|
public double Salary { get; private set; } = salary;
|
||||||
public bool IsActual { get; private set; } = isActual;
|
|
||||||
public DateTime ChangeDate { get; private set; } = changeDate;
|
|
||||||
public void Validate()
|
public void Validate()
|
||||||
{
|
{
|
||||||
if (Id.IsEmpty())
|
if (Id.IsEmpty())
|
||||||
throw new ValidationException("Field Id is empty");
|
throw new ValidationException("Field Id is empty");
|
||||||
|
|
||||||
if (!Id.IsGuid())
|
if (!Id.IsGuid())
|
||||||
throw new ValidationException("The value in the field Id is not a unique identifier");
|
throw new ValidationException("The value in the field Id is not a unique identifier");
|
||||||
|
|
||||||
if (PostName.IsEmpty())
|
if (PostName.IsEmpty())
|
||||||
throw new ValidationException("Field PostName is empty");
|
throw new ValidationException("Field PostName is empty");
|
||||||
|
|
||||||
if (PostType == PostType.None)
|
if (PostType == PostType.None)
|
||||||
throw new ValidationException("Field PostType is empty");
|
throw new ValidationException("Field PostType is empty");
|
||||||
|
|
||||||
if (Salary <= 0)
|
if (Salary <= 0)
|
||||||
throw new ValidationException("Field Salary is empty");
|
throw new ValidationException("Field Salary is empty");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,14 +7,14 @@ using System.Text.RegularExpressions;
|
|||||||
namespace SmallSoftwareContracts.DataModels;
|
namespace SmallSoftwareContracts.DataModels;
|
||||||
|
|
||||||
|
|
||||||
public class RequestDataModel(string id, string workerId, string email, double sum, bool isCancel, List<InstallationRequestDataModel> softwares) : IValidation
|
public class RequestDataModel(string id, string workerId, string email, double sum, bool isCancel, List<InstallationRequestDataModel> installationRequests) : IValidation
|
||||||
{
|
{
|
||||||
public string Id { get; private set; } = id;
|
public string Id { get; private set; } = id;
|
||||||
public string WorkerId { get; private set; } = workerId;
|
public string WorkerId { get; private set; } = workerId;
|
||||||
public string Email { get; private set; } = email;
|
public string Email { get; private set; } = email;
|
||||||
public double Sum { get; private set; } = sum;
|
public double Sum { get; private set; } = sum;
|
||||||
public bool IsCancel { get; private set; } = isCancel;
|
public bool IsCancel { get; private set; } = isCancel;
|
||||||
public List<InstallationRequestDataModel> Softwares { get; private set; } = softwares;
|
public List<InstallationRequestDataModel> Softwares { get; private set; } = installationRequests;
|
||||||
public void Validate()
|
public void Validate()
|
||||||
{
|
{
|
||||||
if (Id.IsEmpty())
|
if (Id.IsEmpty())
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ internal class RequestStorageContract : IRequestStorageContract
|
|||||||
_dbContext = dbContext;
|
_dbContext = dbContext;
|
||||||
var config = new MapperConfiguration(cfg =>
|
var config = new MapperConfiguration(cfg =>
|
||||||
{
|
{
|
||||||
|
cfg.CreateMap<InstallationRequest, InstallationRequestDataModel>();
|
||||||
|
cfg.CreateMap<InstallationRequestDataModel, InstallationRequest>();
|
||||||
cfg.CreateMap<Request, RequestDataModel>();
|
cfg.CreateMap<Request, RequestDataModel>();
|
||||||
cfg.CreateMap<RequestDataModel, Request>()
|
cfg.CreateMap<RequestDataModel, Request>()
|
||||||
.ForMember(x => x.IsCancel, x => x.MapFrom(src => false))
|
.ForMember(x => x.IsCancel, x => x.MapFrom(src => false))
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace SmallSoftwareDatabase.Models;
|
|||||||
|
|
||||||
internal class Request
|
internal class Request
|
||||||
{
|
{
|
||||||
public required string Id { get; set; } = Guid.NewGuid().ToString();
|
public string Id { get; set; } = Guid.NewGuid().ToString();
|
||||||
public required string WorkerId { get; set; }
|
public required string WorkerId { get; set; }
|
||||||
public required string Email { get; set; }
|
public required string Email { get; set; }
|
||||||
public double Sum { get; set; }
|
public double Sum { get; set; }
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
using SmallSoftwareContracts.Enums;
|
using SmallSoftwareContracts.Enums;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace SmallSoftwareDatabase.Models;
|
namespace SmallSoftwareDatabase.Models;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace SmallSoftwareDatabase.Models;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace SmallSoftwareDatabase.Models;
|
|
||||||
|
|
||||||
internal class SoftwareHistory
|
internal class SoftwareHistory
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,4 +16,9 @@
|
|||||||
<ProjectReference Include="..\SmallSoftwareContracts\SmallSoftwareContracts.csproj" />
|
<ProjectReference Include="..\SmallSoftwareContracts\SmallSoftwareContracts.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<InternalsVisibleTo Include="SmallSoftwareTests" />
|
||||||
|
<InternalsVisibleTo Include="DynamicProxyGenAssembly2" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -33,39 +33,33 @@ internal class PostBusinessLogicContractTests
|
|||||||
}
|
}
|
||||||
[Test]
|
[Test]
|
||||||
public void GetAllPosts_ReturnListOfRecords_Test()
|
public void GetAllPosts_ReturnListOfRecords_Test()
|
||||||
{
|
{//Arrange
|
||||||
//Arrange
|
|
||||||
var listOriginal = new List<PostDataModel>()
|
var listOriginal = new List<PostDataModel>()
|
||||||
{
|
{
|
||||||
new(Guid.NewGuid().ToString(),"name 1", PostType.SoftInstaller,
|
new(Guid.NewGuid().ToString(),"name 1", PostType.SoftInstaller,
|
||||||
10, true, DateTime.UtcNow),
|
10),
|
||||||
new(Guid.NewGuid().ToString(), "name 2", PostType.SoftInstaller,
|
new(Guid.NewGuid().ToString(), "name 2", PostType.SoftInstaller,
|
||||||
10, false, DateTime.UtcNow),
|
10),
|
||||||
new(Guid.NewGuid().ToString(), "name 3", PostType.SoftInstaller,
|
new(Guid.NewGuid().ToString(), "name 3", PostType.SoftInstaller,
|
||||||
10, true, DateTime.UtcNow),
|
10),
|
||||||
};
|
};
|
||||||
_postStorageContract.Setup(x =>
|
_postStorageContract.Setup(x => x.GetList()).Returns(listOriginal);
|
||||||
x.GetList(It.IsAny<bool>())).Returns(listOriginal);
|
|
||||||
//Act
|
//Act
|
||||||
var listOnlyActive = _postBusinessLogicContract.GetAllPosts(true);
|
var list = _postBusinessLogicContract.GetAllPosts();
|
||||||
var listAll = _postBusinessLogicContract.GetAllPosts(false);
|
|
||||||
//Assert
|
//Assert
|
||||||
Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
{
|
{
|
||||||
Assert.That(listOnlyActive, Is.Not.Null);
|
Assert.That(list, Is.Not.Null);
|
||||||
Assert.That(listAll, Is.Not.Null);
|
Assert.That(list, Is.EquivalentTo(listOriginal));
|
||||||
Assert.That(listOnlyActive, Is.EquivalentTo(listOriginal));
|
|
||||||
Assert.That(listAll, Is.EquivalentTo(listOriginal));
|
|
||||||
});
|
});
|
||||||
_postStorageContract.Verify(x => x.GetList(true), Times.Once);
|
_postStorageContract.Verify(x => x.GetList(), Times.Once);
|
||||||
_postStorageContract.Verify(x => x.GetList(false), Times.Once);
|
|
||||||
}
|
}
|
||||||
[Test]
|
[Test]
|
||||||
public void GetAllPosts_ReturnEmptyList_Test()
|
public void GetAllPosts_ReturnEmptyList_Test()
|
||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
_postStorageContract.Setup(x =>
|
_postStorageContract.Setup(x =>
|
||||||
x.GetList(It.IsAny<bool>())).Returns([]);
|
x.GetList()).Returns([]);
|
||||||
//Act
|
//Act
|
||||||
var listOnlyActive = _postBusinessLogicContract.GetAllPosts(true);
|
var listOnlyActive = _postBusinessLogicContract.GetAllPosts(true);
|
||||||
var listAll = _postBusinessLogicContract.GetAllPosts(false);
|
var listAll = _postBusinessLogicContract.GetAllPosts(false);
|
||||||
@@ -77,7 +71,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
Assert.That(listOnlyActive, Has.Count.EqualTo(0));
|
Assert.That(listOnlyActive, Has.Count.EqualTo(0));
|
||||||
Assert.That(listAll, Has.Count.EqualTo(0));
|
Assert.That(listAll, Has.Count.EqualTo(0));
|
||||||
});
|
});
|
||||||
_postStorageContract.Verify(x => x.GetList(It.IsAny<bool>()),
|
_postStorageContract.Verify(x => x.GetList(),
|
||||||
Times.Exactly(2));
|
Times.Exactly(2));
|
||||||
}
|
}
|
||||||
[Test]
|
[Test]
|
||||||
@@ -87,7 +81,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
Assert.That(() =>
|
Assert.That(() =>
|
||||||
_postBusinessLogicContract.GetAllPosts(It.IsAny<bool>()),
|
_postBusinessLogicContract.GetAllPosts(It.IsAny<bool>()),
|
||||||
Throws.TypeOf<NullListException>());
|
Throws.TypeOf<NullListException>());
|
||||||
_postStorageContract.Verify(x => x.GetList(It.IsAny<bool>()),
|
_postStorageContract.Verify(x => x.GetList(),
|
||||||
Times.Once);
|
Times.Once);
|
||||||
}
|
}
|
||||||
[Test]
|
[Test]
|
||||||
@@ -95,13 +89,13 @@ internal class PostBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
_postStorageContract.Setup(x =>
|
_postStorageContract.Setup(x =>
|
||||||
x.GetList(It.IsAny<bool>())).Throws(new StorageException(new
|
x.GetList()).Throws(new StorageException(new
|
||||||
InvalidOperationException()));
|
InvalidOperationException()));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() =>
|
Assert.That(() =>
|
||||||
_postBusinessLogicContract.GetAllPosts(It.IsAny<bool>()),
|
_postBusinessLogicContract.GetAllPosts(It.IsAny<bool>()),
|
||||||
Throws.TypeOf<StorageException>());
|
Throws.TypeOf<StorageException>());
|
||||||
_postStorageContract.Verify(x => x.GetList(It.IsAny<bool>()),
|
_postStorageContract.Verify(x => x.GetList(),
|
||||||
Times.Once);
|
Times.Once);
|
||||||
}
|
}
|
||||||
[Test]
|
[Test]
|
||||||
@@ -111,10 +105,8 @@ internal class PostBusinessLogicContractTests
|
|||||||
var postId = Guid.NewGuid().ToString();
|
var postId = Guid.NewGuid().ToString();
|
||||||
var listOriginal = new List<PostDataModel>()
|
var listOriginal = new List<PostDataModel>()
|
||||||
{
|
{
|
||||||
new(postId, "name 1", PostType.SoftInstaller, 10, true,
|
new(postId, "name 1", PostType.SoftInstaller, 10),
|
||||||
DateTime.UtcNow),
|
new(postId, "name 2", PostType.SoftInstaller, 10)
|
||||||
new(postId, "name 2", PostType.SoftInstaller, 10, false,
|
|
||||||
DateTime.UtcNow)
|
|
||||||
};
|
};
|
||||||
_postStorageContract.Setup(x =>
|
_postStorageContract.Setup(x =>
|
||||||
x.GetPostWithHistory(It.IsAny<string>())).Returns(listOriginal);
|
x.GetPostWithHistory(It.IsAny<string>())).Returns(listOriginal);
|
||||||
@@ -191,8 +183,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var id = Guid.NewGuid().ToString();
|
var id = Guid.NewGuid().ToString();
|
||||||
var record = new PostDataModel(id, "name", PostType.SoftInstaller, 10,
|
var record = new PostDataModel(id, "name", PostType.SoftInstaller, 10);
|
||||||
true, DateTime.UtcNow);
|
|
||||||
_postStorageContract.Setup(x =>
|
_postStorageContract.Setup(x =>
|
||||||
x.GetElementById(id)).Returns(record);
|
x.GetElementById(id)).Returns(record);
|
||||||
//Act
|
//Act
|
||||||
@@ -209,7 +200,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
var postName = "name";
|
var postName = "name";
|
||||||
var record = new PostDataModel(Guid.NewGuid().ToString(), postName,
|
var record = new PostDataModel(Guid.NewGuid().ToString(), postName,
|
||||||
PostType.SoftInstaller, 10, true, DateTime.UtcNow);
|
PostType.SoftInstaller, 10);
|
||||||
_postStorageContract.Setup(x =>
|
_postStorageContract.Setup(x =>
|
||||||
x.GetElementByName(postName)).Returns(record);
|
x.GetElementByName(postName)).Returns(record);
|
||||||
//Act
|
//Act
|
||||||
@@ -284,14 +275,13 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
var flag = false;
|
var flag = false;
|
||||||
var record = new PostDataModel(Guid.NewGuid().ToString(), "name",
|
var record = new PostDataModel(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.Supervisor, 10, true, DateTime.UtcNow.AddDays(-1));
|
PostType.Supervisor, 10);
|
||||||
_postStorageContract.Setup(x =>
|
_postStorageContract.Setup(x =>
|
||||||
x.AddElement(It.IsAny<PostDataModel>()))
|
x.AddElement(It.IsAny<PostDataModel>()))
|
||||||
.Callback((PostDataModel x) =>
|
.Callback((PostDataModel x) =>
|
||||||
{
|
{
|
||||||
flag = x.Id == record.Id && x.PostName ==
|
flag = x.Id == record.Id && x.PostName ==
|
||||||
record.PostName && x.PostType == record.PostType && x.Salary == record.Salary &&
|
record.PostName && x.PostType == record.PostType && x.Salary == record.Salary;
|
||||||
x.ChangeDate == record.ChangeDate;
|
|
||||||
});
|
});
|
||||||
//Act
|
//Act
|
||||||
_postBusinessLogicContract.InsertPost(record);
|
_postBusinessLogicContract.InsertPost(record);
|
||||||
@@ -310,7 +300,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() =>
|
Assert.That(() =>
|
||||||
_postBusinessLogicContract.InsertPost(new(Guid.NewGuid().ToString(), "name",
|
_postBusinessLogicContract.InsertPost(new(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.Supervisor, 10, true, DateTime.UtcNow)),
|
PostType.Supervisor, 10)),
|
||||||
Throws.TypeOf<ElementExistsException>());
|
Throws.TypeOf<ElementExistsException>());
|
||||||
_postStorageContract.Verify(x =>
|
_postStorageContract.Verify(x =>
|
||||||
x.AddElement(It.IsAny<PostDataModel>()), Times.Once);
|
x.AddElement(It.IsAny<PostDataModel>()), Times.Once);
|
||||||
@@ -329,7 +319,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.InsertPost(new
|
Assert.That(() => _postBusinessLogicContract.InsertPost(new
|
||||||
PostDataModel("id", "name", PostType.Supervisor, 10, true, DateTime.UtcNow)),
|
PostDataModel("id", "name", PostType.Supervisor, 10)),
|
||||||
Throws.TypeOf<ValidationException>());
|
Throws.TypeOf<ValidationException>());
|
||||||
_postStorageContract.Verify(x =>
|
_postStorageContract.Verify(x =>
|
||||||
x.AddElement(It.IsAny<PostDataModel>()), Times.Never);
|
x.AddElement(It.IsAny<PostDataModel>()), Times.Never);
|
||||||
@@ -344,7 +334,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() =>
|
Assert.That(() =>
|
||||||
_postBusinessLogicContract.InsertPost(new(Guid.NewGuid().ToString(), "name",
|
_postBusinessLogicContract.InsertPost(new(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.Supervisor, 10, true, DateTime.UtcNow)),
|
PostType.Supervisor, 10)),
|
||||||
Throws.TypeOf<StorageException>());
|
Throws.TypeOf<StorageException>());
|
||||||
_postStorageContract.Verify(x =>
|
_postStorageContract.Verify(x =>
|
||||||
x.AddElement(It.IsAny<PostDataModel>()), Times.Once);
|
x.AddElement(It.IsAny<PostDataModel>()), Times.Once);
|
||||||
@@ -355,14 +345,13 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
var flag = false;
|
var flag = false;
|
||||||
var record = new PostDataModel(Guid.NewGuid().ToString(), "name",
|
var record = new PostDataModel(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.Supervisor, 10, true, DateTime.UtcNow.AddDays(-1));
|
PostType.Supervisor, 10);
|
||||||
_postStorageContract.Setup(x =>
|
_postStorageContract.Setup(x =>
|
||||||
x.UpdElement(It.IsAny<PostDataModel>()))
|
x.UpdElement(It.IsAny<PostDataModel>()))
|
||||||
.Callback((PostDataModel x) =>
|
.Callback((PostDataModel x) =>
|
||||||
{
|
{
|
||||||
flag = x.Id == record.Id && x.PostName ==
|
flag = x.Id == record.Id && x.PostName ==
|
||||||
record.PostName && x.PostType == record.PostType && x.Salary == record.Salary &&
|
record.PostName && x.PostType == record.PostType && x.Salary == record.Salary;
|
||||||
x.ChangeDate == record.ChangeDate;
|
|
||||||
});
|
});
|
||||||
//Act
|
//Act
|
||||||
_postBusinessLogicContract.UpdatePost(record);
|
_postBusinessLogicContract.UpdatePost(record);
|
||||||
@@ -381,7 +370,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() =>
|
Assert.That(() =>
|
||||||
_postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "name",
|
_postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.Supervisor, 10, true, DateTime.UtcNow)),
|
PostType.Supervisor, 10)),
|
||||||
Throws.TypeOf<ElementNotFoundException>());
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
_postStorageContract.Verify(x =>
|
_postStorageContract.Verify(x =>
|
||||||
x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
||||||
@@ -396,7 +385,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() =>
|
Assert.That(() =>
|
||||||
_postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "anme",
|
_postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "anme",
|
||||||
PostType.Supervisor, 10, true, DateTime.UtcNow)),
|
PostType.Supervisor, 10)),
|
||||||
Throws.TypeOf<ElementExistsException>());
|
Throws.TypeOf<ElementExistsException>());
|
||||||
_postStorageContract.Verify(x =>
|
_postStorageContract.Verify(x =>
|
||||||
x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
||||||
@@ -415,7 +404,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.UpdatePost(new
|
Assert.That(() => _postBusinessLogicContract.UpdatePost(new
|
||||||
PostDataModel("id", "name", PostType.Supervisor, 10, true, DateTime.UtcNow)),
|
PostDataModel("id", "name", PostType.Supervisor, 10)),
|
||||||
Throws.TypeOf<ValidationException>());
|
Throws.TypeOf<ValidationException>());
|
||||||
_postStorageContract.Verify(x =>
|
_postStorageContract.Verify(x =>
|
||||||
x.UpdElement(It.IsAny<PostDataModel>()), Times.Never);
|
x.UpdElement(It.IsAny<PostDataModel>()), Times.Never);
|
||||||
@@ -430,7 +419,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() =>
|
Assert.That(() =>
|
||||||
_postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "name",
|
_postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.Supervisor, 10, true, DateTime.UtcNow)),
|
PostType.Supervisor, 10)),
|
||||||
Throws.TypeOf<StorageException>());
|
Throws.TypeOf<StorageException>());
|
||||||
_postStorageContract.Verify(x =>
|
_postStorageContract.Verify(x =>
|
||||||
x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ internal class RequestBusinessLogicContractTests
|
|||||||
var date = DateTime.UtcNow;
|
var date = DateTime.UtcNow;
|
||||||
var listOriginal = new List<RequestDataModel>()
|
var listOriginal = new List<RequestDataModel>()
|
||||||
{
|
{
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(),Guid.NewGuid().ToString(), 5)]),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(),Guid.NewGuid().ToString(), 5, 10)]),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []), new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []), new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []),
|
||||||
};
|
};
|
||||||
_requestStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(),
|
_requestStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(),
|
||||||
@@ -112,7 +112,7 @@ internal class RequestBusinessLogicContractTests
|
|||||||
var workerId = Guid.NewGuid().ToString();
|
var workerId = Guid.NewGuid().ToString();
|
||||||
var listOriginal = new List<RequestDataModel>()
|
var listOriginal = new List<RequestDataModel>()
|
||||||
{
|
{
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(),Guid.NewGuid().ToString(), 5)]),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(),Guid.NewGuid().ToString(), 5, 10)]),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []), new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []), new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []),
|
||||||
};
|
};
|
||||||
_requestStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(),
|
_requestStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(),
|
||||||
@@ -229,7 +229,7 @@ internal class RequestBusinessLogicContractTests
|
|||||||
var softwareId = Guid.NewGuid().ToString();
|
var softwareId = Guid.NewGuid().ToString();
|
||||||
var listOriginal = new List<RequestDataModel>()
|
var listOriginal = new List<RequestDataModel>()
|
||||||
{
|
{
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)]),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, []),
|
||||||
};
|
};
|
||||||
@@ -343,7 +343,7 @@ internal class RequestBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var id = Guid.NewGuid().ToString();
|
var id = Guid.NewGuid().ToString();
|
||||||
var record = new RequestDataModel(id, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]);
|
var record = new RequestDataModel(id, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)]);
|
||||||
_requestStorageContract.Setup(x =>
|
_requestStorageContract.Setup(x =>
|
||||||
x.GetElementById(id)).Returns(record);
|
x.GetElementById(id)).Returns(record);
|
||||||
//Act
|
//Act
|
||||||
@@ -405,7 +405,7 @@ internal class RequestBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
var flag = false;
|
var flag = false;
|
||||||
var record = new RequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "valid.email@example.com", 10, false,
|
var record = new RequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "valid.email@example.com", 10, false,
|
||||||
[new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]);
|
[new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)]);
|
||||||
_requestStorageContract.Setup(x => x.AddElement(It.IsAny<RequestDataModel>()))
|
_requestStorageContract.Setup(x => x.AddElement(It.IsAny<RequestDataModel>()))
|
||||||
.Callback((RequestDataModel x) =>
|
.Callback((RequestDataModel x) =>
|
||||||
{
|
{
|
||||||
@@ -435,7 +435,7 @@ internal class RequestBusinessLogicContractTests
|
|||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() =>
|
Assert.That(() =>
|
||||||
_requestBusinessLogicContract.InsertRequest(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 10,false,
|
_requestBusinessLogicContract.InsertRequest(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 10,false,
|
||||||
[new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf<ElementExistsException>());
|
[new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)])), Throws.TypeOf<ElementExistsException>());
|
||||||
_requestStorageContract.Verify(x => x.AddElement(It.IsAny<RequestDataModel>()), Times.Once);
|
_requestStorageContract.Verify(x => x.AddElement(It.IsAny<RequestDataModel>()), Times.Once);
|
||||||
}
|
}
|
||||||
[Test]
|
[Test]
|
||||||
@@ -464,7 +464,7 @@ internal class RequestBusinessLogicContractTests
|
|||||||
InvalidOperationException()));
|
InvalidOperationException()));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() =>
|
Assert.That(() =>
|
||||||
_requestBusinessLogicContract.InsertRequest(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf<StorageException>());
|
_requestBusinessLogicContract.InsertRequest(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "test@example.com", 10, false, [new InstallationRequestDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 10)])), Throws.TypeOf<StorageException>());
|
||||||
_requestStorageContract.Verify(x =>
|
_requestStorageContract.Verify(x =>
|
||||||
x.AddElement(It.IsAny<RequestDataModel>()), Times.Once);
|
x.AddElement(It.IsAny<RequestDataModel>()), Times.Once);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
.Returns([new RequestDataModel(Guid.NewGuid().ToString(), workerId, Guid.NewGuid().ToString(), requestSum, false, [])]);
|
.Returns([new RequestDataModel(Guid.NewGuid().ToString(), workerId, Guid.NewGuid().ToString(), requestSum, false, [])]);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.SoftInstaller, postSalary, true, DateTime.UtcNow));
|
PostType.SoftInstaller, postSalary));
|
||||||
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
||||||
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
||||||
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
@@ -291,7 +291,7 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
1, false, [])]);
|
1, false, [])]);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.SoftInstaller, 2000, true, DateTime.UtcNow));
|
PostType.SoftInstaller, 2000));
|
||||||
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
||||||
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
||||||
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
@@ -313,7 +313,7 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
.Returns([]);
|
.Returns([]);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.SoftInstaller, postSalary, true, DateTime.UtcNow));
|
PostType.SoftInstaller, postSalary));
|
||||||
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
||||||
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
||||||
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
@@ -340,7 +340,7 @@ Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
|||||||
var workerId = Guid.NewGuid().ToString();
|
var workerId = Guid.NewGuid().ToString();
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.SoftInstaller, 2000, true, DateTime.UtcNow));
|
PostType.SoftInstaller, 2000));
|
||||||
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
||||||
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
||||||
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
@@ -382,7 +382,7 @@ Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
|||||||
workerId, Guid.NewGuid().ToString(), 200, false, [])]);
|
workerId, Guid.NewGuid().ToString(), 200, false, [])]);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.SoftInstaller, 2000, true, DateTime.UtcNow));
|
PostType.SoftInstaller, 2000));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() =>
|
Assert.That(() =>
|
||||||
_salaryBusinessLogicContract.CalculateSalaryByMonth(DateTime.UtcNow),
|
_salaryBusinessLogicContract.CalculateSalaryByMonth(DateTime.UtcNow),
|
||||||
@@ -400,7 +400,7 @@ Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
|||||||
InvalidOperationException()));
|
InvalidOperationException()));
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.SoftInstaller, 2000, true, DateTime.UtcNow));
|
PostType.SoftInstaller, 2000));
|
||||||
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
||||||
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
||||||
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
@@ -445,7 +445,7 @@ Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
|||||||
.Returns([new RequestDataModel(Guid.NewGuid().ToString(), workerId, Guid.NewGuid().ToString(), 200, false, [])]);
|
.Returns([new RequestDataModel(Guid.NewGuid().ToString(), workerId, Guid.NewGuid().ToString(), 200, false, [])]);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name",
|
||||||
PostType.SoftInstaller, 2000, true, DateTime.UtcNow));
|
PostType.SoftInstaller, 2000));
|
||||||
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
_workerStorageContract.Setup(x => x.GetList(It.IsAny<bool>(),
|
||||||
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(),
|
||||||
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ internal class InstallationRequestDataModelTests
|
|||||||
public void SoftwareIdIsNullOrEmptyTest()
|
public void SoftwareIdIsNullOrEmptyTest()
|
||||||
{
|
{
|
||||||
var installationRequest = CreateDataModel(null, Guid.NewGuid().ToString(),
|
var installationRequest = CreateDataModel(null, Guid.NewGuid().ToString(),
|
||||||
10);
|
10, 10);
|
||||||
Assert.That(() => installationRequest.Validate(),
|
Assert.That(() => installationRequest.Validate(),
|
||||||
Throws.TypeOf<ValidationException>());
|
Throws.TypeOf<ValidationException>());
|
||||||
installationRequest = CreateDataModel(string.Empty,
|
installationRequest = CreateDataModel(string.Empty,
|
||||||
Guid.NewGuid().ToString(), 10);
|
Guid.NewGuid().ToString(), 10, 10);
|
||||||
Assert.That(() => installationRequest.Validate(),
|
Assert.That(() => installationRequest.Validate(),
|
||||||
Throws.TypeOf<ValidationException>());
|
Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,7 @@ internal class InstallationRequestDataModelTests
|
|||||||
public void SoftwareIdIsNotGuidTest()
|
public void SoftwareIdIsNotGuidTest()
|
||||||
{
|
{
|
||||||
var installationRequest = CreateDataModel("softwareId",
|
var installationRequest = CreateDataModel("softwareId",
|
||||||
Guid.NewGuid().ToString(), 10);
|
Guid.NewGuid().ToString(), 10, 10);
|
||||||
Assert.That(() => installationRequest.Validate(),
|
Assert.That(() => installationRequest.Validate(),
|
||||||
Throws.TypeOf<ValidationException>());
|
Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
@@ -37,11 +37,11 @@ internal class InstallationRequestDataModelTests
|
|||||||
public void RequestIdIsNullOrEmptyTest()
|
public void RequestIdIsNullOrEmptyTest()
|
||||||
{
|
{
|
||||||
var installationRequest = CreateDataModel(Guid.NewGuid().ToString(), null,
|
var installationRequest = CreateDataModel(Guid.NewGuid().ToString(), null,
|
||||||
10);
|
10, 10);
|
||||||
Assert.That(() => installationRequest.Validate(),
|
Assert.That(() => installationRequest.Validate(),
|
||||||
Throws.TypeOf<ValidationException>());
|
Throws.TypeOf<ValidationException>());
|
||||||
installationRequest = CreateDataModel(string.Empty,
|
installationRequest = CreateDataModel(string.Empty,
|
||||||
Guid.NewGuid().ToString(), 10);
|
Guid.NewGuid().ToString(), 10, 10);
|
||||||
Assert.That(() => installationRequest.Validate(),
|
Assert.That(() => installationRequest.Validate(),
|
||||||
Throws.TypeOf<ValidationException>());
|
Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
@@ -49,7 +49,7 @@ internal class InstallationRequestDataModelTests
|
|||||||
public void RequestIdIsNotGuidTest()
|
public void RequestIdIsNotGuidTest()
|
||||||
{
|
{
|
||||||
var installationRequest = CreateDataModel(Guid.NewGuid().ToString(),
|
var installationRequest = CreateDataModel(Guid.NewGuid().ToString(),
|
||||||
"requestId", 10);
|
"requestId", 10, 10);
|
||||||
Assert.That(() => installationRequest.Validate(),
|
Assert.That(() => installationRequest.Validate(),
|
||||||
Throws.TypeOf<ValidationException>());
|
Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
@@ -57,11 +57,11 @@ internal class InstallationRequestDataModelTests
|
|||||||
public void CountIsLessOrZeroTest()
|
public void CountIsLessOrZeroTest()
|
||||||
{
|
{
|
||||||
var installationRequest = CreateDataModel(Guid.NewGuid().ToString(),
|
var installationRequest = CreateDataModel(Guid.NewGuid().ToString(),
|
||||||
Guid.NewGuid().ToString(), 0);
|
Guid.NewGuid().ToString(), 0, 0);
|
||||||
Assert.That(() => installationRequest.Validate(),
|
Assert.That(() => installationRequest.Validate(),
|
||||||
Throws.TypeOf<ValidationException>());
|
Throws.TypeOf<ValidationException>());
|
||||||
installationRequest = CreateDataModel(Guid.NewGuid().ToString(),
|
installationRequest = CreateDataModel(Guid.NewGuid().ToString(),
|
||||||
Guid.NewGuid().ToString(), -10);
|
Guid.NewGuid().ToString(), -10, -20);
|
||||||
Assert.That(() => installationRequest.Validate(),
|
Assert.That(() => installationRequest.Validate(),
|
||||||
Throws.TypeOf<ValidationException>());
|
Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
@@ -71,7 +71,8 @@ internal class InstallationRequestDataModelTests
|
|||||||
var softwareId = Guid.NewGuid().ToString();
|
var softwareId = Guid.NewGuid().ToString();
|
||||||
var requestId = Guid.NewGuid().ToString();
|
var requestId = Guid.NewGuid().ToString();
|
||||||
var count = 10;
|
var count = 10;
|
||||||
var installationRequest = CreateDataModel(softwareId, requestId, count);
|
var price = 10;
|
||||||
|
var installationRequest = CreateDataModel(softwareId, requestId, count, price);
|
||||||
Assert.That(() => installationRequest.Validate(), Throws.Nothing);
|
Assert.That(() => installationRequest.Validate(), Throws.Nothing);
|
||||||
Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
{
|
{
|
||||||
@@ -81,6 +82,6 @@ internal class InstallationRequestDataModelTests
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
private static InstallationRequestDataModel CreateDataModel(string? softwareId, string?
|
private static InstallationRequestDataModel CreateDataModel(string? softwareId, string?
|
||||||
requestId, int count) =>
|
requestId, int count, double price) =>
|
||||||
new(softwareId, requestId, count);
|
new(softwareId, requestId, count, price);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,12 +80,10 @@ internal class PostDataModelTests
|
|||||||
Assert.That(post.PostName, Is.EqualTo(postName));
|
Assert.That(post.PostName, Is.EqualTo(postName));
|
||||||
Assert.That(post.PostType, Is.EqualTo(postType));
|
Assert.That(post.PostType, Is.EqualTo(postType));
|
||||||
Assert.That(post.Salary, Is.EqualTo(salary));
|
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,
|
private static PostDataModel CreateDataModel(string? id,
|
||||||
string? postName, PostType postType, double salary, bool isActual, DateTime
|
string? postName, PostType postType, double salary, bool isActual, DateTime
|
||||||
changeDate) =>
|
changeDate) =>
|
||||||
new (id, postName, postType, salary, isActual, changeDate);
|
new (id, postName, postType, salary);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ internal class RequestDataModelTests
|
|||||||
new(id, workerId, email, sum, isCancel, softwares);
|
new(id, workerId, email, sum, isCancel, softwares);
|
||||||
|
|
||||||
private static List<InstallationRequestDataModel> CreateSubDataModel() =>
|
private static List<InstallationRequestDataModel> CreateSubDataModel() =>
|
||||||
[new InstallationRequestDataModel(Guid.NewGuid().ToString(), "SoftwareName", 1)];
|
[new InstallationRequestDataModel(Guid.NewGuid().ToString(), "SoftwareName", 1, 10)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
using SmallSoftwareContracts.Infrastructure;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SmallSoftwareTests.Infrastructure;
|
||||||
|
|
||||||
|
internal class ConfigurationDatabaseTest : IConfigurationDatabase
|
||||||
|
{
|
||||||
|
public string ConnectionString => "Host=127.0.0.1;Port=5432;Database=SmallSoftwareTest;Username=postgres;Password=postgres;";
|
||||||
|
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\SmallSoftwareBusinessLogic\SmallSoftwareBusinessLogic.csproj" />
|
<ProjectReference Include="..\SmallSoftwareBusinessLogic\SmallSoftwareBusinessLogic.csproj" />
|
||||||
<ProjectReference Include="..\SmallSoftwareContracts\SmallSoftwareContracts.csproj" />
|
<ProjectReference Include="..\SmallSoftwareContracts\SmallSoftwareContracts.csproj" />
|
||||||
|
<ProjectReference Include="..\SmallSoftwareDatabase\SmallSoftwareDatabase.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using SmallSoftwareTests.Infrastructure;
|
||||||
|
using SmallSoftwareDatabase;
|
||||||
|
namespace SmallSoftwareTests.StoragesContracts;
|
||||||
|
|
||||||
|
internal abstract class BaseStorageContractTest
|
||||||
|
{
|
||||||
|
protected SmallSoftwareDbContext SmallSoftwareDbContext { get; private set; }
|
||||||
|
[OneTimeSetUp]
|
||||||
|
public void OneTimeSetUp()
|
||||||
|
{
|
||||||
|
SmallSoftwareDbContext = new SmallSoftwareDbContext(new ConfigurationDatabaseTest());
|
||||||
|
SmallSoftwareDbContext.Database.EnsureDeleted();
|
||||||
|
SmallSoftwareDbContext.Database.EnsureCreated();
|
||||||
|
}
|
||||||
|
[OneTimeTearDown]
|
||||||
|
public void OneTimeTearDown()
|
||||||
|
{
|
||||||
|
SmallSoftwareDbContext.Database.EnsureDeleted();
|
||||||
|
SmallSoftwareDbContext.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,254 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using SmallSoftwareContracts.DataModels;
|
||||||
|
using SmallSoftwareContracts.Exceptions;
|
||||||
|
using SmallSoftwareDatabase.Implementations;
|
||||||
|
using SmallSoftwareDatabase.Models;
|
||||||
|
|
||||||
|
namespace SmallSoftwareTests.StoragesContracts;
|
||||||
|
|
||||||
|
[TestFixture]
|
||||||
|
internal class ManufacturerStorageContractTests : BaseStorageContractTest
|
||||||
|
{
|
||||||
|
private ManufacturerStorageContract _manufacturerStorageContract;
|
||||||
|
[SetUp]
|
||||||
|
public void SetUp()
|
||||||
|
{
|
||||||
|
_manufacturerStorageContract = new
|
||||||
|
ManufacturerStorageContract(SmallSoftwareDbContext);
|
||||||
|
}
|
||||||
|
[TearDown]
|
||||||
|
public void TearDown()
|
||||||
|
{
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Softwares\" CASCADE; ");
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Manufacturers\" CASCADE;");
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenHaveRecords_Test()
|
||||||
|
{
|
||||||
|
var manufacturer =
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString(), "name 1");
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
"name 2");
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
"name 3");
|
||||||
|
var list = _manufacturerStorageContract.GetList();
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
|
AssertElement(list.First(x => x.Id == manufacturer.Id), manufacturer);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenNoRecords_Test()
|
||||||
|
{
|
||||||
|
var list = _manufacturerStorageContract.GetList();
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Is.Empty);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||||
|
{
|
||||||
|
var manufacturer =
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
AssertElement(_manufacturerStorageContract.GetElementById(manufacturer.Id),
|
||||||
|
manufacturer);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenNoRecord_Test()
|
||||||
|
{
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
Assert.That(() =>
|
||||||
|
_manufacturerStorageContract.GetElementById(Guid.NewGuid().ToString()), Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByName_WhenHaveRecord_Test()
|
||||||
|
{
|
||||||
|
var manufacturer =
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
AssertElement(_manufacturerStorageContract.GetElementByName(manufacturer.ManufacturerName), manufacturer);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByName_WhenNoRecord_Test()
|
||||||
|
{
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
Assert.That(() =>
|
||||||
|
_manufacturerStorageContract.GetElementByName("name"), Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByOldName_WhenHaveRecord_Test()
|
||||||
|
{
|
||||||
|
var manufacturer =
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
AssertElement(_manufacturerStorageContract.GetElementByOldName(manufacturer
|
||||||
|
.PrevManufacturerName!), manufacturer);
|
||||||
|
AssertElement(_manufacturerStorageContract.GetElementByOldName(manufacturer
|
||||||
|
.PrevPrevManufacturerName!), manufacturer);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByOldName_WhenNoRecord_Test()
|
||||||
|
{
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
Assert.That(() =>
|
||||||
|
_manufacturerStorageContract.GetElementByOldName("name"), Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_Test()
|
||||||
|
{
|
||||||
|
var manufacturer = CreateModel(Guid.NewGuid().ToString());
|
||||||
|
_manufacturerStorageContract.AddElement(manufacturer);
|
||||||
|
AssertElement(GetManufacturerFromDatabase(manufacturer.Id),
|
||||||
|
manufacturer);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_WhenHaveRecordWithSameId_Test()
|
||||||
|
{
|
||||||
|
var manufacturer = CreateModel(Guid.NewGuid().ToString(), "name unique");
|
||||||
|
InsertManufacturerToDatabaseAndReturn(manufacturer.Id);
|
||||||
|
Assert.That(() =>
|
||||||
|
_manufacturerStorageContract.AddElement(manufacturer),
|
||||||
|
Throws.TypeOf<ElementExistsException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_WhenHaveRecordWithSameManufacturerName_Test()
|
||||||
|
{
|
||||||
|
var manufacturer = CreateModel(Guid.NewGuid().ToString(), "name unique");
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
manufacturerName: manufacturer.ManufacturerName);
|
||||||
|
Assert.That(() =>
|
||||||
|
_manufacturerStorageContract.AddElement(manufacturer),
|
||||||
|
Throws.TypeOf<ElementExistsException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_Test()
|
||||||
|
{
|
||||||
|
var manufacturer = CreateModel(Guid.NewGuid().ToString(), "name new",
|
||||||
|
"test", "prev");
|
||||||
|
InsertManufacturerToDatabaseAndReturn(manufacturer.Id,
|
||||||
|
manufacturerName: manufacturer.PrevManufacturerName!, prevManufacturerName:
|
||||||
|
manufacturer.PrevPrevManufacturerName!);
|
||||||
|
_manufacturerStorageContract.UpdElement(CreateModel(manufacturer.Id,
|
||||||
|
"name new", "some name", "some name"));
|
||||||
|
AssertElement(GetManufacturerFromDatabase(manufacturer.Id),
|
||||||
|
manufacturer);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenNoChangeManufacturerName_Test()
|
||||||
|
{
|
||||||
|
var manufacturer = CreateModel(Guid.NewGuid().ToString(), "name new",
|
||||||
|
"test", "prev");
|
||||||
|
InsertManufacturerToDatabaseAndReturn(manufacturer.Id,
|
||||||
|
manufacturerName: manufacturer.ManufacturerName!, prevManufacturerName:
|
||||||
|
manufacturer.PrevManufacturerName!, prevPrevManufacturerName:
|
||||||
|
manufacturer.PrevPrevManufacturerName!);
|
||||||
|
_manufacturerStorageContract.UpdElement(manufacturer);
|
||||||
|
AssertElement(GetManufacturerFromDatabase(manufacturer.Id),
|
||||||
|
manufacturer);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_manufacturerStorageContract.UpdElement(CreateModel(Guid.NewGuid().ToString())),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenHaveRecordWithSameManufacturerName_Test()
|
||||||
|
{
|
||||||
|
var manufacturer = CreateModel(Guid.NewGuid().ToString(), "name unique");
|
||||||
|
InsertManufacturerToDatabaseAndReturn(manufacturer.Id,
|
||||||
|
manufacturerName: "some name");
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
manufacturerName: manufacturer.ManufacturerName);
|
||||||
|
Assert.That(() =>
|
||||||
|
_manufacturerStorageContract.UpdElement(manufacturer),
|
||||||
|
Throws.TypeOf<ElementExistsException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenNoSoftwares_Test()
|
||||||
|
{
|
||||||
|
var manufacturer =
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
_manufacturerStorageContract.DelElement(manufacturer.Id);
|
||||||
|
var element = GetManufacturerFromDatabase(manufacturer.Id);
|
||||||
|
Assert.That(element, Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenHaveSoftwares_Test()
|
||||||
|
{
|
||||||
|
var manufacturer =
|
||||||
|
InsertManufacturerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
SmallSoftwareDbContext.Softwares.Add(new Software()
|
||||||
|
{
|
||||||
|
Id =
|
||||||
|
Guid.NewGuid().ToString(),
|
||||||
|
SoftwareName = "name",
|
||||||
|
ManufacturerId =
|
||||||
|
manufacturer.Id,
|
||||||
|
Price = 10,
|
||||||
|
IsDeleted = false
|
||||||
|
});
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
Assert.That(() =>
|
||||||
|
_manufacturerStorageContract.DelElement(manufacturer.Id),
|
||||||
|
Throws.TypeOf<StorageException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenNoRecordWithThisId_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_manufacturerStorageContract.DelElement(Guid.NewGuid().ToString()),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
private Manufacturer InsertManufacturerToDatabaseAndReturn(string id,
|
||||||
|
string manufacturerName = "test", string prevManufacturerName = "prev", string
|
||||||
|
prevPrevManufacturerName = "prevPrev")
|
||||||
|
{
|
||||||
|
var manufacturer = new Manufacturer()
|
||||||
|
{
|
||||||
|
Id = id,
|
||||||
|
ManufacturerName =
|
||||||
|
manufacturerName,
|
||||||
|
PrevManufacturerName = prevManufacturerName,
|
||||||
|
PrevPrevManufacturerName = prevPrevManufacturerName
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.Manufacturers.Add(manufacturer);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return manufacturer;
|
||||||
|
}
|
||||||
|
private static void AssertElement(ManufacturerDataModel? actual,
|
||||||
|
Manufacturer expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||||
|
Assert.That(actual.ManufacturerName,
|
||||||
|
Is.EqualTo(expected.ManufacturerName));
|
||||||
|
Assert.That(actual.PrevManufacturerName,
|
||||||
|
Is.EqualTo(expected.PrevManufacturerName));
|
||||||
|
Assert.That(actual.PrevPrevManufacturerName,
|
||||||
|
Is.EqualTo(expected.PrevPrevManufacturerName));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private static ManufacturerDataModel CreateModel(string id, string
|
||||||
|
manufacturerName = "test", string prevManufacturerName = "prev", string
|
||||||
|
prevPrevManufacturerName = "prevPrev")
|
||||||
|
=> new(id, manufacturerName, prevManufacturerName,
|
||||||
|
prevPrevManufacturerName);
|
||||||
|
private Manufacturer? GetManufacturerFromDatabase(string id) =>
|
||||||
|
SmallSoftwareDbContext.Manufacturers.FirstOrDefault(x => x.Id == id);
|
||||||
|
private static void AssertElement(Manufacturer? actual,
|
||||||
|
ManufacturerDataModel expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||||
|
Assert.That(actual.ManufacturerName,
|
||||||
|
Is.EqualTo(expected.ManufacturerName));
|
||||||
|
Assert.That(actual.PrevManufacturerName,
|
||||||
|
Is.EqualTo(expected.PrevManufacturerName));
|
||||||
|
Assert.That(actual.PrevPrevManufacturerName,
|
||||||
|
Is.EqualTo(expected.PrevPrevManufacturerName));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,287 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using SmallSoftwareContracts.DataModels;
|
||||||
|
using SmallSoftwareContracts.Enums;
|
||||||
|
using SmallSoftwareContracts.Exceptions;
|
||||||
|
using SmallSoftwareDatabase.Implementations;
|
||||||
|
using SmallSoftwareDatabase.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SmallSoftwareTests.StoragesContracts;
|
||||||
|
|
||||||
|
[TestFixture]
|
||||||
|
internal class PostStorageContractTests : BaseStorageContractTest
|
||||||
|
{
|
||||||
|
private PostStorageContract _postStorageContract;
|
||||||
|
[SetUp]
|
||||||
|
public void SetUp()
|
||||||
|
{
|
||||||
|
_postStorageContract = new PostStorageContract(SmallSoftwareDbContext);
|
||||||
|
}
|
||||||
|
[TearDown]
|
||||||
|
public void TearDown()
|
||||||
|
{
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Posts\" CASCADE; ");
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenHaveRecords_Test()
|
||||||
|
{
|
||||||
|
var post = InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(), "name 1");
|
||||||
|
InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(), "name 2");
|
||||||
|
InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(), "name 3");
|
||||||
|
var list = _postStorageContract.GetList();
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
|
AssertElement(list.First(x => x.Id == post.PostId), post);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenNoRecords_Test()
|
||||||
|
{
|
||||||
|
var list = _postStorageContract.GetList();
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Is.Empty);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetPostWithHistory_WhenHaveRecords_Test()
|
||||||
|
{
|
||||||
|
var postId = Guid.NewGuid().ToString();
|
||||||
|
InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(), "name 1",
|
||||||
|
isActual: true);
|
||||||
|
InsertPostToDatabaseAndReturn(postId, "name 2", isActual: true);
|
||||||
|
InsertPostToDatabaseAndReturn(postId, "name 2", isActual: false);
|
||||||
|
var list = _postStorageContract.GetPostWithHistory(postId);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetPostWithHistory_WhenNoRecords_Test()
|
||||||
|
{
|
||||||
|
var postId = Guid.NewGuid().ToString();
|
||||||
|
InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(), "name 1",
|
||||||
|
isActual: true);
|
||||||
|
InsertPostToDatabaseAndReturn(postId, "name 2", isActual: true);
|
||||||
|
InsertPostToDatabaseAndReturn(postId, "name 2", isActual: false);
|
||||||
|
var list =
|
||||||
|
_postStorageContract.GetPostWithHistory(Guid.NewGuid().ToString());
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(0));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||||
|
{
|
||||||
|
var post = InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
AssertElement(_postStorageContract.GetElementById(post.PostId),
|
||||||
|
post);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenNoRecord_Test()
|
||||||
|
{
|
||||||
|
InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
Assert.That(() =>
|
||||||
|
_postStorageContract.GetElementById(Guid.NewGuid().ToString()), Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenRecordHasDeleted_Test()
|
||||||
|
{
|
||||||
|
var post = InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
isActual: false);
|
||||||
|
Assert.That(() => _postStorageContract.GetElementById(post.PostId),
|
||||||
|
Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenTrySearchById_Test()
|
||||||
|
{
|
||||||
|
var post = InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
Assert.That(() => _postStorageContract.GetElementById(post.Id),
|
||||||
|
Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByName_WhenHaveRecord_Test()
|
||||||
|
{
|
||||||
|
var post = InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
AssertElement(_postStorageContract.GetElementByName(post.PostName),
|
||||||
|
post);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByName_WhenNoRecord_Test()
|
||||||
|
{
|
||||||
|
InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
Assert.That(() => _postStorageContract.GetElementByName("name"),
|
||||||
|
Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByName_WhenRecordHasDeleted_Test()
|
||||||
|
{
|
||||||
|
var post = InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
isActual: false);
|
||||||
|
Assert.That(() => _postStorageContract.GetElementById(post.PostName),
|
||||||
|
Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_Test()
|
||||||
|
{
|
||||||
|
var post = CreateModel(Guid.NewGuid().ToString());
|
||||||
|
_postStorageContract.AddElement(post);
|
||||||
|
AssertElement(GetPostFromDatabaseByPostId(post.Id), post);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_WhenHaveRecordWithSameName_Test()
|
||||||
|
{
|
||||||
|
var post = CreateModel(Guid.NewGuid().ToString(), "name unique");
|
||||||
|
InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(), postName:
|
||||||
|
post.PostName, isActual: true);
|
||||||
|
Assert.That(() => _postStorageContract.AddElement(post),
|
||||||
|
Throws.TypeOf<ElementExistsException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_WhenHaveRecordWithSamePostId_Test()
|
||||||
|
{
|
||||||
|
var post = CreateModel(Guid.NewGuid().ToString());
|
||||||
|
InsertPostToDatabaseAndReturn(post.Id, isActual: true);
|
||||||
|
Assert.That(() => _postStorageContract.AddElement(post),
|
||||||
|
Throws.TypeOf<ElementExistsException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_Test()
|
||||||
|
{
|
||||||
|
var post = CreateModel(Guid.NewGuid().ToString());
|
||||||
|
InsertPostToDatabaseAndReturn(post.Id, isActual: true);
|
||||||
|
_postStorageContract.UpdElement(post);
|
||||||
|
var posts = SmallSoftwareDbContext.Posts.Where(x => x.PostId ==
|
||||||
|
post.Id).OrderByDescending(x => x.ChangeDate);
|
||||||
|
Assert.That(posts.Count(), Is.EqualTo(2));
|
||||||
|
AssertElement(posts.First(), CreateModel(post.Id));
|
||||||
|
AssertElement(posts.Last(), CreateModel(post.Id));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_postStorageContract.UpdElement(CreateModel(Guid.NewGuid().ToString())),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenHaveRecordWithSameName_Test()
|
||||||
|
{
|
||||||
|
var post = CreateModel(Guid.NewGuid().ToString(), "New Name");
|
||||||
|
InsertPostToDatabaseAndReturn(post.Id, postName: "name");
|
||||||
|
InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(), postName:
|
||||||
|
post.PostName);
|
||||||
|
Assert.That(() => _postStorageContract.UpdElement(post),
|
||||||
|
Throws.TypeOf<ElementExistsException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenRecordWasDeleted_Test()
|
||||||
|
{
|
||||||
|
var post = CreateModel(Guid.NewGuid().ToString());
|
||||||
|
InsertPostToDatabaseAndReturn(post.Id, isActual: false);
|
||||||
|
Assert.That(() => _postStorageContract.UpdElement(post),
|
||||||
|
Throws.TypeOf<ElementDeletedException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_Test()
|
||||||
|
{
|
||||||
|
var post = InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
isActual: true);
|
||||||
|
_postStorageContract.DelElement(post.PostId);
|
||||||
|
var element = GetPostFromDatabaseByPostId(post.PostId);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(element, Is.Not.Null);
|
||||||
|
Assert.That(!element!.IsActual);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenNoRecordWithThisId_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_postStorageContract.DelElement(Guid.NewGuid().ToString()),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenRecordWasDeleted_Test()
|
||||||
|
{
|
||||||
|
var post = InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
isActual: false);
|
||||||
|
Assert.That(() => _postStorageContract.DelElement(post.PostId),
|
||||||
|
Throws.TypeOf<ElementDeletedException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_ResElement_Test()
|
||||||
|
{
|
||||||
|
var post = InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
isActual: false);
|
||||||
|
_postStorageContract.ResElement(post.PostId);
|
||||||
|
var element = GetPostFromDatabaseByPostId(post.PostId);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(element, Is.Not.Null);
|
||||||
|
Assert.That(element!.IsActual);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_ResElement_WhenNoRecordWithThisId_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_postStorageContract.ResElement(Guid.NewGuid().ToString()),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_ResElement_WhenRecordNotWasDeleted_Test()
|
||||||
|
{
|
||||||
|
var post = InsertPostToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
isActual: true);
|
||||||
|
Assert.That(() => _postStorageContract.ResElement(post.PostId),
|
||||||
|
Throws.Nothing);
|
||||||
|
}
|
||||||
|
private Post InsertPostToDatabaseAndReturn(string id, string postName =
|
||||||
|
"test", PostType postType = PostType.SoftInstaller, double salary = 10, bool isActual
|
||||||
|
= true, DateTime? changeDate = null)
|
||||||
|
{
|
||||||
|
var post = new Post()
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid().ToString(),
|
||||||
|
PostId = id,
|
||||||
|
PostName = postName,
|
||||||
|
PostType = postType,
|
||||||
|
Salary = salary,
|
||||||
|
IsActual = isActual,
|
||||||
|
ChangeDate = changeDate ?? DateTime.UtcNow
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.Posts.Add(post);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return post;
|
||||||
|
}
|
||||||
|
private static void AssertElement(PostDataModel? actual, Post expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.Id, Is.EqualTo(expected.PostId));
|
||||||
|
Assert.That(actual.PostName, Is.EqualTo(expected.PostName));
|
||||||
|
Assert.That(actual.PostType, Is.EqualTo(expected.PostType));
|
||||||
|
Assert.That(actual.Salary, Is.EqualTo(expected.Salary));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private static PostDataModel CreateModel(string postId, string postName =
|
||||||
|
"test", PostType postType = PostType.SoftInstaller, double salary = 10)
|
||||||
|
=> new(postId, postName, postType, salary);
|
||||||
|
private Post? GetPostFromDatabaseByPostId(string id) =>
|
||||||
|
SmallSoftwareDbContext.Posts.Where(x => x.PostId == id).OrderByDescending(x =>
|
||||||
|
x.ChangeDate).FirstOrDefault();
|
||||||
|
private static void AssertElement(Post? actual, PostDataModel expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.PostId, Is.EqualTo(expected.Id));
|
||||||
|
Assert.That(actual.PostName, Is.EqualTo(expected.PostName));
|
||||||
|
Assert.That(actual.PostType, Is.EqualTo(expected.PostType));
|
||||||
|
Assert.That(actual.Salary, Is.EqualTo(expected.Salary));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,320 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using SmallSoftwareContracts.DataModels;
|
||||||
|
using SmallSoftwareContracts.Enums;
|
||||||
|
using SmallSoftwareContracts.Exceptions;
|
||||||
|
using SmallSoftwareDatabase.Implementations;
|
||||||
|
using SmallSoftwareDatabase.Models;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace SmallSoftwareTests.StoragesContracts;
|
||||||
|
|
||||||
|
internal class RequestStorageContractTests : BaseStorageContractTest
|
||||||
|
{
|
||||||
|
private RequestStorageContract _requesttStorageContract;
|
||||||
|
private Worker _worker;
|
||||||
|
private Software _software;
|
||||||
|
private Manufacturer _manufacturer;
|
||||||
|
[SetUp]
|
||||||
|
public void SetUp()
|
||||||
|
{
|
||||||
|
_requesttStorageContract = new RequestStorageContract(SmallSoftwareDbContext);
|
||||||
|
_manufacturer = InsertManufacturerToDatabaseAndReturn();
|
||||||
|
_worker = InsertWorkerToDatabaseAndReturn();
|
||||||
|
_software = InsertSoftwareToDatabaseAndReturn();
|
||||||
|
}
|
||||||
|
[TearDown]
|
||||||
|
public void TearDown()
|
||||||
|
{
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Requests\" CASCADE; ");
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Workers\" CASCADE; ");
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Softwares\" CASCADE; ");
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Manufacturers\" CASCADE;");
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenHaveRecords_Test()
|
||||||
|
{
|
||||||
|
var request = InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests: [(_software.Id, 5, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "", 10, installationRequests: [(_software.Id, 10, 1.2)]);
|
||||||
|
var list = _requesttStorageContract.GetList();
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
|
AssertElement(list.First(x => x.Id == request.Id), request);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenNoRecords_Test()
|
||||||
|
{
|
||||||
|
var list = _requesttStorageContract.GetList();
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Is.Empty);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByPeriod_Test()
|
||||||
|
{
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "", 1, installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "", 1, installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
var list = _requesttStorageContract.GetList(startDate:
|
||||||
|
DateTime.UtcNow.AddDays(-1), endDate: DateTime.UtcNow.AddDays(1));
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(4));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByWorkerId_Test()
|
||||||
|
{
|
||||||
|
var worker = InsertWorkerToDatabaseAndReturn("Other worker");
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests:
|
||||||
|
[(_software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests:
|
||||||
|
[(_software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(worker.Id, "", 1, installationRequests:
|
||||||
|
[(_software.Id, 1, 1.2)]);
|
||||||
|
var list = _requesttStorageContract.GetList(workerId: _worker.Id);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
Assert.That(list.All(x => x.WorkerId == _worker.Id));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_BySoftwareId_Test()
|
||||||
|
{
|
||||||
|
var software = InsertSoftwareToDatabaseAndReturn("Other name");
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests:
|
||||||
|
[(_software.Id, 5, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests:
|
||||||
|
[(_software.Id, 1, 1.2), (software.Id, 4, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "", 1, installationRequests:
|
||||||
|
[(software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "", 1, installationRequests:
|
||||||
|
[(software.Id, 1, 1.2), (_software.Id, 1, 1.2)]);
|
||||||
|
var list = _requesttStorageContract.GetList(softwareId: _software.Id);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
|
Assert.That(list.All(x => x.Softwares!.Any(y => y.SoftwareId ==
|
||||||
|
_software.Id)));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByAllParameters_Test()
|
||||||
|
{
|
||||||
|
var worker = InsertWorkerToDatabaseAndReturn("Other worker");
|
||||||
|
var software = InsertSoftwareToDatabaseAndReturn("Other name");
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(worker.Id, "", 1, installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(worker.Id, "test@mail.ru", 1, installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(worker.Id, "test@mail.ru", 1, installationRequests: [(software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests: [(software.Id, 1, 1.2)]);
|
||||||
|
InsertRequestToDatabaseAndReturn(worker.Id, "", 1, installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
var list = _requesttStorageContract.GetList(startDate:
|
||||||
|
DateTime.UtcNow.AddDays(-1), endDate: DateTime.UtcNow.AddDays(1), workerId:
|
||||||
|
_worker.Id, softwareId: _software.Id);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||||
|
{
|
||||||
|
var request = InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1,
|
||||||
|
installationRequests: [(_software.Id, 1, 1.2)]);
|
||||||
|
AssertElement(_requesttStorageContract.GetElementById(request.Id), request);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenNoRecord_Test()
|
||||||
|
{
|
||||||
|
InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1, installationRequests:
|
||||||
|
[(_software.Id, 1, 1.2)]);
|
||||||
|
Assert.That(() =>
|
||||||
|
_requesttStorageContract.GetElementById(Guid.NewGuid().ToString()), Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenRecordHasCanceled_Test()
|
||||||
|
{
|
||||||
|
var request = InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1,
|
||||||
|
installationRequests: [(_software.Id, 1, 1.2)], isCancel: true);
|
||||||
|
AssertElement(_requesttStorageContract.GetElementById(request.Id), request);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_Test()
|
||||||
|
{
|
||||||
|
var request = CreateModel(Guid.NewGuid().ToString(), _worker.Id,"", 0, false, [_software.Id]);
|
||||||
|
_requesttStorageContract.AddElement(request);
|
||||||
|
AssertElement(GetRequestFromDatabaseById(request.Id), request);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_WhenIsDeletedIsTrue_Test()
|
||||||
|
{
|
||||||
|
var request = CreateModel(Guid.NewGuid().ToString(), _worker.Id, "test@mail.ru", 1, true, [_software.Id]);
|
||||||
|
Assert.That(() => _requesttStorageContract.AddElement(request),Throws.Nothing);
|
||||||
|
AssertElement(GetRequestFromDatabaseById(request.Id), CreateModel(request.Id,
|
||||||
|
_worker.Id, "test@mail.ru", 1, false, [_software.Id]));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_Test()
|
||||||
|
{
|
||||||
|
var request = InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1,
|
||||||
|
installationRequests: [(_software.Id, 1, 1.2)], isCancel: false);
|
||||||
|
_requesttStorageContract.DelElement(request.Id);
|
||||||
|
var element = GetRequestFromDatabaseById(request.Id);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(element, Is.Not.Null);
|
||||||
|
Assert.That(element!.IsCancel);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenNoRecordWithThisId_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_requesttStorageContract.DelElement(Guid.NewGuid().ToString()),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenRecordWasCanceled_Test()
|
||||||
|
{
|
||||||
|
var request = InsertRequestToDatabaseAndReturn(_worker.Id, "test@mail.ru", 1,
|
||||||
|
installationRequests: [(_software.Id, 1, 1.2)], isCancel: true);
|
||||||
|
Assert.That(() => _requesttStorageContract.DelElement(request.Id),
|
||||||
|
Throws.TypeOf<ElementDeletedException>());
|
||||||
|
}
|
||||||
|
private Worker InsertWorkerToDatabaseAndReturn(string fio = "test")
|
||||||
|
{
|
||||||
|
var worker = new Worker()
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid().ToString(),
|
||||||
|
FIO =
|
||||||
|
fio,
|
||||||
|
PostId = Guid.NewGuid().ToString()
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.Workers.Add(worker);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return worker;
|
||||||
|
}
|
||||||
|
private Manufacturer InsertManufacturerToDatabaseAndReturn()
|
||||||
|
{
|
||||||
|
var manufacrurer = new Manufacturer()
|
||||||
|
{
|
||||||
|
Id =
|
||||||
|
Guid.NewGuid().ToString(),
|
||||||
|
ManufacturerName = "name"
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.Manufacturers.Add(manufacrurer);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return manufacrurer;
|
||||||
|
}
|
||||||
|
private Software InsertSoftwareToDatabaseAndReturn(string softwareName = "test",
|
||||||
|
SoftwareType softwareType = SoftwareType.Windows,
|
||||||
|
double price = 1, bool isDeleted = false)
|
||||||
|
{
|
||||||
|
var software = new Software()
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid().ToString(),
|
||||||
|
ManufacturerId = _manufacturer.Id,
|
||||||
|
SoftwareName = softwareName,
|
||||||
|
SoftwareType = softwareType,
|
||||||
|
Price = price,
|
||||||
|
IsDeleted = isDeleted
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.Softwares.Add(software);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return software;
|
||||||
|
}
|
||||||
|
private Request InsertRequestToDatabaseAndReturn(string workerId, string email,
|
||||||
|
double sum = 1, bool isCancel = false, List<(string, int, double)>? installationRequests = null)
|
||||||
|
{
|
||||||
|
var request = new Request()
|
||||||
|
{
|
||||||
|
WorkerId = workerId,
|
||||||
|
Email = email,
|
||||||
|
Sum = sum,
|
||||||
|
IsCancel = isCancel,
|
||||||
|
InstallationRequests = []
|
||||||
|
|
||||||
|
};
|
||||||
|
if (installationRequests is not null)
|
||||||
|
{
|
||||||
|
foreach (var elem in installationRequests)
|
||||||
|
{
|
||||||
|
request.InstallationRequests.Add(new InstallationRequest
|
||||||
|
{
|
||||||
|
SoftwareId =
|
||||||
|
elem.Item1,
|
||||||
|
RequestId = request.Id,
|
||||||
|
Count = elem.Item2,
|
||||||
|
Price = elem.Item3
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SmallSoftwareDbContext.Requests.Add(request);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return request;
|
||||||
|
}
|
||||||
|
private static void AssertElement(RequestDataModel? actual, Request expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||||
|
Assert.That(actual.WorkerId, Is.EqualTo(expected.WorkerId));
|
||||||
|
Assert.That(actual.IsCancel, Is.EqualTo(expected.IsCancel));
|
||||||
|
});
|
||||||
|
if (expected.InstallationRequests is not null)
|
||||||
|
{
|
||||||
|
Assert.That(actual.Softwares, Is.Not.Null);
|
||||||
|
Assert.That(actual.Softwares,
|
||||||
|
Has.Count.EqualTo(expected.InstallationRequests.Count));
|
||||||
|
for (int i = 0; i < actual.Softwares.Count; ++i)
|
||||||
|
{
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.Softwares[i].SoftwareId,
|
||||||
|
Is.EqualTo(expected.InstallationRequests[i].SoftwareId));
|
||||||
|
Assert.That(actual.Softwares[i].Count,
|
||||||
|
Is.EqualTo(expected.InstallationRequests[i].Count));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.That(actual.Softwares, Is.Null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private static RequestDataModel CreateModel(string id, string workerId, string email, double sum, bool isCancel, List<string> softwareIds)
|
||||||
|
{
|
||||||
|
var installationRequests = softwareIds.Select(x => new InstallationRequestDataModel(x, id, 1, 1.1)).ToList();
|
||||||
|
return new(id, workerId, email, sum, isCancel, installationRequests);
|
||||||
|
}
|
||||||
|
private Request? GetRequestFromDatabaseById(string id) =>
|
||||||
|
SmallSoftwareDbContext.Requests.Include(x => x.InstallationRequests).FirstOrDefault(x => x.Id == id);
|
||||||
|
private static void AssertElement(Request? actual, RequestDataModel expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||||
|
Assert.That(actual.WorkerId, Is.EqualTo(expected.WorkerId));
|
||||||
|
Assert.That(actual.IsCancel, Is.EqualTo(expected.IsCancel));
|
||||||
|
});
|
||||||
|
if (expected.Softwares is not null)
|
||||||
|
{
|
||||||
|
Assert.That(actual.InstallationRequests, Is.Not.Null);
|
||||||
|
Assert.That(actual.InstallationRequests,
|
||||||
|
Has.Count.EqualTo(expected.Softwares.Count));
|
||||||
|
for (int i = 0; i < actual.InstallationRequests.Count; ++i)
|
||||||
|
{
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.InstallationRequests[i].SoftwareId,
|
||||||
|
Is.EqualTo(expected.Softwares[i].SoftwareId));
|
||||||
|
Assert.That(actual.InstallationRequests[i].Count,
|
||||||
|
Is.EqualTo(expected.Softwares[i].Count));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Assert.That(actual.InstallationRequests, Is.Null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using SmallSoftwareContracts.DataModels;
|
||||||
|
using SmallSoftwareDatabase.Implementations;
|
||||||
|
using SmallSoftwareDatabase.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SmallSoftwareTests.StoragesContracts;
|
||||||
|
|
||||||
|
[TestFixture]
|
||||||
|
internal class SalaryStorageContractTests : BaseStorageContractTest
|
||||||
|
{
|
||||||
|
private SalaryStorageContract _salaryStorageContract;
|
||||||
|
private Worker _worker;
|
||||||
|
[SetUp]
|
||||||
|
public void SetUp()
|
||||||
|
{
|
||||||
|
_salaryStorageContract = new
|
||||||
|
SalaryStorageContract(SmallSoftwareDbContext);
|
||||||
|
_worker = InsertWorkerToDatabaseAndReturn();
|
||||||
|
}
|
||||||
|
[TearDown]
|
||||||
|
public void TearDown()
|
||||||
|
{
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Salaries\" CASCADE; ");
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Workers\" CASCADE; ");
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenHaveRecords_Test()
|
||||||
|
{
|
||||||
|
var salary = InsertSalaryToDatabaseAndReturn(_worker.Id,
|
||||||
|
workerSalary: 100);
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id);
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id);
|
||||||
|
var list = _salaryStorageContract.GetList(DateTime.UtcNow.AddDays(-
|
||||||
|
10), DateTime.UtcNow.AddDays(10));
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
|
AssertElement(list.First(), salary);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenNoRecords_Test()
|
||||||
|
{
|
||||||
|
var list = _salaryStorageContract.GetList(DateTime.UtcNow.AddDays(-
|
||||||
|
10), DateTime.UtcNow.AddDays(10));
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Is.Empty);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_OnlyInDatePeriod_Test()
|
||||||
|
{
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(-2));
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(-1).AddMinutes(-5));
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(-1).AddMinutes(5));
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(1).AddMinutes(-5));
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(1).AddMinutes(5));
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(-2));
|
||||||
|
var list = _salaryStorageContract.GetList(DateTime.UtcNow.AddDays(-
|
||||||
|
1), DateTime.UtcNow.AddDays(1));
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByWorker_Test()
|
||||||
|
{
|
||||||
|
var worker = InsertWorkerToDatabaseAndReturn("name 2");
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id);
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id);
|
||||||
|
InsertSalaryToDatabaseAndReturn(worker.Id);
|
||||||
|
var list = _salaryStorageContract.GetList(DateTime.UtcNow.AddDays(-
|
||||||
|
1), DateTime.UtcNow.AddDays(1), _worker.Id);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
Assert.That(list.All(x => x.WorkerId == _worker.Id));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByWorkerOnlyInDatePeriod_Test()
|
||||||
|
{
|
||||||
|
var worker = InsertWorkerToDatabaseAndReturn("name 2");
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(-2));
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(-1).AddMinutes(5));
|
||||||
|
InsertSalaryToDatabaseAndReturn(worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(-1).AddMinutes(5));
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(1).AddMinutes(-5));
|
||||||
|
InsertSalaryToDatabaseAndReturn(worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(1).AddMinutes(-5));
|
||||||
|
InsertSalaryToDatabaseAndReturn(_worker.Id, salaryDate:
|
||||||
|
DateTime.UtcNow.AddDays(-2));
|
||||||
|
var list = _salaryStorageContract.GetList(DateTime.UtcNow.AddDays(-
|
||||||
|
1), DateTime.UtcNow.AddDays(1), _worker.Id);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
Assert.That(list.All(x => x.WorkerId == _worker.Id));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_Test()
|
||||||
|
{
|
||||||
|
var salary = CreateModel(_worker.Id);
|
||||||
|
_salaryStorageContract.AddElement(salary);
|
||||||
|
AssertElement(GetSalaryFromDatabaseByWorkerId(_worker.Id), salary);
|
||||||
|
}
|
||||||
|
private Worker InsertWorkerToDatabaseAndReturn(string workerFIO = "fio")
|
||||||
|
{
|
||||||
|
var worker = new Worker()
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid().ToString(),
|
||||||
|
PostId =
|
||||||
|
Guid.NewGuid().ToString(),
|
||||||
|
FIO = workerFIO,
|
||||||
|
IsDeleted = false
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.Workers.Add(worker);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return worker;
|
||||||
|
}
|
||||||
|
private Salary InsertSalaryToDatabaseAndReturn(string workerId, double
|
||||||
|
workerSalary = 1, DateTime? salaryDate = null)
|
||||||
|
{
|
||||||
|
var salary = new Salary()
|
||||||
|
{
|
||||||
|
WorkerId = workerId,
|
||||||
|
WorkerSalary =
|
||||||
|
workerSalary,
|
||||||
|
SalaryDate = salaryDate ?? DateTime.UtcNow
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.Salaries.Add(salary);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return salary;
|
||||||
|
}
|
||||||
|
private static void AssertElement(SalaryDataModel? actual, Salary expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.WorkerId, Is.EqualTo(expected.WorkerId));
|
||||||
|
Assert.That(actual.Salary, Is.EqualTo(expected.WorkerSalary));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private static SalaryDataModel CreateModel(string workerId, double
|
||||||
|
workerSalary = 1, DateTime? salaryDate = null)
|
||||||
|
=> new(workerId, salaryDate ?? DateTime.UtcNow, workerSalary);
|
||||||
|
private Salary? GetSalaryFromDatabaseByWorkerId(string id) =>
|
||||||
|
SmallSoftwareDbContext.Salaries.FirstOrDefault(x => x.WorkerId == id);
|
||||||
|
private static void AssertElement(Salary? actual, SalaryDataModel expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.WorkerId, Is.EqualTo(expected.WorkerId));
|
||||||
|
Assert.That(actual.WorkerSalary, Is.EqualTo(expected.Salary));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,437 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using SmallSoftwareContracts.DataModels;
|
||||||
|
using SmallSoftwareContracts.Enums;
|
||||||
|
using SmallSoftwareContracts.Exceptions;
|
||||||
|
using SmallSoftwareDatabase.Implementations;
|
||||||
|
using SmallSoftwareDatabase.Models;
|
||||||
|
|
||||||
|
namespace SmallSoftwareTests.StoragesContracts;
|
||||||
|
[TestFixture]
|
||||||
|
internal class SoftwareStorageContractTests : BaseStorageContractTest
|
||||||
|
{
|
||||||
|
private SoftwareStorageContract _softwareStorageContract;
|
||||||
|
private Manufacturer _manufacturer;
|
||||||
|
[SetUp]
|
||||||
|
public void SetUp()
|
||||||
|
{
|
||||||
|
_softwareStorageContract = new
|
||||||
|
SoftwareStorageContract(SmallSoftwareDbContext);
|
||||||
|
_manufacturer = InsertManufacturerToDatabaseAndReturn();
|
||||||
|
}
|
||||||
|
[TearDown]
|
||||||
|
public void TearDown()
|
||||||
|
{
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Softwares\" CASCADE; ");
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Manufacturers\" CASCADE;");
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenHaveRecords_Test()
|
||||||
|
{
|
||||||
|
var software =
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(), _manufacturer.Id,
|
||||||
|
"name 1");
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 2");
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 3");
|
||||||
|
var list = _softwareStorageContract.GetList();
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
|
AssertElement(list.First(x => x.Id == software.Id), software);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenNoRecords_Test()
|
||||||
|
{
|
||||||
|
var list = _softwareStorageContract.GetList();
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Is.Empty);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_OnlyActual_Test()
|
||||||
|
{
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 1", isDeleted: true);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 2", isDeleted: false);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 3", isDeleted: false);
|
||||||
|
var list = _softwareStorageContract.GetList(onlyActive: true);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
Assert.That(!list.Any(x => x.IsDeleted));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_IncludeNoActual_Test()
|
||||||
|
{
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 1", isDeleted: true);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 2", isDeleted: true);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 3", isDeleted: false);
|
||||||
|
var list = _softwareStorageContract.GetList(onlyActive: false);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
|
Assert.That(list.Count(x => x.IsDeleted), Is.EqualTo(2));
|
||||||
|
Assert.That(list.Count(x => !x.IsDeleted), Is.EqualTo(1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByManufacturer_Test()
|
||||||
|
{
|
||||||
|
var manufacruer = InsertManufacturerToDatabaseAndReturn("name 2");
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 1", isDeleted: true);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 2", isDeleted: false);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
manufacruer.Id, "name 3", isDeleted: false);
|
||||||
|
var list = _softwareStorageContract.GetList(manufacturerId:
|
||||||
|
_manufacturer.Id, onlyActive: false);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
Assert.That(list.All(x => x.ManufacturerId ==
|
||||||
|
_manufacturer.Id));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByManufacturerOnlyActual_Test()
|
||||||
|
{
|
||||||
|
var manufacruer = InsertManufacturerToDatabaseAndReturn("name 2");
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 1", isDeleted: true);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name 2", isDeleted: false);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
manufacruer.Id, "name 3", isDeleted: false);
|
||||||
|
var list = _softwareStorageContract.GetList(manufacturerId:
|
||||||
|
_manufacturer.Id, onlyActive: true);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(list, Has.Count.EqualTo(1));
|
||||||
|
Assert.That(list.All(x => x.ManufacturerId == _manufacturer.Id
|
||||||
|
&& !x.IsDeleted));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetHistoryBySoftwareId_WhenHaveRecords_Test()
|
||||||
|
{
|
||||||
|
var software =
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(), _manufacturer.Id,
|
||||||
|
"name 1");
|
||||||
|
InsertSoftwareHistoryToDatabaseAndReturn(software.Id, 20,
|
||||||
|
DateTime.UtcNow.AddDays(-1));
|
||||||
|
InsertSoftwareHistoryToDatabaseAndReturn(software.Id, 30,
|
||||||
|
DateTime.UtcNow.AddMinutes(-10));
|
||||||
|
InsertSoftwareHistoryToDatabaseAndReturn(software.Id, 40,
|
||||||
|
DateTime.UtcNow.AddDays(1));
|
||||||
|
var list = _softwareStorageContract.GetHistoryBySoftwareId(software.Id);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetHistoryBySoftwareId_WhenNoRecords_Test()
|
||||||
|
{
|
||||||
|
var software =
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(), _manufacturer.Id,
|
||||||
|
"name 1");
|
||||||
|
InsertSoftwareHistoryToDatabaseAndReturn(software.Id, 20,
|
||||||
|
DateTime.UtcNow.AddDays(-1));
|
||||||
|
InsertSoftwareHistoryToDatabaseAndReturn(software.Id, 30,
|
||||||
|
DateTime.UtcNow.AddMinutes(-10));
|
||||||
|
InsertSoftwareHistoryToDatabaseAndReturn(software.Id, 40,
|
||||||
|
DateTime.UtcNow.AddDays(1));
|
||||||
|
var list =
|
||||||
|
_softwareStorageContract.GetHistoryBySoftwareId(Guid.NewGuid().ToString());
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(0));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||||
|
{
|
||||||
|
var software =
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(), _manufacturer.Id);
|
||||||
|
AssertElement(_softwareStorageContract.GetElementById(software.Id),
|
||||||
|
software);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenNoRecord_Test()
|
||||||
|
{
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id);
|
||||||
|
Assert.That(() =>
|
||||||
|
_softwareStorageContract.GetElementById(Guid.NewGuid().ToString()), Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenRecordHasDeleted_Test()
|
||||||
|
{
|
||||||
|
var software =
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(), _manufacturer.Id,
|
||||||
|
isDeleted: true);
|
||||||
|
Assert.That(() => _softwareStorageContract.GetElementById(software.Id),
|
||||||
|
Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByName_WhenHaveRecord_Test()
|
||||||
|
{
|
||||||
|
var software =
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(), _manufacturer.Id);
|
||||||
|
AssertElement(_softwareStorageContract.GetElementByName(software.SoftwareName)
|
||||||
|
, software);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByName_WhenNoRecord_Test()
|
||||||
|
{
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id);
|
||||||
|
Assert.That(() => _softwareStorageContract.GetElementByName("name"),
|
||||||
|
Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByName_WhenRecordHasDeleted_Test()
|
||||||
|
{
|
||||||
|
var software =
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(), _manufacturer.Id,
|
||||||
|
isDeleted: true);
|
||||||
|
Assert.That(() =>
|
||||||
|
_softwareStorageContract.GetElementById(software.SoftwareName), Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_Test()
|
||||||
|
{
|
||||||
|
var software = CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, isDeleted: false);
|
||||||
|
_softwareStorageContract.AddElement(software);
|
||||||
|
AssertElement(GetSoftwareFromDatabaseById(software.Id), software);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_WhenIsDeletedIsTrue_Test()
|
||||||
|
{
|
||||||
|
var software = CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, isDeleted: true);
|
||||||
|
Assert.That(() => _softwareStorageContract.AddElement(software),
|
||||||
|
Throws.Nothing);
|
||||||
|
AssertElement(GetSoftwareFromDatabaseById(software.Id),
|
||||||
|
CreateModel(software.Id, _manufacturer.Id, isDeleted: false));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_WhenHaveRecordWithSameId_Test()
|
||||||
|
{
|
||||||
|
var software = CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(software.Id, _manufacturer.Id,
|
||||||
|
softwareName: "name unique");
|
||||||
|
Assert.That(() => _softwareStorageContract.AddElement(software),
|
||||||
|
Throws.TypeOf<ElementExistsException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_WhenHaveRecordWithSameName_Test()
|
||||||
|
{
|
||||||
|
var software = CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name unique", isDeleted: false);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, softwareName: software.SoftwareName, isDeleted: false);
|
||||||
|
Assert.That(() => _softwareStorageContract.AddElement(software),
|
||||||
|
Throws.TypeOf<ElementExistsException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_WhenHaveRecordWithSameNameButOneWasDeleted_Test()
|
||||||
|
{
|
||||||
|
var software = CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name unique", isDeleted: false);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, softwareName: software.SoftwareName, isDeleted: true);
|
||||||
|
Assert.That(() => _softwareStorageContract.AddElement(software),
|
||||||
|
Throws.Nothing);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_Test()
|
||||||
|
{
|
||||||
|
var software = CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, isDeleted: false);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(software.Id, _manufacturer.Id,
|
||||||
|
isDeleted: false);
|
||||||
|
_softwareStorageContract.UpdElement(software);
|
||||||
|
AssertElement(GetSoftwareFromDatabaseById(software.Id), software);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenIsDeletedIsTrue_Test()
|
||||||
|
{
|
||||||
|
var software = CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, isDeleted: true);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(software.Id, _manufacturer.Id,
|
||||||
|
isDeleted: false);
|
||||||
|
_softwareStorageContract.UpdElement(software);
|
||||||
|
AssertElement(GetSoftwareFromDatabaseById(software.Id),
|
||||||
|
CreateModel(software.Id, _manufacturer.Id, isDeleted: false));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_softwareStorageContract.UpdElement(CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id)), Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenHaveRecordWithSameName_Test()
|
||||||
|
{
|
||||||
|
var software = CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name unique", isDeleted: false);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(software.Id, _manufacturer.Id,
|
||||||
|
softwareName: "name");
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, softwareName: software.SoftwareName);
|
||||||
|
Assert.That(() => _softwareStorageContract.UpdElement(software),
|
||||||
|
Throws.TypeOf<ElementExistsException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void
|
||||||
|
Try_UpdElement_WhenHaveRecordWithSameNameButOneWasDeleted_Test()
|
||||||
|
{
|
||||||
|
var software = CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, "name unique", isDeleted: false);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(software.Id, _manufacturer.Id,
|
||||||
|
softwareName: "name");
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id, softwareName: software.SoftwareName, isDeleted: true);
|
||||||
|
Assert.That(() => _softwareStorageContract.UpdElement(software),
|
||||||
|
Throws.Nothing);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenRecordWasDeleted_Test()
|
||||||
|
{
|
||||||
|
var software = CreateModel(Guid.NewGuid().ToString(),
|
||||||
|
_manufacturer.Id);
|
||||||
|
InsertSoftwareToDatabaseAndReturn(software.Id, _manufacturer.Id,
|
||||||
|
isDeleted: true);
|
||||||
|
Assert.That(() => _softwareStorageContract.UpdElement(software),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_Test()
|
||||||
|
{
|
||||||
|
var software =
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(), _manufacturer.Id,
|
||||||
|
isDeleted: false);
|
||||||
|
_softwareStorageContract.DelElement(software.Id);
|
||||||
|
var element = GetSoftwareFromDatabaseById(software.Id);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(element, Is.Not.Null);
|
||||||
|
Assert.That(element!.IsDeleted);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenNoRecordWithThisId_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_softwareStorageContract.DelElement(Guid.NewGuid().ToString()),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenRecordWasDeleted_Test()
|
||||||
|
{
|
||||||
|
var software =
|
||||||
|
InsertSoftwareToDatabaseAndReturn(Guid.NewGuid().ToString(), _manufacturer.Id,
|
||||||
|
isDeleted: true);
|
||||||
|
Assert.That(() => _softwareStorageContract.DelElement(software.Id),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
private Manufacturer InsertManufacturerToDatabaseAndReturn(string
|
||||||
|
manufacturerName = "name")
|
||||||
|
{
|
||||||
|
var manufacrurer = new Manufacturer()
|
||||||
|
{
|
||||||
|
Id =
|
||||||
|
Guid.NewGuid().ToString(),
|
||||||
|
ManufacturerName = manufacturerName
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.Manufacturers.Add(manufacrurer);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return manufacrurer;
|
||||||
|
}
|
||||||
|
private Software InsertSoftwareToDatabaseAndReturn(string id, string
|
||||||
|
manufacturerId, string softwareName = "test", SoftwareType softwareType =
|
||||||
|
SoftwareType.Windows, double price = 1, bool isDeleted = false)
|
||||||
|
{
|
||||||
|
var software = new Software()
|
||||||
|
{
|
||||||
|
Id = id,
|
||||||
|
ManufacturerId =
|
||||||
|
manufacturerId,
|
||||||
|
SoftwareName = softwareName,
|
||||||
|
SoftwareType = softwareType,
|
||||||
|
Price =
|
||||||
|
price,
|
||||||
|
IsDeleted = isDeleted
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.Softwares.Add(software);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return software;
|
||||||
|
}
|
||||||
|
private SoftwareHistory InsertSoftwareHistoryToDatabaseAndReturn(string
|
||||||
|
softwareId, double price, DateTime changeDate)
|
||||||
|
{
|
||||||
|
var softwareHistory = new SoftwareHistory()
|
||||||
|
{
|
||||||
|
Id =
|
||||||
|
Guid.NewGuid().ToString(),
|
||||||
|
SoftwareId = softwareId,
|
||||||
|
OldPrice = price,
|
||||||
|
ChangeDate =
|
||||||
|
changeDate
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.SoftwareHistories.Add(softwareHistory);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return softwareHistory;
|
||||||
|
}
|
||||||
|
private static void AssertElement(SoftwareDataModel? actual, Software
|
||||||
|
expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||||
|
Assert.That(actual.ManufacturerId,
|
||||||
|
Is.EqualTo(expected.ManufacturerId));
|
||||||
|
Assert.That(actual.SoftwareName,
|
||||||
|
Is.EqualTo(expected.SoftwareName));
|
||||||
|
Assert.That(actual.SoftwareType,
|
||||||
|
Is.EqualTo(expected.SoftwareType));
|
||||||
|
Assert.That(actual.Price, Is.EqualTo(expected.Price));
|
||||||
|
Assert.That(actual.IsDeleted, Is.EqualTo(expected.IsDeleted));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private static SoftwareDataModel CreateModel(string id, string
|
||||||
|
manufacturerId, string softwareName = "test", SoftwareType softwareType =
|
||||||
|
SoftwareType.Windows, double price = 1, bool isDeleted = false)
|
||||||
|
=> new(id, softwareName, softwareType, manufacturerId, price,
|
||||||
|
isDeleted);
|
||||||
|
private Software? GetSoftwareFromDatabaseById(string id) =>
|
||||||
|
SmallSoftwareDbContext.Softwares.FirstOrDefault(x => x.Id == id);
|
||||||
|
private static void AssertElement(Software? actual, SoftwareDataModel
|
||||||
|
expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||||
|
Assert.That(actual.ManufacturerId,
|
||||||
|
Is.EqualTo(expected.ManufacturerId));
|
||||||
|
Assert.That(actual.SoftwareName,
|
||||||
|
Is.EqualTo(expected.SoftwareName));
|
||||||
|
Assert.That(actual.SoftwareType,
|
||||||
|
Is.EqualTo(expected.SoftwareType));
|
||||||
|
Assert.That(actual.Price, Is.EqualTo(expected.Price));
|
||||||
|
Assert.That(actual.IsDeleted, Is.EqualTo(expected.IsDeleted));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,265 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using SmallSoftwareContracts.DataModels;
|
||||||
|
using SmallSoftwareContracts.Exceptions;
|
||||||
|
using SmallSoftwareDatabase.Implementations;
|
||||||
|
using SmallSoftwareDatabase.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SmallSoftwareTests.StoragesContracts;
|
||||||
|
|
||||||
|
[TestFixture]
|
||||||
|
internal class WorkerStorageContractTests : BaseStorageContractTest
|
||||||
|
{
|
||||||
|
private WorkerStorageContract _workerStorageContract;
|
||||||
|
[SetUp]
|
||||||
|
public void SetUp()
|
||||||
|
{
|
||||||
|
_workerStorageContract = new
|
||||||
|
WorkerStorageContract(SmallSoftwareDbContext);
|
||||||
|
}
|
||||||
|
[TearDown]
|
||||||
|
public void TearDown()
|
||||||
|
{
|
||||||
|
SmallSoftwareDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Workers\" CASCADE; ");
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenHaveRecords_Test()
|
||||||
|
{
|
||||||
|
var worker =
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 1");
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 2");
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 3");
|
||||||
|
var list = _workerStorageContract.GetList();
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
|
AssertElement(list.First(), worker);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_WhenNoRecords_Test()
|
||||||
|
{
|
||||||
|
var list = _workerStorageContract.GetList();
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Is.Empty);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByPostId_Test()
|
||||||
|
{
|
||||||
|
var postId = Guid.NewGuid().ToString();
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 1",
|
||||||
|
postId);
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 2",
|
||||||
|
postId);
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 3");
|
||||||
|
var list = _workerStorageContract.GetList(postId: postId);
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
Assert.That(list.All(x => x.PostId == postId));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByBirthDate_Test()
|
||||||
|
{
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 1",
|
||||||
|
birthDate: DateTime.UtcNow.AddYears(-25));
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 2",
|
||||||
|
birthDate: DateTime.UtcNow.AddYears(-21));
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 3",
|
||||||
|
birthDate: DateTime.UtcNow.AddYears(-20));
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 4",
|
||||||
|
birthDate: DateTime.UtcNow.AddYears(-19));
|
||||||
|
var list = _workerStorageContract.GetList(fromBirthDate:
|
||||||
|
DateTime.UtcNow.AddYears(-21).AddMinutes(-1), toBirthDate:
|
||||||
|
DateTime.UtcNow.AddYears(-20).AddMinutes(1));
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByEmploymentDate_Test()
|
||||||
|
{
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 1",
|
||||||
|
employmentDate: DateTime.UtcNow.AddDays(-2));
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 2",
|
||||||
|
employmentDate: DateTime.UtcNow.AddDays(-1));
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 3",
|
||||||
|
employmentDate: DateTime.UtcNow.AddDays(1));
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 4",
|
||||||
|
employmentDate: DateTime.UtcNow.AddDays(2));
|
||||||
|
var list = _workerStorageContract.GetList(fromEmploymentDate:
|
||||||
|
DateTime.UtcNow.AddDays(-1).AddMinutes(-1), toEmploymentDate:
|
||||||
|
DateTime.UtcNow.AddDays(1).AddMinutes(1));
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetList_ByAllParameters_Test()
|
||||||
|
{
|
||||||
|
var postId = Guid.NewGuid().ToString();
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 1",
|
||||||
|
postId, birthDate: DateTime.UtcNow.AddYears(-25), employmentDate:
|
||||||
|
DateTime.UtcNow.AddDays(-2));
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 2",
|
||||||
|
postId, birthDate: DateTime.UtcNow.AddYears(-22), employmentDate:
|
||||||
|
DateTime.UtcNow.AddDays(-1));
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 3",
|
||||||
|
postId, birthDate: DateTime.UtcNow.AddYears(-21), employmentDate:
|
||||||
|
DateTime.UtcNow.AddDays(-1));
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString(), "fio 4",
|
||||||
|
birthDate: DateTime.UtcNow.AddYears(-20), employmentDate:
|
||||||
|
DateTime.UtcNow.AddDays(1));
|
||||||
|
var list = _workerStorageContract.GetList(postId: postId,
|
||||||
|
fromBirthDate: DateTime.UtcNow.AddYears(-21).AddMinutes(-1), toBirthDate:
|
||||||
|
DateTime.UtcNow.AddYears(-20).AddMinutes(1), fromEmploymentDate:
|
||||||
|
DateTime.UtcNow.AddDays(-1).AddMinutes(-1), toEmploymentDate:
|
||||||
|
DateTime.UtcNow.AddDays(1).AddMinutes(1));
|
||||||
|
Assert.That(list, Is.Not.Null);
|
||||||
|
Assert.That(list, Has.Count.EqualTo(1));
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||||
|
{
|
||||||
|
var worker =
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
AssertElement(_workerStorageContract.GetElementById(worker.Id),
|
||||||
|
worker);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementById_WhenNoRecord_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_workerStorageContract.GetElementById(Guid.NewGuid().ToString()), Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByFIO_WhenHaveRecord_Test()
|
||||||
|
{
|
||||||
|
var worker =
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
AssertElement(_workerStorageContract.GetElementByFIO(worker.FIO),
|
||||||
|
worker);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_GetElementByFIO_WhenNoRecord_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() => _workerStorageContract.GetElementByFIO("New Fio"),
|
||||||
|
Is.Null);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_Test()
|
||||||
|
{
|
||||||
|
var worker = CreateModel(Guid.NewGuid().ToString());
|
||||||
|
_workerStorageContract.AddElement(worker);
|
||||||
|
AssertElement(GetWorkerFromDatabase(worker.Id), worker);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_AddElement_WhenHaveRecordWithSameId_Test()
|
||||||
|
{
|
||||||
|
var worker = CreateModel(Guid.NewGuid().ToString());
|
||||||
|
InsertWorkerToDatabaseAndReturn(worker.Id);
|
||||||
|
Assert.That(() => _workerStorageContract.AddElement(worker),
|
||||||
|
Throws.TypeOf<ElementExistsException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_Test()
|
||||||
|
{
|
||||||
|
var worker = CreateModel(Guid.NewGuid().ToString(), "New Fio");
|
||||||
|
InsertWorkerToDatabaseAndReturn(worker.Id);
|
||||||
|
_workerStorageContract.UpdElement(worker);
|
||||||
|
AssertElement(GetWorkerFromDatabase(worker.Id), worker);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_workerStorageContract.UpdElement(CreateModel(Guid.NewGuid().ToString())),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_UpdElement_WhenNoRecordWasDeleted_Test()
|
||||||
|
{
|
||||||
|
var worker = CreateModel(Guid.NewGuid().ToString());
|
||||||
|
InsertWorkerToDatabaseAndReturn(worker.Id, isDeleted: true);
|
||||||
|
Assert.That(() => _workerStorageContract.UpdElement(worker),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_Test()
|
||||||
|
{
|
||||||
|
var worker =
|
||||||
|
InsertWorkerToDatabaseAndReturn(Guid.NewGuid().ToString());
|
||||||
|
_workerStorageContract.DelElement(worker.Id);
|
||||||
|
var element = GetWorkerFromDatabase(worker.Id);
|
||||||
|
Assert.That(element, Is.Not.Null);
|
||||||
|
Assert.That(element.IsDeleted);
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenNoRecordWithThisId_Test()
|
||||||
|
{
|
||||||
|
Assert.That(() =>
|
||||||
|
_workerStorageContract.DelElement(Guid.NewGuid().ToString()),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
[Test]
|
||||||
|
public void Try_DelElement_WhenNoRecordWasDeleted_Test()
|
||||||
|
{
|
||||||
|
var worker = CreateModel(Guid.NewGuid().ToString());
|
||||||
|
InsertWorkerToDatabaseAndReturn(worker.Id, isDeleted: true);
|
||||||
|
Assert.That(() => _workerStorageContract.DelElement(worker.Id),
|
||||||
|
Throws.TypeOf<ElementNotFoundException>());
|
||||||
|
}
|
||||||
|
private Worker InsertWorkerToDatabaseAndReturn(string id, string fio =
|
||||||
|
"test", string? postId = null, DateTime? birthDate = null, DateTime?
|
||||||
|
employmentDate = null, bool isDeleted = false)
|
||||||
|
{
|
||||||
|
var worker = new Worker()
|
||||||
|
{
|
||||||
|
Id = id,
|
||||||
|
FIO = fio,
|
||||||
|
PostId = postId ??
|
||||||
|
Guid.NewGuid().ToString(),
|
||||||
|
BirthDate = birthDate ?? DateTime.UtcNow.AddYears(-
|
||||||
|
20),
|
||||||
|
EmploymentDate = employmentDate ?? DateTime.UtcNow,
|
||||||
|
IsDeleted = isDeleted
|
||||||
|
};
|
||||||
|
SmallSoftwareDbContext.Workers.Add(worker);
|
||||||
|
SmallSoftwareDbContext.SaveChanges();
|
||||||
|
return worker;
|
||||||
|
}
|
||||||
|
private static void AssertElement(WorkerDataModel? actual, Worker expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||||
|
Assert.That(actual.PostId, Is.EqualTo(expected.PostId));
|
||||||
|
Assert.That(actual.FIO, Is.EqualTo(expected.FIO));
|
||||||
|
Assert.That(actual.BirthDate, Is.EqualTo(expected.BirthDate));
|
||||||
|
Assert.That(actual.EmploymentDate,
|
||||||
|
Is.EqualTo(expected.EmploymentDate));
|
||||||
|
Assert.That(actual.IsDeleted, Is.EqualTo(expected.IsDeleted));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private static WorkerDataModel CreateModel(string id, string fio = "fio",
|
||||||
|
string? postId = null, DateTime? birthDate = null, DateTime? employmentDate =
|
||||||
|
null, bool isDeleted = false) =>
|
||||||
|
new(id, fio, postId ?? Guid.NewGuid().ToString(), birthDate ??
|
||||||
|
DateTime.UtcNow.AddYears(-20), employmentDate ?? DateTime.UtcNow, isDeleted);
|
||||||
|
private Worker? GetWorkerFromDatabase(string id) =>
|
||||||
|
SmallSoftwareDbContext.Workers.FirstOrDefault(x => x.Id == id);
|
||||||
|
private static void AssertElement(Worker? actual, WorkerDataModel expected)
|
||||||
|
{
|
||||||
|
Assert.That(actual, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||||
|
Assert.That(actual.PostId, Is.EqualTo(expected.PostId));
|
||||||
|
Assert.That(actual.FIO, Is.EqualTo(expected.FIO));
|
||||||
|
Assert.That(actual.BirthDate, Is.EqualTo(expected.BirthDate));
|
||||||
|
Assert.That(actual.EmploymentDate,
|
||||||
|
Is.EqualTo(expected.EmploymentDate));
|
||||||
|
Assert.That(actual.IsDeleted, Is.EqualTo(expected.IsDeleted));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user