forked from slavaxom9k/PIBD-23_Fomichev_V.S._MagicCarpet
salary добавлено. тесты ну как бы позже
This commit is contained in:
@@ -16,10 +16,10 @@ public class PostBusinessLogicContract(IPostStorageContract postStorageContract,
|
|||||||
{
|
{
|
||||||
private readonly ILogger _logger = logger;
|
private readonly ILogger _logger = logger;
|
||||||
private readonly IPostStorageContract _postStorageContract = postStorageContract;
|
private readonly IPostStorageContract _postStorageContract = postStorageContract;
|
||||||
public List<PostDataModel> GetAllPosts(bool onlyActive = true)
|
public List<PostDataModel> GetAllPosts()
|
||||||
{
|
{
|
||||||
_logger.LogInformation("GetAllPosts params: {onlyActive}", onlyActive);
|
_logger.LogInformation("GetAllPosts");
|
||||||
return _postStorageContract.GetList(onlyActive) ?? throw new NullListException();
|
return _postStorageContract.GetList() ?? throw new NullListException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<PostDataModel> GetAllDataOfPost(string postId)
|
public List<PostDataModel> GetAllDataOfPost(string postId)
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
using MagicCarpetContracts.AdapterContracts.OperationResponses;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace MagicCarpetContracts.AdapterContracts;
|
||||||
|
|
||||||
|
public interface ISalaryAdapter
|
||||||
|
{
|
||||||
|
SalaryOperationResponse GetListByPeriod(DateTime fromDate, DateTime toDate);
|
||||||
|
SalaryOperationResponse GetListByPeriodByEmployee(DateTime fromDate, DateTime toDate, string employeeId);
|
||||||
|
SalaryOperationResponse CalculateSalary(DateTime date);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
using MagicCarpetContracts.Infrastructure;
|
||||||
|
using MagicCarpetContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace MagicCarpetContracts.AdapterContracts.OperationResponses;
|
||||||
|
|
||||||
|
public class SalaryOperationResponse : OperationResponse
|
||||||
|
{
|
||||||
|
public static SalaryOperationResponse OK(List<SalaryViewModel> data) => OK<SalaryOperationResponse, List<SalaryViewModel>>(data);
|
||||||
|
public static SalaryOperationResponse NoContent() => NoContent<SalaryOperationResponse>();
|
||||||
|
public static SalaryOperationResponse NotFound(string message) => NotFound<SalaryOperationResponse>(message);
|
||||||
|
public static SalaryOperationResponse BadRequest(string message) => BadRequest<SalaryOperationResponse>(message);
|
||||||
|
public static SalaryOperationResponse InternalServerError(string message) => InternalServerError<SalaryOperationResponse>(message);
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace MagicCarpetContracts.BindingModels;
|
||||||
|
|
||||||
|
public class SalaryBindingModel
|
||||||
|
{
|
||||||
|
public string? Id { get; set; }
|
||||||
|
public string? EmployeeId { get; set; }
|
||||||
|
public DateTime SalaryDate { get; set; }
|
||||||
|
public double EmployeeSalary { get; set; }
|
||||||
|
}
|
||||||
@@ -11,12 +11,20 @@ namespace MagicCarpetContracts.DataModels;
|
|||||||
|
|
||||||
public class SalaryDataModel(string employeeId, DateTime salaryDate, double employeeSalary) : IValidation
|
public class SalaryDataModel(string employeeId, DateTime salaryDate, double employeeSalary) : IValidation
|
||||||
{
|
{
|
||||||
|
private readonly EmployeeDataModel? _employee;
|
||||||
public string EmployeeId { get; private set; } = employeeId;
|
public string EmployeeId { get; private set; } = employeeId;
|
||||||
|
|
||||||
public DateTime SalaryDate { get; private set; } = salaryDate;
|
public DateTime SalaryDate { get; private set; } = salaryDate;
|
||||||
|
|
||||||
public double Salary { get; private set; } = employeeSalary;
|
public double Salary { get; private set; } = employeeSalary;
|
||||||
|
|
||||||
|
public string EmployeeFIO => _employee?.FIO ?? string.Empty;
|
||||||
|
|
||||||
|
public SalaryDataModel(string employeeId, DateTime salaryDate, double employeeSalary, EmployeeDataModel employee) : this(employeeId, salaryDate, employeeSalary)
|
||||||
|
{
|
||||||
|
_employee = employee;
|
||||||
|
}
|
||||||
|
|
||||||
public void Validate()
|
public void Validate()
|
||||||
{
|
{
|
||||||
if (EmployeeId.IsEmpty())
|
if (EmployeeId.IsEmpty())
|
||||||
|
|||||||
@@ -10,25 +10,78 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace MagicCarpetContracts.DataModels;
|
namespace MagicCarpetContracts.DataModels;
|
||||||
|
|
||||||
public class SaleDataModel(string id, string employeeId, string? clientId, double sum, DiscountType discountType,
|
public class SaleDataModel : IValidation
|
||||||
double discount, bool isCancel, List<SaleTourDataModel> saleTours) : IValidation
|
|
||||||
{
|
{
|
||||||
public string Id { get; private set; } = id;
|
private readonly ClientDataModel? _client;
|
||||||
|
|
||||||
public string EmployeeId { get; private set; } = employeeId;
|
private readonly EmployeeDataModel? _employee;
|
||||||
|
|
||||||
public string? ClientId { get; private set; } = clientId;
|
public string Id { get; private set; }
|
||||||
|
|
||||||
|
public string EmployeeId { get; private set; }
|
||||||
|
|
||||||
|
public string? ClientId { get; private set; }
|
||||||
|
|
||||||
public DateTime SaleDate { get; private set; } = DateTime.UtcNow;
|
public DateTime SaleDate { get; private set; } = DateTime.UtcNow;
|
||||||
public double Sum { get; private set; } = sum;
|
|
||||||
|
|
||||||
public DiscountType DiscountType { get; private set; } = discountType;
|
public double Sum { get; private set; }
|
||||||
|
|
||||||
public double Discount { get; private set; } = discount;
|
public DiscountType DiscountType { get; private set; }
|
||||||
|
|
||||||
public bool IsCancel { get; private set; } = isCancel;
|
public double Discount { get; private set; }
|
||||||
|
|
||||||
public List<SaleTourDataModel> Tours { get; private set; } = saleTours;
|
public bool IsCancel { get; private set; }
|
||||||
|
|
||||||
|
public List<SaleTourDataModel>? Tours { get; private set; }
|
||||||
|
|
||||||
|
public string ClientFIO => _client?.FIO ?? string.Empty;
|
||||||
|
|
||||||
|
public string EmployeeFIO => _employee?.FIO ?? string.Empty;
|
||||||
|
|
||||||
|
public SaleDataModel(string id, string employeeId, string? clientId, DiscountType discountType, bool isCancel, List<SaleTourDataModel> saleTours)
|
||||||
|
{
|
||||||
|
Id = id;
|
||||||
|
EmployeeId = employeeId;
|
||||||
|
ClientId = clientId;
|
||||||
|
DiscountType = discountType;
|
||||||
|
IsCancel = isCancel;
|
||||||
|
Tours = saleTours;
|
||||||
|
var percent = 0.0;
|
||||||
|
foreach (DiscountType elem in Enum.GetValues<DiscountType>())
|
||||||
|
{
|
||||||
|
if ((elem & discountType) != 0)
|
||||||
|
{
|
||||||
|
switch (elem)
|
||||||
|
{
|
||||||
|
case DiscountType.None:
|
||||||
|
break;
|
||||||
|
case DiscountType.OnSale:
|
||||||
|
percent += 0.1;
|
||||||
|
break;
|
||||||
|
case DiscountType.RegularCustomer:
|
||||||
|
percent += 0.5;
|
||||||
|
break;
|
||||||
|
case DiscountType.Certificate:
|
||||||
|
percent += 0.3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Sum = Tours?.Sum(x => x.Price * x.Count) ?? 0;
|
||||||
|
Discount = Sum * percent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SaleDataModel(string id, string employeeId, string? clientId, double sum, DiscountType discountType, double discount, bool isCancel,
|
||||||
|
List<SaleTourDataModel> saleTours, EmployeeDataModel employee, ClientDataModel? client) : this(id, employeeId, clientId, discountType, isCancel, saleTours)
|
||||||
|
{
|
||||||
|
Sum = sum;
|
||||||
|
Discount = discount;
|
||||||
|
_employee = employee;
|
||||||
|
_client = client;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SaleDataModel(string id, string employeeId, string? clientId, int discountType,
|
||||||
|
List<SaleTourDataModel> tours) : this(id, employeeId, clientId, (DiscountType)discountType, false, tours) { }
|
||||||
|
|
||||||
public void Validate()
|
public void Validate()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace MagicCarpetContracts.ViewModels;
|
||||||
|
|
||||||
|
public class SalaryViewModel
|
||||||
|
{
|
||||||
|
public required string EmployeeId { get; set; }
|
||||||
|
public required string EmployeeFIO { get; set; }
|
||||||
|
public DateTime SalaryDate { get; set; }
|
||||||
|
public double Salary { get; set; }
|
||||||
|
}
|
||||||
@@ -38,61 +38,53 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
var listOriginal = new List<PostDataModel>()
|
var listOriginal = new List<PostDataModel>()
|
||||||
{
|
{
|
||||||
new(Guid.NewGuid().ToString(),"name 1", PostType.Manager, 10, true, DateTime.UtcNow),
|
new(Guid.NewGuid().ToString(),"name 1", PostType.Manager, 10),
|
||||||
new(Guid.NewGuid().ToString(), "name 2", PostType.Manager, 10, false, DateTime.UtcNow),
|
new(Guid.NewGuid().ToString(), "name 2", PostType.Manager, 10),
|
||||||
new(Guid.NewGuid().ToString(), "name 3", PostType.Manager, 10, true, DateTime.UtcNow),
|
new(Guid.NewGuid().ToString(), "name 3", PostType.Manager, 10),
|
||||||
};
|
};
|
||||||
_postStorageContract.Setup(x => x.GetList(It.IsAny<bool>())).Returns(listOriginal);
|
_postStorageContract.Setup(x => x.GetList()).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 => x.GetList(It.IsAny<bool>())).Returns([]);
|
_postStorageContract.Setup(x => x.GetList()).Returns([]);
|
||||||
//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, Has.Count.EqualTo(0));
|
||||||
Assert.That(listOnlyActive, Has.Count.EqualTo(0));
|
|
||||||
Assert.That(listAll, Has.Count.EqualTo(0));
|
|
||||||
});
|
});
|
||||||
_postStorageContract.Verify(x => x.GetList(It.IsAny<bool>()), Times.Exactly(2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void GetAllPosts_ReturnNull_ThrowException_Test()
|
public void GetAllPosts_ReturnNull_ThrowException_Test()
|
||||||
{
|
{
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.GetAllPosts(It.IsAny<bool>()), Throws.TypeOf<NullListException>());
|
Assert.That(() => _postBusinessLogicContract.GetAllPosts(), Throws.TypeOf<NullListException>());
|
||||||
_postStorageContract.Verify(x => x.GetList(It.IsAny<bool>()), Times.Once);
|
_postStorageContract.Verify(x => x.GetList(), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void GetAllPosts_StorageThrowError_ThrowException_Test()
|
public void GetAllPosts_StorageThrowError_ThrowException_Test()
|
||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
_postStorageContract.Setup(x => x.GetList(It.IsAny<bool>())).Throws(new StorageException(new InvalidOperationException()));
|
_postStorageContract.Setup(x => x.GetList()).Throws(new StorageException(new InvalidOperationException()));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.GetAllPosts(It.IsAny<bool>()), Throws.TypeOf<StorageException>());
|
Assert.That(() => _postBusinessLogicContract.GetAllPosts(), Throws.TypeOf<StorageException>());
|
||||||
_postStorageContract.Verify(x => x.GetList(It.IsAny<bool>()), Times.Once);
|
_postStorageContract.Verify(x => x.GetList(), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@@ -102,8 +94,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.Manager, 10, true, DateTime.UtcNow),
|
new(postId, "name 1", PostType.Manager, 10),
|
||||||
new(postId, "name 2", PostType.Manager, 10, false, DateTime.UtcNow)
|
new(postId, "name 2", PostType.Manager, 10)
|
||||||
};
|
};
|
||||||
_postStorageContract.Setup(x => x.GetPostWithHistory(It.IsAny<string>())).Returns(listOriginal);
|
_postStorageContract.Setup(x => x.GetPostWithHistory(It.IsAny<string>())).Returns(listOriginal);
|
||||||
//Act
|
//Act
|
||||||
@@ -167,7 +159,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var id = Guid.NewGuid().ToString();
|
var id = Guid.NewGuid().ToString();
|
||||||
var record = new PostDataModel(id, "name", PostType.Manager, 10, true, DateTime.UtcNow);
|
var record = new PostDataModel(id, "name", PostType.Manager, 10);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(id)).Returns(record);
|
_postStorageContract.Setup(x => x.GetElementById(id)).Returns(record);
|
||||||
//Act
|
//Act
|
||||||
var element = _postBusinessLogicContract.GetPostByData(id);
|
var element = _postBusinessLogicContract.GetPostByData(id);
|
||||||
@@ -182,7 +174,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var postName = "name";
|
var postName = "name";
|
||||||
var record = new PostDataModel(Guid.NewGuid().ToString(), postName, PostType.Manager, 10, true, DateTime.UtcNow);
|
var record = new PostDataModel(Guid.NewGuid().ToString(), postName, PostType.Manager, 10);
|
||||||
_postStorageContract.Setup(x => x.GetElementByName(postName)).Returns(record);
|
_postStorageContract.Setup(x => x.GetElementByName(postName)).Returns(record);
|
||||||
//Act
|
//Act
|
||||||
var element = _postBusinessLogicContract.GetPostByData(postName);
|
var element = _postBusinessLogicContract.GetPostByData(postName);
|
||||||
@@ -238,12 +230,11 @@ internal class PostBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var flag = false;
|
var flag = false;
|
||||||
var record = new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 10, true, DateTime.UtcNow.AddDays(-1));
|
var record = new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 10);
|
||||||
_postStorageContract.Setup(x => x.AddElement(It.IsAny<PostDataModel>()))
|
_postStorageContract.Setup(x => x.AddElement(It.IsAny<PostDataModel>()))
|
||||||
.Callback((PostDataModel x) =>
|
.Callback((PostDataModel x) =>
|
||||||
{
|
{
|
||||||
flag = x.Id == record.Id && x.PostName == record.PostName && x.PostType == record.PostType && x.Salary == record.Salary &&
|
flag = x.Id == record.Id && x.PostName == record.PostName && x.PostType == record.PostType && x.Salary == record.Salary;
|
||||||
x.ChangeDate == record.ChangeDate;
|
|
||||||
});
|
});
|
||||||
//Act
|
//Act
|
||||||
_postBusinessLogicContract.InsertPost(record);
|
_postBusinessLogicContract.InsertPost(record);
|
||||||
@@ -258,7 +249,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
_postStorageContract.Setup(x => x.AddElement(It.IsAny<PostDataModel>())).Throws(new ElementExistsException("Data", "Data"));
|
_postStorageContract.Setup(x => x.AddElement(It.IsAny<PostDataModel>())).Throws(new ElementExistsException("Data", "Data"));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.InsertPost(new(Guid.NewGuid().ToString(), "name", PostType.Manager, 10, true, DateTime.UtcNow)), Throws.TypeOf<ElementExistsException>());
|
Assert.That(() => _postBusinessLogicContract.InsertPost(new(Guid.NewGuid().ToString(), "name", PostType.Manager, 10)), Throws.TypeOf<ElementExistsException>());
|
||||||
_postStorageContract.Verify(x => x.AddElement(It.IsAny<PostDataModel>()), Times.Once);
|
_postStorageContract.Verify(x => x.AddElement(It.IsAny<PostDataModel>()), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -274,7 +265,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
public void InsertPost_InvalidRecord_ThrowException_Test()
|
public void InsertPost_InvalidRecord_ThrowException_Test()
|
||||||
{
|
{
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.InsertPost(new PostDataModel("id", "name", PostType.Manager, 10, true, DateTime.UtcNow)), Throws.TypeOf<ValidationException>());
|
Assert.That(() => _postBusinessLogicContract.InsertPost(new PostDataModel("id", "name", PostType.Manager, 10)), Throws.TypeOf<ValidationException>());
|
||||||
_postStorageContract.Verify(x => x.AddElement(It.IsAny<PostDataModel>()), Times.Never);
|
_postStorageContract.Verify(x => x.AddElement(It.IsAny<PostDataModel>()), Times.Never);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -284,7 +275,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
_postStorageContract.Setup(x => x.AddElement(It.IsAny<PostDataModel>())).Throws(new StorageException(new InvalidOperationException()));
|
_postStorageContract.Setup(x => x.AddElement(It.IsAny<PostDataModel>())).Throws(new StorageException(new InvalidOperationException()));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.InsertPost(new(Guid.NewGuid().ToString(), "name", PostType.Manager, 10, true, DateTime.UtcNow)), Throws.TypeOf<StorageException>());
|
Assert.That(() => _postBusinessLogicContract.InsertPost(new(Guid.NewGuid().ToString(), "name", PostType.Manager, 10)), Throws.TypeOf<StorageException>());
|
||||||
_postStorageContract.Verify(x => x.AddElement(It.IsAny<PostDataModel>()), Times.Once);
|
_postStorageContract.Verify(x => x.AddElement(It.IsAny<PostDataModel>()), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,12 +284,11 @@ internal class PostBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var flag = false;
|
var flag = false;
|
||||||
var record = new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 10, true, DateTime.UtcNow.AddDays(-1));
|
var record = new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 10);
|
||||||
_postStorageContract.Setup(x => x.UpdElement(It.IsAny<PostDataModel>()))
|
_postStorageContract.Setup(x => x.UpdElement(It.IsAny<PostDataModel>()))
|
||||||
.Callback((PostDataModel x) =>
|
.Callback((PostDataModel x) =>
|
||||||
{
|
{
|
||||||
flag = x.Id == record.Id && x.PostName == record.PostName && x.PostType == record.PostType && x.Salary == record.Salary &&
|
flag = x.Id == record.Id && x.PostName == record.PostName && x.PostType == record.PostType && x.Salary == record.Salary;
|
||||||
x.ChangeDate == record.ChangeDate;
|
|
||||||
});
|
});
|
||||||
//Act
|
//Act
|
||||||
_postBusinessLogicContract.UpdatePost(record);
|
_postBusinessLogicContract.UpdatePost(record);
|
||||||
@@ -313,7 +303,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
_postStorageContract.Setup(x => x.UpdElement(It.IsAny<PostDataModel>())).Throws(new ElementNotFoundException(""));
|
_postStorageContract.Setup(x => x.UpdElement(It.IsAny<PostDataModel>())).Throws(new ElementNotFoundException(""));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "name", PostType.Manager, 10, true, DateTime.UtcNow)), Throws.TypeOf<ElementNotFoundException>());
|
Assert.That(() => _postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "name", PostType.Manager, 10)), Throws.TypeOf<ElementNotFoundException>());
|
||||||
_postStorageContract.Verify(x => x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
_postStorageContract.Verify(x => x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -323,7 +313,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
_postStorageContract.Setup(x => x.UpdElement(It.IsAny<PostDataModel>())).Throws(new ElementExistsException("Data", "Data"));
|
_postStorageContract.Setup(x => x.UpdElement(It.IsAny<PostDataModel>())).Throws(new ElementExistsException("Data", "Data"));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "anme", PostType.Manager, 10, true, DateTime.UtcNow)), Throws.TypeOf<ElementExistsException>());
|
Assert.That(() => _postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "anme", PostType.Manager, 10)), Throws.TypeOf<ElementExistsException>());
|
||||||
_postStorageContract.Verify(x => x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
_postStorageContract.Verify(x => x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -339,7 +329,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
public void UpdatePost_InvalidRecord_ThrowException_Test()
|
public void UpdatePost_InvalidRecord_ThrowException_Test()
|
||||||
{
|
{
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.UpdatePost(new PostDataModel("id", "name", PostType.Manager, 10, true, DateTime.UtcNow)), Throws.TypeOf<ValidationException>());
|
Assert.That(() => _postBusinessLogicContract.UpdatePost(new PostDataModel("id", "name", PostType.Manager, 10)), Throws.TypeOf<ValidationException>());
|
||||||
_postStorageContract.Verify(x => x.UpdElement(It.IsAny<PostDataModel>()), Times.Never);
|
_postStorageContract.Verify(x => x.UpdElement(It.IsAny<PostDataModel>()), Times.Never);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -349,7 +339,7 @@ internal class PostBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
_postStorageContract.Setup(x => x.UpdElement(It.IsAny<PostDataModel>())).Throws(new StorageException(new InvalidOperationException()));
|
_postStorageContract.Setup(x => x.UpdElement(It.IsAny<PostDataModel>())).Throws(new StorageException(new InvalidOperationException()));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "name", PostType.Manager, 10, true, DateTime.UtcNow)), Throws.TypeOf<StorageException>());
|
Assert.That(() => _postBusinessLogicContract.UpdatePost(new(Guid.NewGuid().ToString(), "name", PostType.Manager, 10)), Throws.TypeOf<StorageException>());
|
||||||
_postStorageContract.Verify(x => x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
_postStorageContract.Verify(x => x.UpdElement(It.IsAny<PostDataModel>()), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
public void GetAllSalariesByEmployee_EmployeeIdIsNotGuid_ThrowException_Test()
|
public void GetAllSalariesByEmployee_EmployeeIdIsNotGuid_ThrowException_Test()
|
||||||
{
|
{
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _salaryBusinessLogicContract.GetAllSalariesByPeriodByEmployee(DateTime.UtcNow, DateTime.UtcNow.AddDays(1), "workerId"), Throws.TypeOf<ValidationException>());
|
Assert.That(() => _salaryBusinessLogicContract.GetAllSalariesByPeriodByEmployee(DateTime.UtcNow, DateTime.UtcNow.AddDays(1), "employeeId"), Throws.TypeOf<ValidationException>());
|
||||||
_salaryStorageContract.Verify(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>()), Times.Never);
|
_salaryStorageContract.Verify(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>()), Times.Never);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,12 +191,12 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var employeeId = Guid.NewGuid().ToString();
|
var employeeId = Guid.NewGuid().ToString();
|
||||||
var saleSum = 200.0;
|
var saleSum = 1.2 * 5;
|
||||||
var postSalary = 2000.0;
|
var postSalary = 2000.0;
|
||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||||
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employeeId, null, saleSum, DiscountType.None, 0, false, [])]);
|
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employeeId, null, DiscountType.None, false, [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 1.2)])]);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, postSalary, true, DateTime.UtcNow));
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, postSalary));
|
||||||
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
.Returns([new EmployeeDataModel(employeeId, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
.Returns([new EmployeeDataModel(employeeId, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
||||||
var sum = 0.0;
|
var sum = 0.0;
|
||||||
@@ -213,7 +213,7 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CalculateSalaryByMounth_WithSeveralWorkers_Test()
|
public void CalculateSalaryByMounth_WithSeveralEmployees_Test()
|
||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var employee1Id = Guid.NewGuid().ToString();
|
var employee1Id = Guid.NewGuid().ToString();
|
||||||
@@ -225,13 +225,13 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
new(employee3Id, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)
|
new(employee3Id, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)
|
||||||
};
|
};
|
||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||||
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employee1Id, null, 1, DiscountType.None, 0, false, []),
|
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employee1Id, null, DiscountType.None, false, []),
|
||||||
new SaleDataModel(Guid.NewGuid().ToString(), employee1Id, null, 1, DiscountType.None, 0, false, []),
|
new SaleDataModel(Guid.NewGuid().ToString(), employee1Id, null, DiscountType.None, false, []),
|
||||||
new SaleDataModel(Guid.NewGuid().ToString(), employee2Id, null, 1, DiscountType.None, 0, false, []),
|
new SaleDataModel(Guid.NewGuid().ToString(), employee2Id, null, DiscountType.None, false, []),
|
||||||
new SaleDataModel(Guid.NewGuid().ToString(), employee3Id, null, 1, DiscountType.None, 0, false, []),
|
new SaleDataModel(Guid.NewGuid().ToString(), employee3Id, null, DiscountType.None, false, []),
|
||||||
new SaleDataModel(Guid.NewGuid().ToString(), employee3Id, null, 1, DiscountType.None, 0, false, [])]);
|
new SaleDataModel(Guid.NewGuid().ToString(), employee3Id, null, DiscountType.None, false, [])]);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 2000, true, DateTime.UtcNow));
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 2000));
|
||||||
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
.Returns(list);
|
.Returns(list);
|
||||||
//Act
|
//Act
|
||||||
@@ -241,7 +241,7 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CalculateSalaryByMounth_WithoutSalesByWorker_Test()
|
public void CalculateSalaryByMounth_WithoutSalesByEmployee_Test()
|
||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var postSalary = 2000.0;
|
var postSalary = 2000.0;
|
||||||
@@ -249,7 +249,7 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||||
.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", PostType.Manager, postSalary, true, DateTime.UtcNow));
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, postSalary));
|
||||||
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
.Returns([new EmployeeDataModel(employeeId, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
.Returns([new EmployeeDataModel(employeeId, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
||||||
var sum = 0.0;
|
var sum = 0.0;
|
||||||
@@ -271,7 +271,7 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
var employeeId = Guid.NewGuid().ToString();
|
var employeeId = 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", PostType.Manager, 2000, true, DateTime.UtcNow));
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 2000));
|
||||||
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
.Returns([new EmployeeDataModel(employeeId, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
.Returns([new EmployeeDataModel(employeeId, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
@@ -284,22 +284,22 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
var employeeId = Guid.NewGuid().ToString();
|
var employeeId = Guid.NewGuid().ToString();
|
||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||||
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employeeId, null, 200, DiscountType.None, 0, false, [])]);
|
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employeeId, null, DiscountType.None, false, [])]);
|
||||||
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
.Returns([new EmployeeDataModel(employeeId, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
.Returns([new EmployeeDataModel(employeeId, "Test", "abc@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _salaryBusinessLogicContract.CalculateSalaryByMounth(DateTime.UtcNow), Throws.TypeOf<NullListException>());
|
Assert.That(() => _salaryBusinessLogicContract.CalculateSalaryByMounth(DateTime.UtcNow), Throws.TypeOf<NullListException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CalculateSalaryByMounth_WorkerStorageReturnNull_ThrowException_Test()
|
public void CalculateSalaryByMounth_EmployeeStorageReturnNull_ThrowException_Test()
|
||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var employeeId = Guid.NewGuid().ToString();
|
var employeeId = Guid.NewGuid().ToString();
|
||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||||
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employeeId, null, 200, DiscountType.None, 0, false, [])]);
|
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employeeId, null, DiscountType.None, false, [])]);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 2000, true, DateTime.UtcNow));
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 2000));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _salaryBusinessLogicContract.CalculateSalaryByMounth(DateTime.UtcNow), Throws.TypeOf<NullListException>());
|
Assert.That(() => _salaryBusinessLogicContract.CalculateSalaryByMounth(DateTime.UtcNow), Throws.TypeOf<NullListException>());
|
||||||
}
|
}
|
||||||
@@ -312,7 +312,7 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||||
.Throws(new StorageException(new InvalidOperationException()));
|
.Throws(new StorageException(new InvalidOperationException()));
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 2000, true, DateTime.UtcNow));
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 2000));
|
||||||
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
.Returns([new EmployeeDataModel(employeeId, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
.Returns([new EmployeeDataModel(employeeId, "Test", "123@gmail.com", Guid.NewGuid().ToString(), DateTime.UtcNow, DateTime.UtcNow, false)]);
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
@@ -325,7 +325,7 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
//Arrange
|
//Arrange
|
||||||
var employeeId = Guid.NewGuid().ToString();
|
var employeeId = Guid.NewGuid().ToString();
|
||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||||
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employeeId, null, 200, DiscountType.None, 0, false, [])]);
|
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employeeId, null, DiscountType.None, false, [])]);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Throws(new StorageException(new InvalidOperationException()));
|
.Throws(new StorageException(new InvalidOperationException()));
|
||||||
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
@@ -335,14 +335,14 @@ internal class SalaryBusinessLogicContractTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CalculateSalaryByMounth_WorkerStorageThrowException_ThrowException_Test()
|
public void CalculateSalaryByMounth_EmployeeStorageThrowException_ThrowException_Test()
|
||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var employeeId = Guid.NewGuid().ToString();
|
var employeeId = Guid.NewGuid().ToString();
|
||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime>(), It.IsAny<DateTime>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||||
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employeeId, null, 200, DiscountType.None, 0, false, [])]);
|
.Returns([new SaleDataModel(Guid.NewGuid().ToString(), employeeId, null, DiscountType.None, false, [])]);
|
||||||
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
_postStorageContract.Setup(x => x.GetElementById(It.IsAny<string>()))
|
||||||
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 2000, true, DateTime.UtcNow));
|
.Returns(new PostDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 2000));
|
||||||
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()))
|
||||||
.Throws(new StorageException(new InvalidOperationException()));
|
.Throws(new StorageException(new InvalidOperationException()));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ internal class SaleBusinessLogicContractTests
|
|||||||
var date = DateTime.UtcNow;
|
var date = DateTime.UtcNow;
|
||||||
var listOriginal = new List<SaleDataModel>()
|
var listOriginal = new List<SaleDataModel>()
|
||||||
{
|
{
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false,
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false,
|
||||||
[new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]),
|
[new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 1.2)]),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false, []),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false, []),
|
||||||
};
|
};
|
||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(listOriginal);
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(listOriginal);
|
||||||
//Act
|
//Act
|
||||||
@@ -103,10 +103,10 @@ internal class SaleBusinessLogicContractTests
|
|||||||
var employeeId = Guid.NewGuid().ToString();
|
var employeeId = Guid.NewGuid().ToString();
|
||||||
var listOriginal = new List<SaleDataModel>()
|
var listOriginal = new List<SaleDataModel>()
|
||||||
{
|
{
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false,
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false,
|
||||||
[new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]),
|
[new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 1.2)]),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false, []),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false, []),
|
||||||
};
|
};
|
||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(listOriginal);
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(listOriginal);
|
||||||
//Act
|
//Act
|
||||||
@@ -184,10 +184,10 @@ internal class SaleBusinessLogicContractTests
|
|||||||
var clientId = Guid.NewGuid().ToString();
|
var clientId = Guid.NewGuid().ToString();
|
||||||
var listOriginal = new List<SaleDataModel>()
|
var listOriginal = new List<SaleDataModel>()
|
||||||
{
|
{
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false,
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false,
|
||||||
[new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]),
|
[new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 1.2)]),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false, []),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false, []),
|
||||||
};
|
};
|
||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(listOriginal);
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(listOriginal);
|
||||||
//Act
|
//Act
|
||||||
@@ -265,10 +265,10 @@ internal class SaleBusinessLogicContractTests
|
|||||||
var cocktailId = Guid.NewGuid().ToString();
|
var cocktailId = Guid.NewGuid().ToString();
|
||||||
var listOriginal = new List<SaleDataModel>()
|
var listOriginal = new List<SaleDataModel>()
|
||||||
{
|
{
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false,
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false,
|
||||||
[new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]),
|
[new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 1.2)]),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false, []),
|
||||||
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false, []),
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), null, DiscountType.None, false, []),
|
||||||
};
|
};
|
||||||
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(listOriginal);
|
_saleStorageContract.Setup(x => x.GetList(It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(listOriginal);
|
||||||
//Act
|
//Act
|
||||||
@@ -343,8 +343,8 @@ internal class SaleBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var id = Guid.NewGuid().ToString();
|
var id = Guid.NewGuid().ToString();
|
||||||
var record = new SaleDataModel(id, Guid.NewGuid().ToString(), null, 10, DiscountType.None, 0, false,
|
var record = new SaleDataModel(id, Guid.NewGuid().ToString(), null, DiscountType.None, false,
|
||||||
[new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]);
|
[new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 1.2)]);
|
||||||
_saleStorageContract.Setup(x => x.GetElementById(id)).Returns(record);
|
_saleStorageContract.Setup(x => x.GetElementById(id)).Returns(record);
|
||||||
//Act
|
//Act
|
||||||
var element = _saleBusinessLogicContract.GetSaleByData(id);
|
var element = _saleBusinessLogicContract.GetSaleByData(id);
|
||||||
@@ -394,8 +394,8 @@ internal class SaleBusinessLogicContractTests
|
|||||||
{
|
{
|
||||||
//Arrange
|
//Arrange
|
||||||
var flag = false;
|
var flag = false;
|
||||||
var record = new SaleDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.None, 10,
|
var record = new SaleDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DiscountType.None,
|
||||||
false, [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)]);
|
false, [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 1.2)]);
|
||||||
_saleStorageContract.Setup(x => x.AddElement(It.IsAny<SaleDataModel>()))
|
_saleStorageContract.Setup(x => x.AddElement(It.IsAny<SaleDataModel>()))
|
||||||
.Callback((SaleDataModel x) =>
|
.Callback((SaleDataModel x) =>
|
||||||
{
|
{
|
||||||
@@ -420,7 +420,7 @@ internal class SaleBusinessLogicContractTests
|
|||||||
_saleStorageContract.Setup(x => x.AddElement(It.IsAny<SaleDataModel>())).Throws(new ElementExistsException("Data", "Data"));
|
_saleStorageContract.Setup(x => x.AddElement(It.IsAny<SaleDataModel>())).Throws(new ElementExistsException("Data", "Data"));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _saleBusinessLogicContract.InsertSale(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(),
|
Assert.That(() => _saleBusinessLogicContract.InsertSale(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(),
|
||||||
Guid.NewGuid().ToString(), 10, DiscountType.None, 10, false, [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf<ElementExistsException>());
|
Guid.NewGuid().ToString(), DiscountType.None, false, [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 1.2)])), Throws.TypeOf<ElementExistsException>());
|
||||||
_saleStorageContract.Verify(x => x.AddElement(It.IsAny<SaleDataModel>()), Times.Once);
|
_saleStorageContract.Verify(x => x.AddElement(It.IsAny<SaleDataModel>()), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -436,7 +436,7 @@ internal class SaleBusinessLogicContractTests
|
|||||||
public void InsertSale_InvalidRecord_ThrowException_Test()
|
public void InsertSale_InvalidRecord_ThrowException_Test()
|
||||||
{
|
{
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _saleBusinessLogicContract.InsertSale(new SaleDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.None, 10, false, [])), Throws.TypeOf<ValidationException>());
|
Assert.That(() => _saleBusinessLogicContract.InsertSale(new SaleDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DiscountType.None, false, [])), Throws.TypeOf<ValidationException>());
|
||||||
_saleStorageContract.Verify(x => x.AddElement(It.IsAny<SaleDataModel>()), Times.Never);
|
_saleStorageContract.Verify(x => x.AddElement(It.IsAny<SaleDataModel>()), Times.Never);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -447,7 +447,7 @@ internal class SaleBusinessLogicContractTests
|
|||||||
_saleStorageContract.Setup(x => x.AddElement(It.IsAny<SaleDataModel>())).Throws(new StorageException(new InvalidOperationException()));
|
_saleStorageContract.Setup(x => x.AddElement(It.IsAny<SaleDataModel>())).Throws(new StorageException(new InvalidOperationException()));
|
||||||
//Act&Assert
|
//Act&Assert
|
||||||
Assert.That(() => _saleBusinessLogicContract.InsertSale(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(),
|
Assert.That(() => _saleBusinessLogicContract.InsertSale(new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(),
|
||||||
Guid.NewGuid().ToString(), 10, DiscountType.None, 10, false, [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5)])), Throws.TypeOf<StorageException>());
|
Guid.NewGuid().ToString(), DiscountType.None, false, [new SaleTourDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 5, 1.2)])), Throws.TypeOf<StorageException>());
|
||||||
_saleStorageContract.Verify(x => x.AddElement(It.IsAny<SaleDataModel>()), Times.Once);
|
_saleStorageContract.Verify(x => x.AddElement(It.IsAny<SaleDataModel>()), Times.Once);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,41 +14,41 @@ internal class PostDataModelTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void IdIsNullOrEmptyTest()
|
public void IdIsNullOrEmptyTest()
|
||||||
{
|
{
|
||||||
var post = CreateDataModel(null, "name", PostType.Manager, 10, true, DateTime.UtcNow);
|
var post = CreateDataModel(null, "name", PostType.Manager, 10);
|
||||||
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
post = CreateDataModel(string.Empty, "name", PostType.Manager, 10, true, DateTime.UtcNow);
|
post = CreateDataModel(string.Empty, "name", PostType.Manager, 10);
|
||||||
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void IdIsNotGuidTest()
|
public void IdIsNotGuidTest()
|
||||||
{
|
{
|
||||||
var post = CreateDataModel("id", "name", PostType.Manager, 10, true, DateTime.UtcNow);
|
var post = CreateDataModel("id", "name", PostType.Manager, 10);
|
||||||
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void PostNameIsEmptyTest()
|
public void PostNameIsEmptyTest()
|
||||||
{
|
{
|
||||||
var manufacturer = CreateDataModel(Guid.NewGuid().ToString(), null, PostType.Manager, 10, true, DateTime.UtcNow);
|
var manufacturer = CreateDataModel(Guid.NewGuid().ToString(), null, PostType.Manager, 10);
|
||||||
Assert.That(() => manufacturer.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => manufacturer.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
manufacturer = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, PostType.Manager, 10, true, DateTime.UtcNow);
|
manufacturer = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, PostType.Manager, 10);
|
||||||
Assert.That(() => manufacturer.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => manufacturer.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void PostTypeIsNoneTest()
|
public void PostTypeIsNoneTest()
|
||||||
{
|
{
|
||||||
var post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.None, 10, true, DateTime.UtcNow);
|
var post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.None, 10);
|
||||||
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void SalaryIsLessOrZeroTest()
|
public void SalaryIsLessOrZeroTest()
|
||||||
{
|
{
|
||||||
var post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 0, true, DateTime.UtcNow);
|
var post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, 0);
|
||||||
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, -10, true, DateTime.UtcNow);
|
post = CreateDataModel(Guid.NewGuid().ToString(), "name", PostType.Manager, -10);
|
||||||
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => post.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,13 +56,10 @@ internal class PostDataModelTests
|
|||||||
public void AllFieldsIsCorrectTest()
|
public void AllFieldsIsCorrectTest()
|
||||||
{
|
{
|
||||||
var postId = Guid.NewGuid().ToString();
|
var postId = Guid.NewGuid().ToString();
|
||||||
var postPostId = Guid.NewGuid().ToString();
|
|
||||||
var postName = "name";
|
var postName = "name";
|
||||||
var postType = PostType.Manager;
|
var postType = PostType.Manager;
|
||||||
var salary = 10;
|
var salary = 10;
|
||||||
var isActual = false;
|
var post = CreateDataModel(postId, postName, postType, salary);
|
||||||
var changeDate = DateTime.UtcNow.AddDays(-1);
|
|
||||||
var post = CreateDataModel(postId, postName, postType, salary, isActual, changeDate);
|
|
||||||
Assert.That(() => post.Validate(), Throws.Nothing);
|
Assert.That(() => post.Validate(), Throws.Nothing);
|
||||||
Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
{
|
{
|
||||||
@@ -70,11 +67,9 @@ 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, string? postName, PostType postType, double salary, bool isActual, DateTime changeDate) =>
|
private static PostDataModel CreateDataModel(string? id, string? postName, PostType postType, double salary) =>
|
||||||
new(id, postName, postType, salary, isActual, changeDate);
|
new(id, postName, postType, salary);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,89 +15,120 @@ internal class SaleDataModelTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void IdIsNullOrEmptyTest()
|
public void IdIsNullOrEmptyTest()
|
||||||
{
|
{
|
||||||
var sale = CreateDataModel(null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel());
|
var sale = CreateDataModel(null, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DiscountType.OnSale, false, CreateSubDataModel());
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
sale = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel());
|
sale = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DiscountType.OnSale, false, CreateSubDataModel());
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void IdIsNotGuidTest()
|
public void IdIsNotGuidTest()
|
||||||
{
|
{
|
||||||
var sale = CreateDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel());
|
var sale = CreateDataModel("id", Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DiscountType.OnSale, false, CreateSubDataModel());
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
[Test]
|
[Test]
|
||||||
public void EmployeeIdIsNullOrEmptyTest()
|
public void EmployeeIdIsNullOrEmptyTest()
|
||||||
{
|
{
|
||||||
var sale = CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel());
|
var sale = CreateDataModel(Guid.NewGuid().ToString(), null, Guid.NewGuid().ToString(), DiscountType.OnSale, false, CreateSubDataModel());
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
sale = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel());
|
sale = CreateDataModel(Guid.NewGuid().ToString(), string.Empty, Guid.NewGuid().ToString(), DiscountType.OnSale, false, CreateSubDataModel());
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void EmployeeIdIsNotGuidTest()
|
public void EmployeeIdIsNotGuidTest()
|
||||||
{
|
{
|
||||||
var sale = CreateDataModel(Guid.NewGuid().ToString(), "employeeId", Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, CreateSubDataModel());
|
var sale = CreateDataModel(Guid.NewGuid().ToString(), "employeeId", Guid.NewGuid().ToString(), DiscountType.OnSale, false, CreateSubDataModel());
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void ClientIdIsNotGuidTest()
|
public void ClientIdIsNotGuidTest()
|
||||||
{
|
{
|
||||||
var sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "clientId", 10, DiscountType.OnSale, 10, false, CreateSubDataModel());
|
var sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "clientId", DiscountType.OnSale, false, CreateSubDataModel());
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void SumIsLessOrZeroTest()
|
|
||||||
{
|
|
||||||
var sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, DiscountType.OnSale, 10, false, CreateSubDataModel());
|
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
|
||||||
sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, DiscountType.OnSale, 10, false, CreateSubDataModel());
|
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void ToursIsNullOrEmptyTest()
|
public void ToursIsNullOrEmptyTest()
|
||||||
{
|
{
|
||||||
var sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, null);
|
var sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DiscountType.OnSale, false, null);
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 10, DiscountType.OnSale, 10, false, []);
|
sale = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), DiscountType.OnSale, false, []);
|
||||||
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => sale.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void CalcSumAndDiscountTest()
|
||||||
|
{
|
||||||
|
var saleId = Guid.NewGuid().ToString();
|
||||||
|
var employeeId = Guid.NewGuid().ToString();
|
||||||
|
var clientId = Guid.NewGuid().ToString();
|
||||||
|
var tours = new List<SaleTourDataModel>()
|
||||||
|
{
|
||||||
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 2, 1.1),
|
||||||
|
new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1, 1.3)
|
||||||
|
};
|
||||||
|
var isCancel = false;
|
||||||
|
var totalSum = tours.Sum(x => x.Price * x.Count);
|
||||||
|
var saleNone = CreateDataModel(saleId, employeeId, clientId, DiscountType.None, isCancel, tours);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(saleNone.Sum, Is.EqualTo(totalSum));
|
||||||
|
Assert.That(saleNone.Discount, Is.EqualTo(0));
|
||||||
|
});
|
||||||
|
var saleOnSale = CreateDataModel(saleId, employeeId, clientId, DiscountType.OnSale, isCancel, tours);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(saleOnSale.Sum, Is.EqualTo(totalSum));
|
||||||
|
Assert.That(saleOnSale.Discount, Is.EqualTo(totalSum * 0.1));
|
||||||
|
});
|
||||||
|
var saleRegularCustomer = CreateDataModel(saleId, employeeId, clientId, DiscountType.RegularCustomer, isCancel, tours);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(saleRegularCustomer.Sum, Is.EqualTo(totalSum));
|
||||||
|
Assert.That(saleRegularCustomer.Discount, Is.EqualTo(totalSum * 0.5));
|
||||||
|
});
|
||||||
|
var saleCertificate = CreateDataModel(saleId, employeeId, clientId, DiscountType.Certificate, isCancel, tours);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(saleCertificate.Sum, Is.EqualTo(totalSum));
|
||||||
|
Assert.That(saleCertificate.Discount, Is.EqualTo(totalSum * 0.3));
|
||||||
|
});
|
||||||
|
var saleMulty = CreateDataModel(saleId, employeeId, clientId, DiscountType.Certificate | DiscountType.RegularCustomer, isCancel, tours);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(saleMulty.Sum, Is.EqualTo(totalSum));
|
||||||
|
Assert.That(saleMulty.Discount, Is.EqualTo(totalSum * 0.8));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void AllFieldsIsCorrectTest()
|
public void AllFieldsIsCorrectTest()
|
||||||
{
|
{
|
||||||
var saleId = Guid.NewGuid().ToString();
|
var saleId = Guid.NewGuid().ToString();
|
||||||
var employeeId = Guid.NewGuid().ToString();
|
var employeeId = Guid.NewGuid().ToString();
|
||||||
var clientId = Guid.NewGuid().ToString();
|
var clientId = Guid.NewGuid().ToString();
|
||||||
var sum = 10;
|
|
||||||
var discountType = DiscountType.Certificate;
|
var discountType = DiscountType.Certificate;
|
||||||
var discount = 1;
|
|
||||||
var isCancel = true;
|
var isCancel = true;
|
||||||
var tours = CreateSubDataModel();
|
var tours = CreateSubDataModel();
|
||||||
var sale = CreateDataModel(saleId, employeeId, clientId, sum, discountType, discount, isCancel, tours);
|
var sale = CreateDataModel(saleId, employeeId, clientId, discountType, isCancel, tours);
|
||||||
Assert.That(() => sale.Validate(), Throws.Nothing);
|
Assert.That(() => sale.Validate(), Throws.Nothing);
|
||||||
Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
{
|
{
|
||||||
Assert.That(sale.Id, Is.EqualTo(saleId));
|
Assert.That(sale.Id, Is.EqualTo(saleId));
|
||||||
Assert.That(sale.EmployeeId, Is.EqualTo(employeeId));
|
Assert.That(sale.EmployeeId, Is.EqualTo(employeeId));
|
||||||
Assert.That(sale.ClientId, Is.EqualTo(clientId));
|
Assert.That(sale.ClientId, Is.EqualTo(clientId));
|
||||||
Assert.That(sale.Sum, Is.EqualTo(sum));
|
|
||||||
Assert.That(sale.DiscountType, Is.EqualTo(discountType));
|
Assert.That(sale.DiscountType, Is.EqualTo(discountType));
|
||||||
Assert.That(sale.Discount, Is.EqualTo(discount));
|
|
||||||
Assert.That(sale.IsCancel, Is.EqualTo(isCancel));
|
Assert.That(sale.IsCancel, Is.EqualTo(isCancel));
|
||||||
Assert.That(sale.Tours, Is.EquivalentTo(tours));
|
Assert.That(sale.Tours, Is.EquivalentTo(tours));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static SaleDataModel CreateDataModel(string? id, string? employeeId, string? clientId, double sum, DiscountType discountType,
|
private static SaleDataModel CreateDataModel(string? id, string? employeeId, string? clientId, DiscountType discountType, bool isCancel, List<SaleTourDataModel>? tours) =>
|
||||||
double discount, bool isCancel, List<SaleTourDataModel>? tours) =>
|
new(id, employeeId, clientId, discountType, isCancel, tours);
|
||||||
new(id, employeeId, clientId, sum, discountType, discount, isCancel, tours);
|
|
||||||
|
|
||||||
private static List<SaleTourDataModel> CreateSubDataModel()
|
private static List<SaleTourDataModel> CreateSubDataModel()
|
||||||
=> [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1)];
|
=> [new(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1, 1.1)];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,41 +14,50 @@ internal class SaleTourDataModelTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void SaleIdIsNullOrEmptyTest()
|
public void SaleIdIsNullOrEmptyTest()
|
||||||
{
|
{
|
||||||
var saleTour = CreateDataModel(null, Guid.NewGuid().ToString(), 10);
|
var saleTour = CreateDataModel(null, Guid.NewGuid().ToString(), 10, 1.1);
|
||||||
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
saleTour = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10);
|
saleTour = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10, 1.1);
|
||||||
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void SaleIdIsNotGuidTest()
|
public void SaleIdIsNotGuidTest()
|
||||||
{
|
{
|
||||||
var saleTour = CreateDataModel("saleId", Guid.NewGuid().ToString(), 10);
|
var saleTour = CreateDataModel("saleId", Guid.NewGuid().ToString(), 10, 1.1);
|
||||||
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CocktailIdIsNullOrEmptyTest()
|
public void TourIdIsNullOrEmptyTest()
|
||||||
{
|
{
|
||||||
var saleTour = CreateDataModel(Guid.NewGuid().ToString(), null, 10);
|
var saleTour = CreateDataModel(Guid.NewGuid().ToString(), null, 10, 1.1);
|
||||||
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
saleTour = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10);
|
saleTour = CreateDataModel(string.Empty, Guid.NewGuid().ToString(), 10, 1.1);
|
||||||
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void ProductIdIsNotGuidTest()
|
public void TourIdIsNotGuidTest()
|
||||||
{
|
{
|
||||||
var saleTour = CreateDataModel(Guid.NewGuid().ToString(), "productId", 10);
|
var saleTour = CreateDataModel(Guid.NewGuid().ToString(), "tourId", 10, 1.1);
|
||||||
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CountIsLessOrZeroTest()
|
public void CountIsLessOrZeroTest()
|
||||||
{
|
{
|
||||||
var saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0);
|
var saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 0, 1.1);
|
||||||
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10);
|
saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), -10, 1.1);
|
||||||
|
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void PriceIsLessOrZeroTest()
|
||||||
|
{
|
||||||
|
var saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1, 0);
|
||||||
|
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
|
saleTour = CreateDataModel(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), 1, -10);
|
||||||
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
Assert.That(() => saleTour.Validate(), Throws.TypeOf<ValidationException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,16 +67,18 @@ internal class SaleTourDataModelTests
|
|||||||
var saleId = Guid.NewGuid().ToString();
|
var saleId = Guid.NewGuid().ToString();
|
||||||
var tourId = Guid.NewGuid().ToString();
|
var tourId = Guid.NewGuid().ToString();
|
||||||
var count = 10;
|
var count = 10;
|
||||||
var saleCocktail = CreateDataModel(saleId, tourId, count);
|
var price = 1.2;
|
||||||
Assert.That(() => saleCocktail.Validate(), Throws.Nothing);
|
var saleTour = CreateDataModel(saleId, tourId, count, price);
|
||||||
|
Assert.That(() => saleTour.Validate(), Throws.Nothing);
|
||||||
Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
{
|
{
|
||||||
Assert.That(saleCocktail.SaleId, Is.EqualTo(saleId));
|
Assert.That(saleTour.SaleId, Is.EqualTo(saleId));
|
||||||
Assert.That(saleCocktail.TourId, Is.EqualTo(tourId));
|
Assert.That(saleTour.TourId, Is.EqualTo(tourId));
|
||||||
Assert.That(saleCocktail.Count, Is.EqualTo(count));
|
Assert.That(saleTour.Count, Is.EqualTo(count));
|
||||||
|
Assert.That(saleTour.Price, Is.EqualTo(price));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static SaleTourDataModel CreateDataModel(string? saleId, string? tourId, int count) =>
|
private static SaleTourDataModel CreateDataModel(string? saleId, string? tourId, int count, double price) =>
|
||||||
new(saleId, tourId, count);
|
new(saleId, tourId, count, price);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using MagicCarpetContracts.Enums;
|
|||||||
using MagicCarpetContracts.Exceptions;
|
using MagicCarpetContracts.Exceptions;
|
||||||
using MagicCarpetDatabase.Implementations;
|
using MagicCarpetDatabase.Implementations;
|
||||||
using MagicCarpetDatabase.Models;
|
using MagicCarpetDatabase.Models;
|
||||||
|
using MagicCarpetTests.Infrastructure;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -16,7 +17,7 @@ namespace MagicCarpetTests.StoragesContracts;
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
internal class SaleStorageContractTests : BaseStorageContractTest
|
internal class SaleStorageContractTests : BaseStorageContractTest
|
||||||
{
|
{
|
||||||
private SaleStorageContract _saleStorageContract;
|
private SaleStorageContract _saletStorageContract;
|
||||||
private Client _client;
|
private Client _client;
|
||||||
private Employee _employee;
|
private Employee _employee;
|
||||||
private Tour _tour;
|
private Tour _tour;
|
||||||
@@ -24,28 +25,28 @@ internal class SaleStorageContractTests : BaseStorageContractTest
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void SetUp()
|
public void SetUp()
|
||||||
{
|
{
|
||||||
_saleStorageContract = new SaleStorageContract(MagicCarpetDbContext);
|
_saletStorageContract = new SaleStorageContract(MagicCarpetDbContext);
|
||||||
_client = InsertClientToDatabaseAndReturn();
|
_client = MagicCarpetDbContext.InsertClientToDatabaseAndReturn();
|
||||||
_employee = InsertEmployeeToDatabaseAndReturn();
|
_employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn();
|
||||||
_tour = InsertTourToDatabaseAndReturn();
|
_tour = MagicCarpetDbContext.InsertTourToDatabaseAndReturn();
|
||||||
}
|
}
|
||||||
|
|
||||||
[TearDown]
|
[TearDown]
|
||||||
public void TearDown()
|
public void TearDown()
|
||||||
{
|
{
|
||||||
MagicCarpetDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Sales\" CASCADE;");
|
MagicCarpetDbContext.RemoveSalesFromDatabase();
|
||||||
MagicCarpetDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Clients\" CASCADE;");
|
MagicCarpetDbContext.RemoveEmployeesFromDatabase();
|
||||||
MagicCarpetDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Employees\" CASCADE;");
|
MagicCarpetDbContext.RemoveClientsFromDatabase();
|
||||||
MagicCarpetDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Tours\" CASCADE;");
|
MagicCarpetDbContext.RemoveToursFromDatabase();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Try_GetList_WhenHaveRecords_Test()
|
public void Try_GetList_WhenHaveRecords_Test()
|
||||||
{
|
{
|
||||||
var sale = InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1)]);
|
var sale = MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 5)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 5, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, null, tours: [(_tour.Id, 10)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, null, tours: [(_tour.Id, 10, 1.2)]);
|
||||||
var list = _saleStorageContract.GetList();
|
var list = _saletStorageContract.GetList();
|
||||||
Assert.That(list, Is.Not.Null);
|
Assert.That(list, Is.Not.Null);
|
||||||
Assert.That(list, Has.Count.EqualTo(3));
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
AssertElement(list.First(x => x.Id == sale.Id), sale);
|
AssertElement(list.First(x => x.Id == sale.Id), sale);
|
||||||
@@ -54,7 +55,7 @@ internal class SaleStorageContractTests : BaseStorageContractTest
|
|||||||
[Test]
|
[Test]
|
||||||
public void Try_GetList_WhenNoRecords_Test()
|
public void Try_GetList_WhenNoRecords_Test()
|
||||||
{
|
{
|
||||||
var list = _saleStorageContract.GetList();
|
var list = _saletStorageContract.GetList();
|
||||||
Assert.That(list, Is.Not.Null);
|
Assert.That(list, Is.Not.Null);
|
||||||
Assert.That(list, Is.Empty);
|
Assert.That(list, Is.Empty);
|
||||||
}
|
}
|
||||||
@@ -62,11 +63,11 @@ internal class SaleStorageContractTests : BaseStorageContractTest
|
|||||||
[Test]
|
[Test]
|
||||||
public void Try_GetList_ByPeriod_Test()
|
public void Try_GetList_ByPeriod_Test()
|
||||||
{
|
{
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(-3), tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(-3), tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(3), tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(3), tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, null, saleDate: DateTime.UtcNow.AddDays(1).AddMinutes(-3), tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, null, saleDate: DateTime.UtcNow.AddDays(1).AddMinutes(-3), tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, null, saleDate: DateTime.UtcNow.AddDays(1).AddMinutes(3), tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, null, saleDate: DateTime.UtcNow.AddDays(1).AddMinutes(3), tours: [(_tour.Id, 1, 1.2)]);
|
||||||
var list = _saleStorageContract.GetList(startDate: DateTime.UtcNow.AddDays(-1), endDate: DateTime.UtcNow.AddDays(1));
|
var list = _saletStorageContract.GetList(startDate: DateTime.UtcNow.AddDays(-1), endDate: DateTime.UtcNow.AddDays(1));
|
||||||
Assert.That(list, Is.Not.Null);
|
Assert.That(list, Is.Not.Null);
|
||||||
Assert.That(list, Has.Count.EqualTo(2));
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
}
|
}
|
||||||
@@ -74,11 +75,11 @@ internal class SaleStorageContractTests : BaseStorageContractTest
|
|||||||
[Test]
|
[Test]
|
||||||
public void Try_GetList_ByEmployeeId_Test()
|
public void Try_GetList_ByEmployeeId_Test()
|
||||||
{
|
{
|
||||||
var employee = InsertEmployeeToDatabaseAndReturn("Other employee");
|
var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Other employee");
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(employee.Id, null, tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(employee.Id, null, tours: [(_tour.Id, 1, 1.2)]);
|
||||||
var list = _saleStorageContract.GetList(employeeId: _employee.Id);
|
var list = _saletStorageContract.GetList(employeeId: _employee.Id);
|
||||||
Assert.That(list, Is.Not.Null);
|
Assert.That(list, Is.Not.Null);
|
||||||
Assert.That(list, Has.Count.EqualTo(2));
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
Assert.That(list.All(x => x.EmployeeId == _employee.Id));
|
Assert.That(list.All(x => x.EmployeeId == _employee.Id));
|
||||||
@@ -87,12 +88,12 @@ internal class SaleStorageContractTests : BaseStorageContractTest
|
|||||||
[Test]
|
[Test]
|
||||||
public void Try_GetList_ByClientId_Test()
|
public void Try_GetList_ByClientId_Test()
|
||||||
{
|
{
|
||||||
var client = InsertClientToDatabaseAndReturn("Other fio", "+8-888-888-88-88");
|
var client = MagicCarpetDbContext.InsertClientToDatabaseAndReturn(fio: "Other fio", phoneNumber: "+8-888-888-88-88");
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, client.Id, tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, client.Id, tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, null, tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, null, tours: [(_tour.Id, 1, 1.2)]);
|
||||||
var list = _saleStorageContract.GetList(clientId: _client.Id);
|
var list = _saletStorageContract.GetList(clientId: _client.Id);
|
||||||
Assert.That(list, Is.Not.Null);
|
Assert.That(list, Is.Not.Null);
|
||||||
Assert.That(list, Has.Count.EqualTo(2));
|
Assert.That(list, Has.Count.EqualTo(2));
|
||||||
Assert.That(list.All(x => x.ClientId == _client.Id));
|
Assert.That(list.All(x => x.ClientId == _client.Id));
|
||||||
@@ -101,31 +102,31 @@ internal class SaleStorageContractTests : BaseStorageContractTest
|
|||||||
[Test]
|
[Test]
|
||||||
public void Try_GetList_ByTourId_Test()
|
public void Try_GetList_ByTourId_Test()
|
||||||
{
|
{
|
||||||
var tour = InsertTourToDatabaseAndReturn("Other name");
|
var tour = MagicCarpetDbContext.InsertTourToDatabaseAndReturn(tourName: "Other name");
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 5)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 5, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1), (tour.Id, 4)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2), (tour.Id, 4, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, null, tours: [(tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, null, tours: [(tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, null, tours: [(tour.Id, 1), (_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, null, tours: [(tour.Id, 1, 1.2), (_tour.Id, 1, 1.2)]);
|
||||||
var list = _saleStorageContract.GetList(tourId: _tour.Id);
|
var list = _saletStorageContract.GetList(tourId: _tour.Id);
|
||||||
Assert.That(list, Is.Not.Null);
|
Assert.That(list, Is.Not.Null);
|
||||||
Assert.That(list, Has.Count.EqualTo(3));
|
Assert.That(list, Has.Count.EqualTo(3));
|
||||||
Assert.That(list.All(x => x.Tours.Any(y => y.TourId == _tour.Id)));
|
Assert.That(list.All(x => x.Tours!.Any(y => y.TourId == _tour.Id)));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Try_GetList_ByAllParameters_Test()
|
public void Try_GetList_ByAllParameters_Test()
|
||||||
{
|
{
|
||||||
var employee = InsertEmployeeToDatabaseAndReturn("Other employee");
|
var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Other employee");
|
||||||
var client = InsertClientToDatabaseAndReturn("Other fio", "+8-888-888-88-88");
|
var client = MagicCarpetDbContext.InsertClientToDatabaseAndReturn(fio: "Other fio", phoneNumber: "+8-888-888-88-88");
|
||||||
var tour = InsertTourToDatabaseAndReturn("Other name");
|
var tour = MagicCarpetDbContext.InsertTourToDatabaseAndReturn(tourName: "Other name");
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(-3), tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(-3), tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(employee.Id, null, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(3), tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(employee.Id, null, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(3), tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(3), tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(3), tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(3), tours: [(tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(-1).AddMinutes(3), tours: [(tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, client.Id, saleDate: DateTime.UtcNow.AddDays(1).AddMinutes(-3), tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, client.Id, saleDate: DateTime.UtcNow.AddDays(1).AddMinutes(-3), tours: [(_tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(1).AddMinutes(-3), tours: [(tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, saleDate: DateTime.UtcNow.AddDays(1).AddMinutes(-3), tours: [(tour.Id, 1, 1.2)]);
|
||||||
InsertSaleToDatabaseAndReturn(employee.Id, null, saleDate: DateTime.UtcNow.AddDays(1).AddMinutes(-3), tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(employee.Id, null, saleDate: DateTime.UtcNow.AddDays(1).AddMinutes(-3), tours: [(_tour.Id, 1, 1.2)]);
|
||||||
var list = _saleStorageContract.GetList(startDate: DateTime.UtcNow.AddDays(-1), endDate: DateTime.UtcNow.AddDays(1), employeeId: _employee.Id, clientId: _client.Id, tourId: tour.Id);
|
var list = _saletStorageContract.GetList(startDate: DateTime.UtcNow.AddDays(-1), endDate: DateTime.UtcNow.AddDays(1), employeeId: _employee.Id, clientId: _client.Id, tourId: tour.Id);
|
||||||
Assert.That(list, Is.Not.Null);
|
Assert.That(list, Is.Not.Null);
|
||||||
Assert.That(list, Has.Count.EqualTo(1));
|
Assert.That(list, Has.Count.EqualTo(1));
|
||||||
}
|
}
|
||||||
@@ -133,46 +134,46 @@ internal class SaleStorageContractTests : BaseStorageContractTest
|
|||||||
[Test]
|
[Test]
|
||||||
public void Try_GetElementById_WhenHaveRecord_Test()
|
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||||
{
|
{
|
||||||
var sale = InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1)]);
|
var sale = MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2)]);
|
||||||
AssertElement(_saleStorageContract.GetElementById(sale.Id), sale);
|
AssertElement(_saletStorageContract.GetElementById(sale.Id), sale);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Try_GetElementById_WhenNoRecord_Test()
|
public void Try_GetElementById_WhenNoRecord_Test()
|
||||||
{
|
{
|
||||||
InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1)]);
|
MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2)]);
|
||||||
Assert.That(() => _saleStorageContract.GetElementById(Guid.NewGuid().ToString()), Is.Null);
|
Assert.That(() => _saletStorageContract.GetElementById(Guid.NewGuid().ToString()), Is.Null);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Try_GetElementById_WhenRecordHasCanceled_Test()
|
public void Try_GetElementById_WhenRecordHasCanceled_Test()
|
||||||
{
|
{
|
||||||
var sale = InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1)], isCancel: true);
|
var sale = MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2)], isCancel: true);
|
||||||
AssertElement(_saleStorageContract.GetElementById(sale.Id), sale);
|
AssertElement(_saletStorageContract.GetElementById(sale.Id), sale);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Try_AddElement_Test()
|
public void Try_AddElement_Test()
|
||||||
{
|
{
|
||||||
var sale = CreateModel(Guid.NewGuid().ToString(), _employee.Id, _client.Id, 1, DiscountType.RegularCustomer, 1, false, [_tour.Id]);
|
var sale = CreateModel(Guid.NewGuid().ToString(), _employee.Id, _client.Id, DiscountType.RegularCustomer, false, [_tour.Id]);
|
||||||
_saleStorageContract.AddElement(sale);
|
_saletStorageContract.AddElement(sale);
|
||||||
AssertElement(GetSaleFromDatabaseById(sale.Id), sale);
|
AssertElement(MagicCarpetDbContext.GetSaleFromDatabaseById(sale.Id), sale);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Try_AddElement_WhenIsDeletedIsTrue_Test()
|
public void Try_AddElement_WhenIsDeletedIsTrue_Test()
|
||||||
{
|
{
|
||||||
var sale = CreateModel(Guid.NewGuid().ToString(), _employee.Id, _client.Id, 1, DiscountType.RegularCustomer, 1, true, [_tour.Id]);
|
var sale = CreateModel(Guid.NewGuid().ToString(), _employee.Id, _client.Id, DiscountType.RegularCustomer, true, [_tour.Id]);
|
||||||
Assert.That(() => _saleStorageContract.AddElement(sale), Throws.Nothing);
|
Assert.That(() => _saletStorageContract.AddElement(sale), Throws.Nothing);
|
||||||
AssertElement(GetSaleFromDatabaseById(sale.Id), CreateModel(sale.Id, _employee.Id, _client.Id, 1, DiscountType.RegularCustomer, 1, false, [_tour.Id]));
|
AssertElement(MagicCarpetDbContext.GetSaleFromDatabaseById(sale.Id), CreateModel(sale.Id, _employee.Id, _client.Id, DiscountType.RegularCustomer, false, [_tour.Id]));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Try_DelElement_Test()
|
public void Try_DelElement_Test()
|
||||||
{
|
{
|
||||||
var sale = InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1)], isCancel: false);
|
var sale = MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2)], isCancel: false);
|
||||||
_saleStorageContract.DelElement(sale.Id);
|
_saletStorageContract.DelElement(sale.Id);
|
||||||
var element = GetSaleFromDatabaseById(sale.Id);
|
var element = MagicCarpetDbContext.GetSaleFromDatabaseById(sale.Id);
|
||||||
Assert.Multiple(() =>
|
Assert.Multiple(() =>
|
||||||
{
|
{
|
||||||
Assert.That(element, Is.Not.Null);
|
Assert.That(element, Is.Not.Null);
|
||||||
@@ -183,53 +184,14 @@ internal class SaleStorageContractTests : BaseStorageContractTest
|
|||||||
[Test]
|
[Test]
|
||||||
public void Try_DelElement_WhenNoRecordWithThisId_Test()
|
public void Try_DelElement_WhenNoRecordWithThisId_Test()
|
||||||
{
|
{
|
||||||
Assert.That(() => _saleStorageContract.DelElement(Guid.NewGuid().ToString()), Throws.TypeOf<ElementNotFoundException>());
|
Assert.That(() => _saletStorageContract.DelElement(Guid.NewGuid().ToString()), Throws.TypeOf<ElementNotFoundException>());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Try_DelElement_WhenRecordWasCanceled_Test()
|
public void Try_DelElement_WhenRecordWasCanceled_Test()
|
||||||
{
|
{
|
||||||
var sale = InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1)], isCancel: true);
|
var sale = MagicCarpetDbContext.InsertSaleToDatabaseAndReturn(_employee.Id, _client.Id, tours: [(_tour.Id, 1, 1.2)], isCancel: true);
|
||||||
Assert.That(() => _saleStorageContract.DelElement(sale.Id), Throws.TypeOf<ElementDeletedException>());
|
Assert.That(() => _saletStorageContract.DelElement(sale.Id), Throws.TypeOf<ElementDeletedException>());
|
||||||
}
|
|
||||||
|
|
||||||
private Client InsertClientToDatabaseAndReturn(string fio = "test", string phoneNumber = "+7-777-777-77-77")
|
|
||||||
{
|
|
||||||
var client = new Client() { Id = Guid.NewGuid().ToString(), FIO = fio, PhoneNumber = phoneNumber, DiscountSize = 10 };
|
|
||||||
MagicCarpetDbContext.Clients.Add(client);
|
|
||||||
MagicCarpetDbContext.SaveChanges();
|
|
||||||
return client;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Employee InsertEmployeeToDatabaseAndReturn(string fio = "test", string employeeEmail = "abc@gmail.com")
|
|
||||||
{
|
|
||||||
var employee = new Employee() { Id = Guid.NewGuid().ToString(), FIO = fio, Email = employeeEmail, PostId = Guid.NewGuid().ToString() };
|
|
||||||
MagicCarpetDbContext.Employees.Add(employee);
|
|
||||||
MagicCarpetDbContext.SaveChanges();
|
|
||||||
return employee;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Tour InsertTourToDatabaseAndReturn(string tourName = "test", TourType tourType = TourType.Sightseeing, double price = 1)
|
|
||||||
{
|
|
||||||
var tour = new Tour() { Id = Guid.NewGuid().ToString(), TourName = tourName, Type = tourType, Price = price };
|
|
||||||
MagicCarpetDbContext.Tours.Add(tour);
|
|
||||||
MagicCarpetDbContext.SaveChanges();
|
|
||||||
return tour;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Sale InsertSaleToDatabaseAndReturn(string employeeId, string? clientId, DateTime? saleDate = null, double sum = 1, DiscountType discountType = DiscountType.OnSale, double discount = 0, bool isCancel = false, List<(string, int)>? tours = null)
|
|
||||||
{
|
|
||||||
var sale = new Sale() { EmployeeId = employeeId, ClientId = clientId, SaleDate = saleDate ?? DateTime.UtcNow, Sum = sum, DiscountType = discountType, Discount = discount, IsCancel = isCancel, SaleTours = [] };
|
|
||||||
if (tours is not null)
|
|
||||||
{
|
|
||||||
foreach (var elem in tours)
|
|
||||||
{
|
|
||||||
sale.SaleTours.Add(new SaleTour { TourId = elem.Item1, SaleId = sale.Id, Count = elem.Item2 });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MagicCarpetDbContext.Sales.Add(sale);
|
|
||||||
MagicCarpetDbContext.SaveChanges();
|
|
||||||
return sale;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AssertElement(SaleDataModel? actual, Sale expected)
|
private static void AssertElement(SaleDataModel? actual, Sale expected)
|
||||||
@@ -264,14 +226,12 @@ internal class SaleStorageContractTests : BaseStorageContractTest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static SaleDataModel CreateModel(string id, string employeeId, string? clientId, double sum, DiscountType discountType, double discount, bool isCancel, List<string> tourIds)
|
private static SaleDataModel CreateModel(string id, string employeeId, string? clientId, DiscountType discountType, bool isCancel, List<string> tourIds)
|
||||||
{
|
{
|
||||||
var tours = tourIds.Select(x => new SaleTourDataModel(id, x, 1)).ToList();
|
var tours = tourIds.Select(x => new SaleTourDataModel(id, x, 1, 1.1)).ToList();
|
||||||
return new(id, employeeId, clientId, sum, discountType, discount, isCancel, tours);
|
return new(id, employeeId, clientId, discountType, isCancel, tours);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Sale? GetSaleFromDatabaseById(string id) => MagicCarpetDbContext.Sales.Include(x => x.SaleTours).FirstOrDefault(x => x.Id == id);
|
|
||||||
|
|
||||||
private static void AssertElement(Sale? actual, SaleDataModel expected)
|
private static void AssertElement(Sale? actual, SaleDataModel expected)
|
||||||
{
|
{
|
||||||
Assert.That(actual, Is.Not.Null);
|
Assert.That(actual, Is.Not.Null);
|
||||||
@@ -295,6 +255,7 @@ internal class SaleStorageContractTests : BaseStorageContractTest
|
|||||||
{
|
{
|
||||||
Assert.That(actual.SaleTours[i].TourId, Is.EqualTo(expected.Tours[i].TourId));
|
Assert.That(actual.SaleTours[i].TourId, Is.EqualTo(expected.Tours[i].TourId));
|
||||||
Assert.That(actual.SaleTours[i].Count, Is.EqualTo(expected.Tours[i].Count));
|
Assert.That(actual.SaleTours[i].Count, Is.EqualTo(expected.Tours[i].Count));
|
||||||
|
Assert.That(actual.SaleTours[i].Price, Is.EqualTo(expected.Tours[i].Price));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,216 @@
|
|||||||
|
using MagicCarpetContracts.ViewModels;
|
||||||
|
using MagicCarpetTests.Infrastructure;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace MagicCarpetTests.WebApiControllersTests;
|
||||||
|
|
||||||
|
[TestFixture]
|
||||||
|
internal class SalaryControllerTests : BaseWebApiControllerTest
|
||||||
|
{
|
||||||
|
[TearDown]
|
||||||
|
public void TearDown()
|
||||||
|
{
|
||||||
|
MagicCarpetDbContext.RemovePostsFromDatabase();
|
||||||
|
MagicCarpetDbContext.RemoveToursFromDatabase();
|
||||||
|
MagicCarpetDbContext.RemoveEmployeesFromDatabase();
|
||||||
|
MagicCarpetDbContext.RemoveSalariesFromDatabase();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task GetList_WhenHaveRecords_ShouldSuccess_Test()
|
||||||
|
{
|
||||||
|
//Arrange
|
||||||
|
var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Иванов И.И.");
|
||||||
|
var salary = MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id, employeeSalary: 100);
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id);
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id);
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.GetAsync($"/api/salaries/getrecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}");
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
|
||||||
|
var data = await GetModelFromResponseAsync<List<SalaryViewModel>>(response);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(data, Is.Not.Null);
|
||||||
|
Assert.That(data, Has.Count.EqualTo(3));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task GetList_WhenNoRecords_ShouldSuccess_Test()
|
||||||
|
{
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.GetAsync($"/api/salaries/getrecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}");
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
|
||||||
|
var data = await GetModelFromResponseAsync<List<SalaryViewModel>>(response);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(data, Is.Not.Null);
|
||||||
|
Assert.That(data, Has.Count.EqualTo(0));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task GetList_OnlyInDatePeriod_ShouldSuccess_Test()
|
||||||
|
{
|
||||||
|
//Arrange
|
||||||
|
var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Иванов И.И.");
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id, salaryDate: DateTime.UtcNow.AddDays(-2));
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id, salaryDate: DateTime.UtcNow.AddDays(-1).AddMinutes(5));
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id, salaryDate: DateTime.UtcNow.AddDays(1).AddMinutes(-5));
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id, salaryDate: DateTime.UtcNow.AddDays(-2));
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.GetAsync($"/api/salaries/getrecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}");
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
|
||||||
|
var data = await GetModelFromResponseAsync<List<SalaryViewModel>>(response);
|
||||||
|
Assert.That(data, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(data, Has.Count.EqualTo(2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task GetList_WhenDateIsIncorrect_ShouldBadRequest_Test()
|
||||||
|
{
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.GetAsync($"/api/salaries/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}");
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task GetList_ByEmployee_ShouldSuccess_Test()
|
||||||
|
{
|
||||||
|
//Arrange
|
||||||
|
var employee1 = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Иванов И.И.");
|
||||||
|
var employee2 = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Иванов И.И.");
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee1.Id);
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee1.Id);
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee2.Id);
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.GetAsync($"/api/salaries/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&id={employee1.Id}");
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
|
||||||
|
var data = await GetModelFromResponseAsync<List<SalaryViewModel>>(response);
|
||||||
|
Assert.That(data, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(data, Has.Count.EqualTo(2));
|
||||||
|
Assert.That(data.All(x => x.EmployeeId == employee1.Id));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task GetList_ByEmployee_OnlyInDatePeriod_ShouldSuccess_Test()
|
||||||
|
{
|
||||||
|
//Arrange
|
||||||
|
var employee1 = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Иванов И.И.");
|
||||||
|
var employee2 = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Иванов И.И.");
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee1.Id, salaryDate: DateTime.UtcNow.AddDays(-2));
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee1.Id, salaryDate: DateTime.UtcNow.AddDays(-1).AddMinutes(5));
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee2.Id, salaryDate: DateTime.UtcNow.AddDays(-1).AddMinutes(5));
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee1.Id, salaryDate: DateTime.UtcNow.AddDays(1).AddMinutes(-5));
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee2.Id, salaryDate: DateTime.UtcNow.AddDays(1).AddMinutes(-5));
|
||||||
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee1.Id, salaryDate: DateTime.UtcNow.AddDays(-2));
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.GetAsync($"/api/salaries/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&id={employee1.Id}");
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
|
||||||
|
var data = await GetModelFromResponseAsync<List<SalaryViewModel>>(response);
|
||||||
|
Assert.That(data, Is.Not.Null);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(data, Has.Count.EqualTo(2));
|
||||||
|
Assert.That(data.All(x => x.EmployeeId == employee1.Id));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task GetList_ByEmployee_WhenDateIsIncorrect_ShouldBadRequest_Test()
|
||||||
|
{
|
||||||
|
//Arrange
|
||||||
|
var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Иванов И.И.");
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.GetAsync($"/api/salaries/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&id={employee.Id}");
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task GetList_ByEmployee_WhenIdIsNotGuid_ShouldBadRequest_Test()
|
||||||
|
{
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.GetAsync($"/api/salaries/getemployeerecords?fromDate={DateTime.UtcNow.AddDays(-1):MM/dd/yyyy HH:mm:ss}&toDate={DateTime.UtcNow.AddDays(1):MM/dd/yyyy HH:mm:ss}&id=id");
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task Calculate_ShouldSuccess_Test()
|
||||||
|
{
|
||||||
|
//Arrange
|
||||||
|
var post = MagicCarpetDbContext.InsertPostToDatabaseAndReturn(salary: 1000);
|
||||||
|
var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "Иванов И.И.", postId: post.PostId);
|
||||||
|
var furniture = MagicCarpetDbContext.InsertTourToDatabaseAndReturn();
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.PostAsync($"/api/salaries/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null);
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent));
|
||||||
|
var salaries = MagicCarpetDbContext.GetSalariesFromDatabaseByEmployeeId(employee.Id);
|
||||||
|
Assert.Multiple(() =>
|
||||||
|
{
|
||||||
|
Assert.That(salaries, Has.Length.EqualTo(1));
|
||||||
|
Assert.That(salaries.First().EmployeeSalary, Is.EqualTo(1000.5));
|
||||||
|
Assert.That(salaries.First().SalaryDate.Month, Is.EqualTo(DateTime.UtcNow.Month));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task Calculate_WithoutEmployees_ShouldSuccess_Test()
|
||||||
|
{
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.PostAsync($"/api/salaries/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null);
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent));
|
||||||
|
var salaries = MagicCarpetDbContext.Salaries.ToArray();
|
||||||
|
Assert.That(salaries, Has.Length.EqualTo(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task Calculate_WithoutSalesByEmployee_ShouldSuccess_Test()
|
||||||
|
{
|
||||||
|
//Arrange
|
||||||
|
var post = MagicCarpetDbContext.InsertPostToDatabaseAndReturn(salary: 1000);
|
||||||
|
var employee1 = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "name 1", postId: post.PostId);
|
||||||
|
var employee2 = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "name 2", postId: post.PostId);
|
||||||
|
var man = MagicCarpetDbContext.InsertTourToDatabaseAndReturn();
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.PostAsync($"/api/salaries/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null);
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent));
|
||||||
|
var salary1 = MagicCarpetDbContext.GetSalariesFromDatabaseByEmployeeId(employee1.Id).First().EmployeeSalary;
|
||||||
|
var salary2 = MagicCarpetDbContext.GetSalariesFromDatabaseByEmployeeId(employee2.Id).First().EmployeeSalary;
|
||||||
|
Assert.That(salary1, Is.Not.EqualTo(salary2));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task Calculate_PostNotFound_ShouldNotFound_Test()
|
||||||
|
{
|
||||||
|
//Arrange
|
||||||
|
MagicCarpetDbContext.InsertPostToDatabaseAndReturn();
|
||||||
|
var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "name", postId: Guid.NewGuid().ToString());
|
||||||
|
var furniture = MagicCarpetDbContext.InsertTourToDatabaseAndReturn();
|
||||||
|
//Act
|
||||||
|
var response = await HttpClient.PostAsync($"/api/salaries/calculate?date={DateTime.UtcNow:MM/dd/yyyy}", null);
|
||||||
|
//Assert
|
||||||
|
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NotFound));
|
||||||
|
}
|
||||||
|
}
|
||||||
119
MagicCarpetProject/MagicCarpetWebApi/Adapters/SalaryAdapter.cs
Normal file
119
MagicCarpetProject/MagicCarpetWebApi/Adapters/SalaryAdapter.cs
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using MagicCarpetContracts.AdapterContracts.OperationResponses;
|
||||||
|
using MagicCarpetContracts.AdapterContracts;
|
||||||
|
using MagicCarpetContracts.BuisnessLogicContracts;
|
||||||
|
using MagicCarpetContracts.Exceptions;
|
||||||
|
using MagicCarpetContracts.ViewModels;
|
||||||
|
using MagicCarpetContracts.DataModels;
|
||||||
|
|
||||||
|
namespace MagicCarpetWebApi.Adapters;
|
||||||
|
|
||||||
|
public class SalaryAdapter : ISalaryAdapter
|
||||||
|
{
|
||||||
|
private readonly ISalaryBusinessLogicContract _salaryBusinessLogicContract;
|
||||||
|
|
||||||
|
private readonly ILogger _logger;
|
||||||
|
|
||||||
|
private readonly Mapper _mapper;
|
||||||
|
|
||||||
|
public SalaryAdapter(ISalaryBusinessLogicContract salaryBusinessLogicContract, ILogger<SalaryAdapter> logger)
|
||||||
|
{
|
||||||
|
_salaryBusinessLogicContract = salaryBusinessLogicContract;
|
||||||
|
_logger = logger;
|
||||||
|
var config = new MapperConfiguration(cfg =>
|
||||||
|
{
|
||||||
|
cfg.CreateMap<SalaryDataModel, SalaryViewModel>();
|
||||||
|
});
|
||||||
|
_mapper = new Mapper(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SalaryOperationResponse GetListByPeriod(DateTime fromDate, DateTime toDate)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return SalaryOperationResponse.OK([.. _salaryBusinessLogicContract.GetAllSalariesByPeriod(fromDate, toDate).Select(x => _mapper.Map<SalaryViewModel>(x))]);
|
||||||
|
}
|
||||||
|
catch (ValidationException ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "ValidationException");
|
||||||
|
return SalaryOperationResponse.BadRequest($"Incorrect data transmitted: {ex.Message}");
|
||||||
|
}
|
||||||
|
catch (IncorrectDatesException ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "IncorrectDatesException");
|
||||||
|
return SalaryOperationResponse.BadRequest($"Incorrect dates: {ex.Message}");
|
||||||
|
}
|
||||||
|
catch (NullListException)
|
||||||
|
{
|
||||||
|
_logger.LogError("NullListException");
|
||||||
|
return SalaryOperationResponse.NotFound("The list is not initialized");
|
||||||
|
}
|
||||||
|
catch (StorageException ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "StorageException");
|
||||||
|
return SalaryOperationResponse.InternalServerError($"Error while working with data storage: {ex.InnerException!.Message}");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Exception");
|
||||||
|
return SalaryOperationResponse.InternalServerError(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public SalaryOperationResponse GetListByPeriodByEmployee(DateTime fromDate, DateTime toDate, string workerId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return SalaryOperationResponse.OK([.. _salaryBusinessLogicContract.GetAllSalariesByPeriodByEmployee(fromDate, toDate, workerId).Select(x => _mapper.Map<SalaryViewModel>(x))]);
|
||||||
|
}
|
||||||
|
catch (ValidationException ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "ValidationException");
|
||||||
|
return SalaryOperationResponse.BadRequest($"Incorrect data transmitted: {ex.Message}");
|
||||||
|
}
|
||||||
|
catch (IncorrectDatesException ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "IncorrectDatesException");
|
||||||
|
return SalaryOperationResponse.BadRequest($"Incorrect dates: {ex.Message}");
|
||||||
|
}
|
||||||
|
catch (NullListException)
|
||||||
|
{
|
||||||
|
_logger.LogError("NullListException");
|
||||||
|
return SalaryOperationResponse.NotFound("The list is not initialized");
|
||||||
|
}
|
||||||
|
catch (StorageException ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "StorageException");
|
||||||
|
return SalaryOperationResponse.InternalServerError($"Error while working with data storage: {ex.InnerException!.Message}");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Exception");
|
||||||
|
return SalaryOperationResponse.InternalServerError(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public SalaryOperationResponse CalculateSalary(DateTime date)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_salaryBusinessLogicContract.CalculateSalaryByMounth(date);
|
||||||
|
return SalaryOperationResponse.NoContent();
|
||||||
|
}
|
||||||
|
catch (NullListException)
|
||||||
|
{
|
||||||
|
_logger.LogError("NullListException");
|
||||||
|
return SalaryOperationResponse.NotFound("The list is not initialized");
|
||||||
|
}
|
||||||
|
catch (StorageException ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "StorageException");
|
||||||
|
return SalaryOperationResponse.InternalServerError($"Error while working with data storage: {ex.InnerException!.Message}");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Exception");
|
||||||
|
return SalaryOperationResponse.InternalServerError(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
using MagicCarpetContracts.AdapterContracts;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
namespace MagicCarpetWebApi.Controllers;
|
||||||
|
|
||||||
|
[Authorize]
|
||||||
|
[Route("api/[controller]/[action]")]
|
||||||
|
[ApiController]
|
||||||
|
[Produces("application/json")]
|
||||||
|
public class SalariesController(ISalaryAdapter adapter) : ControllerBase
|
||||||
|
{
|
||||||
|
private readonly ISalaryAdapter _adapter = adapter;
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult GetRecords(DateTime fromDate, DateTime toDate)
|
||||||
|
{
|
||||||
|
return _adapter.GetListByPeriod(fromDate, toDate).GetResponse(Request, Response);
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult GetEmployeeRecords(string id, DateTime fromDate, DateTime toDate)
|
||||||
|
{
|
||||||
|
return _adapter.GetListByPeriodByEmployee(fromDate, toDate, id).GetResponse(Request, Response);
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public IActionResult Calculate(DateTime date)
|
||||||
|
{
|
||||||
|
return _adapter.CalculateSalary(date).GetResponse(Request, Response);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user