558 lines
30 KiB
C#
558 lines
30 KiB
C#
using Microsoft.Extensions.Logging;
|
|
using Moq;
|
|
using TheCyclopsBusinessLogic.Implementations;
|
|
using TheCyclopsContracts.DataModels;
|
|
using TheCyclopsContracts.Exceptions;
|
|
using TheCyclopsContracts.StoragesContracts;
|
|
|
|
namespace TheCyclopsTests.BusinessLogicsContractsTests;
|
|
|
|
[TestFixture]
|
|
internal class EmployeeBusinessLogicContractTest
|
|
{
|
|
private EmployeeBusinessLogicContract _employeeBusinessLogicContract;
|
|
private Mock<IEmployeeStorageContract> _employeeStorageContract;
|
|
|
|
[OneTimeSetUp]
|
|
public void OneTimeSetUp()
|
|
{
|
|
_employeeStorageContract = new Mock<IEmployeeStorageContract>();
|
|
_employeeBusinessLogicContract = new EmployeeBusinessLogicContract(_employeeStorageContract.Object, new Mock<ILogger>().Object);
|
|
}
|
|
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
_employeeStorageContract.Reset();
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployees_ReturnListOfRecords_Test()
|
|
{
|
|
//Arrange
|
|
var listOriginal = new List<EmployeeDataModel>()
|
|
{
|
|
new(Guid.NewGuid().ToString(), "fio 1", "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false),
|
|
new(Guid.NewGuid().ToString(), "fio 2", "email@mail.com",Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, true),
|
|
new(Guid.NewGuid().ToString(), "fio 3", "email@mail.com",Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false),
|
|
};
|
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>())).Returns(listOriginal);
|
|
//Act
|
|
var listOnlyActive = _employeeBusinessLogicContract.GetAllEmployees(true);
|
|
var list = _employeeBusinessLogicContract.GetAllEmployees(false);
|
|
//Assert
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(listOnlyActive, Is.Not.Null);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(listOnlyActive, Is.EquivalentTo(listOriginal));
|
|
Assert.That(list, Is.EquivalentTo(listOriginal));
|
|
});
|
|
_employeeStorageContract.Verify(x => x.GetList(true, null, null, null, null, null), Times.Once);
|
|
_employeeStorageContract.Verify(x => x.GetList(false, null, null, null, null, null), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployees_ReturnEmptyList_Test()
|
|
{
|
|
//Arrange
|
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>())).Returns([]);
|
|
//Act
|
|
var listOnlyActive = _employeeBusinessLogicContract.GetAllEmployees(true);
|
|
var list = _employeeBusinessLogicContract.GetAllEmployees(false);
|
|
//Assert
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(listOnlyActive, Is.Not.Null);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(listOnlyActive, Has.Count.EqualTo(0));
|
|
Assert.That(list, Has.Count.EqualTo(0));
|
|
});
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), null, null, null, null, null), Times.Exactly(2));
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployees_ReturnNull_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployees(It.IsAny<bool>()), Throws.TypeOf<NullListException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployees_StorageThrowError_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
_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()));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployees(It.IsAny<bool>()), Throws.TypeOf<StorageException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), null, null, null, null, null), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByPost_ReturnListOfRecords_Test()
|
|
{
|
|
//Arrange
|
|
var postId = Guid.NewGuid().ToString();
|
|
var listOriginal = new List<EmployeeDataModel>()
|
|
{
|
|
new(Guid.NewGuid().ToString(), "fio 1","email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false),
|
|
new(Guid.NewGuid().ToString(), "fio 2", "email@mail.com",Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, true),
|
|
new(Guid.NewGuid().ToString(), "fio 3", "email@mail.com",Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false),
|
|
};
|
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>())).Returns(listOriginal);
|
|
//Act
|
|
var listOnlyActive = _employeeBusinessLogicContract.GetAllEmployeesByPost(postId, true);
|
|
var list = _employeeBusinessLogicContract.GetAllEmployeesByPost(postId, false);
|
|
//Assert
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(listOnlyActive, Is.Not.Null);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(listOnlyActive, Is.EquivalentTo(listOriginal));
|
|
Assert.That(list, Is.EquivalentTo(listOriginal));
|
|
});
|
|
_employeeStorageContract.Verify(x => x.GetList(true, postId, null, null, null, null), Times.Once);
|
|
_employeeStorageContract.Verify(x => x.GetList(false, postId, null, null, null, null), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByPost_ReturnEmptyList_Test()
|
|
{
|
|
//Arrange
|
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>())).Returns([]);
|
|
//Act
|
|
var listOnlyActive = _employeeBusinessLogicContract.GetAllEmployeesByPost(Guid.NewGuid().ToString(), true);
|
|
var list = _employeeBusinessLogicContract.GetAllEmployeesByPost(Guid.NewGuid().ToString(), false);
|
|
//Assert
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(listOnlyActive, Is.Not.Null);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(listOnlyActive, Has.Count.EqualTo(0));
|
|
Assert.That(list, Has.Count.EqualTo(0));
|
|
});
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Exactly(2));
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByPost_PostIdIsNullOrEmpty_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByPost(null, It.IsAny<bool>()), Throws.TypeOf<ArgumentNullException>());
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByPost(string.Empty, It.IsAny<bool>()), Throws.TypeOf<ArgumentNullException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByPost_PostIdIsNotGuid_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByPost("postId", It.IsAny<bool>()), Throws.TypeOf<ValidationException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByPost_ReturnNull_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByPost(Guid.NewGuid().ToString(), It.IsAny<bool>()), Throws.TypeOf<NullListException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByPost_StorageThrowError_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
_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()));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByPost(Guid.NewGuid().ToString(), It.IsAny<bool>()), Throws.TypeOf<StorageException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByBirthDate_ReturnListOfRecords_Test()
|
|
{
|
|
//Arrange
|
|
var date = DateTime.UtcNow;
|
|
var listOriginal = new List<EmployeeDataModel>()
|
|
{
|
|
new(Guid.NewGuid().ToString(), "fio 1", "email@mail.com",Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false),
|
|
new(Guid.NewGuid().ToString(), "fio 2", "email@mail.com",Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, true),
|
|
new(Guid.NewGuid().ToString(), "fio 3","email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false),
|
|
};
|
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>())).Returns(listOriginal);
|
|
//Act
|
|
var listOnlyActive = _employeeBusinessLogicContract.GetAllEmployeesByBirthDate(date, date.AddDays(1), true);
|
|
var list = _employeeBusinessLogicContract.GetAllEmployeesByBirthDate(date, date.AddDays(1), false);
|
|
//Assert
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(listOnlyActive, Is.Not.Null);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(listOnlyActive, Is.EquivalentTo(listOriginal));
|
|
Assert.That(list, Is.EquivalentTo(listOriginal));
|
|
});
|
|
_employeeStorageContract.Verify(x => x.GetList(true, null, date, date.AddDays(1), null, null), Times.Once);
|
|
_employeeStorageContract.Verify(x => x.GetList(false, null, date, date.AddDays(1), null, null), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByBirthDate_ReturnEmptyList_Test()
|
|
{
|
|
//Arrange
|
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>())).Returns([]);
|
|
//Act
|
|
var listOnlyActive = _employeeBusinessLogicContract.GetAllEmployeesByBirthDate(DateTime.UtcNow, DateTime.UtcNow.AddDays(1), true);
|
|
var list = _employeeBusinessLogicContract.GetAllEmployees(false);
|
|
//Assert
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(listOnlyActive, Is.Not.Null);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(listOnlyActive, Has.Count.EqualTo(0));
|
|
Assert.That(list, Has.Count.EqualTo(0));
|
|
});
|
|
_employeeStorageContract.Verify(x => x.GetList(true, null, It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), null, null), Times.Once);
|
|
_employeeStorageContract.Verify(x => x.GetList(false, null, It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), null, null), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByBirthDate_IncorrectDates_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
var date = DateTime.UtcNow;
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByBirthDate(date, date, It.IsAny<bool>()), Throws.TypeOf<IncorrectDatesException>());
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByBirthDate(date, date.AddSeconds(-1), It.IsAny<bool>()), Throws.TypeOf<IncorrectDatesException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByBirthDate_ReturnNull_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByBirthDate(DateTime.UtcNow, DateTime.UtcNow.AddDays(1), It.IsAny<bool>()), Throws.TypeOf<NullListException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByBirthDate_StorageThrowError_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
_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()));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByBirthDate(DateTime.UtcNow, DateTime.UtcNow.AddDays(1), It.IsAny<bool>()), Throws.TypeOf<StorageException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByEmploymentDate_ReturnListOfRecords_Test()
|
|
{
|
|
//Arrange
|
|
var date = DateTime.UtcNow;
|
|
var listOriginal = new List<EmployeeDataModel>()
|
|
{
|
|
new(Guid.NewGuid().ToString(), "fio 1", "email@mail.com",Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false),
|
|
new(Guid.NewGuid().ToString(), "fio 2", "email@mail.com",Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, true),
|
|
new(Guid.NewGuid().ToString(), "fio 3", "email@mail.com",Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false),
|
|
};
|
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>())).Returns(listOriginal);
|
|
//Act
|
|
var listOnlyActive = _employeeBusinessLogicContract.GetAllEmployeesByEmploymentDate(date, date.AddDays(1), true);
|
|
var list = _employeeBusinessLogicContract.GetAllEmployeesByEmploymentDate(date, date.AddDays(1), false);
|
|
//Assert
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(listOnlyActive, Is.Not.Null);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(listOnlyActive, Is.EquivalentTo(listOriginal));
|
|
Assert.That(list, Is.EquivalentTo(listOriginal));
|
|
});
|
|
_employeeStorageContract.Verify(x => x.GetList(true, null, null, null, date, date.AddDays(1)), Times.Once);
|
|
_employeeStorageContract.Verify(x => x.GetList(false, null, null, null, date, date.AddDays(1)), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByEmploymentDate_ReturnEmptyList_Test()
|
|
{
|
|
//Arrange
|
|
_employeeStorageContract.Setup(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>())).Returns([]);
|
|
//Act
|
|
var listOnlyActive = _employeeBusinessLogicContract.GetAllEmployeesByEmploymentDate(DateTime.UtcNow, DateTime.UtcNow.AddDays(1), true);
|
|
var list = _employeeBusinessLogicContract.GetAllEmployeesByEmploymentDate(DateTime.UtcNow, DateTime.UtcNow.AddDays(1), false);
|
|
//Assert
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(listOnlyActive, Is.Not.Null);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(listOnlyActive, Has.Count.EqualTo(0));
|
|
Assert.That(list, Has.Count.EqualTo(0));
|
|
});
|
|
_employeeStorageContract.Verify(x => x.GetList(true, null, null, null, It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Once);
|
|
_employeeStorageContract.Verify(x => x.GetList(false, null, null, null, It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByEmploymentDate_IncorrectDates_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
var date = DateTime.UtcNow;
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByEmploymentDate(date, date, It.IsAny<bool>()), Throws.TypeOf<IncorrectDatesException>());
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByEmploymentDate(date, date.AddSeconds(-1), It.IsAny<bool>()), Throws.TypeOf<IncorrectDatesException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByEmploymentDate_ReturnNull_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByEmploymentDate(DateTime.UtcNow, DateTime.UtcNow.AddDays(1), It.IsAny<bool>()), Throws.TypeOf<NullListException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetAllEmployeesByEmploymentDate_StorageThrowError_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
_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()));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetAllEmployeesByEmploymentDate(DateTime.UtcNow, DateTime.UtcNow.AddDays(1), It.IsAny<bool>()), Throws.TypeOf<StorageException>());
|
|
_employeeStorageContract.Verify(x => x.GetList(It.IsAny<bool>(), It.IsAny<string?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetEmployeeByData_GetById_ReturnRecord_Test()
|
|
{
|
|
//Arrange
|
|
var id = Guid.NewGuid().ToString();
|
|
var record = new EmployeeDataModel(id, "fio", "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false);
|
|
_employeeStorageContract.Setup(x => x.GetElementById(id)).Returns(record);
|
|
//Act
|
|
var element = _employeeBusinessLogicContract.GetEmployeeByData(id);
|
|
//Assert
|
|
Assert.That(element, Is.Not.Null);
|
|
Assert.That(element.Id, Is.EqualTo(id));
|
|
_employeeStorageContract.Verify(x => x.GetElementById(It.IsAny<string>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetEmployeeByData_GetByFio_ReturnRecord_Test()
|
|
{
|
|
//Arrange
|
|
var fio = "fio";
|
|
var record = new EmployeeDataModel(Guid.NewGuid().ToString(), fio, "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false);
|
|
_employeeStorageContract.Setup(x => x.GetElementByFIO(fio)).Returns(record);
|
|
//Act
|
|
var element = _employeeBusinessLogicContract.GetEmployeeByData(fio);
|
|
//Assert
|
|
Assert.That(element, Is.Not.Null);
|
|
Assert.That(element.FIO, Is.EqualTo(fio));
|
|
_employeeStorageContract.Verify(x => x.GetElementByFIO(It.IsAny<string>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetEmployeeByData_EmptyData_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetEmployeeByData(null), Throws.TypeOf<ArgumentNullException>());
|
|
Assert.That(() => _employeeBusinessLogicContract.GetEmployeeByData(string.Empty), Throws.TypeOf<ArgumentNullException>());
|
|
_employeeStorageContract.Verify(x => x.GetElementById(It.IsAny<string>()), Times.Never);
|
|
_employeeStorageContract.Verify(x => x.GetElementByFIO(It.IsAny<string>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void GetEmployeeByData_GetById_NotFoundRecord_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetEmployeeByData(Guid.NewGuid().ToString()), Throws.TypeOf<ElementNotFoundException>());
|
|
_employeeStorageContract.Verify(x => x.GetElementById(It.IsAny<string>()), Times.Once);
|
|
_employeeStorageContract.Verify(x => x.GetElementByFIO(It.IsAny<string>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void GetEmployeeByData_GetByFio_NotFoundRecord_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetEmployeeByData("fio"), Throws.TypeOf<ElementNotFoundException>());
|
|
_employeeStorageContract.Verify(x => x.GetElementById(It.IsAny<string>()), Times.Never);
|
|
_employeeStorageContract.Verify(x => x.GetElementByFIO(It.IsAny<string>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void GetEmployeeByData_StorageThrowError_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
_employeeStorageContract.Setup(x => x.GetElementById(It.IsAny<string>())).Throws(new StorageException(new InvalidOperationException()));
|
|
_employeeStorageContract.Setup(x => x.GetElementByFIO(It.IsAny<string>())).Throws(new StorageException(new InvalidOperationException()));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.GetEmployeeByData(Guid.NewGuid().ToString()), Throws.TypeOf<StorageException>());
|
|
Assert.That(() => _employeeBusinessLogicContract.GetEmployeeByData("fio"), Throws.TypeOf<StorageException>());
|
|
_employeeStorageContract.Verify(x => x.GetElementById(It.IsAny<string>()), Times.Once);
|
|
_employeeStorageContract.Verify(x => x.GetElementByFIO(It.IsAny<string>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void InsertEmployee_CorrectRecord_Test()
|
|
{
|
|
//Arrange
|
|
var flag = false;
|
|
var record = new EmployeeDataModel(Guid.NewGuid().ToString(), "fio", "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false);
|
|
_employeeStorageContract.Setup(x => x.AddElement(It.IsAny<EmployeeDataModel>()))
|
|
.Callback((EmployeeDataModel x) =>
|
|
{
|
|
flag = x.Id == record.Id && x.FIO == record.FIO && x.PostId == record.PostId && x.BirthDate == record.BirthDate &&
|
|
x.EmploymentDate == record.EmploymentDate && x.IsDeleted == record.IsDeleted;
|
|
});
|
|
//Act
|
|
_employeeBusinessLogicContract.InsertEmployee(record);
|
|
//Assert
|
|
_employeeStorageContract.Verify(x => x.AddElement(It.IsAny<EmployeeDataModel>()), Times.Once);
|
|
Assert.That(flag);
|
|
}
|
|
|
|
[Test]
|
|
public void InsertEmployee_RecordWithExistsData_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
_employeeStorageContract.Setup(x => x.AddElement(It.IsAny<EmployeeDataModel>())).Throws(new ElementExistsException("Data", "Data"));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.InsertEmployee(new(Guid.NewGuid().ToString(), "fio", "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false)), Throws.TypeOf<ElementExistsException>());
|
|
_employeeStorageContract.Verify(x => x.AddElement(It.IsAny<EmployeeDataModel>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void InsertEmployee_NullRecord_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.InsertEmployee(null), Throws.TypeOf<ArgumentNullException>());
|
|
_employeeStorageContract.Verify(x => x.AddElement(It.IsAny<EmployeeDataModel>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void InsertEmployee_InvalidRecord_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.InsertEmployee(new EmployeeDataModel("id", "fio", "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false)), Throws.TypeOf<ValidationException>());
|
|
_employeeStorageContract.Verify(x => x.AddElement(It.IsAny<EmployeeDataModel>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void InsertEmployee_StorageThrowError_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
_employeeStorageContract.Setup(x => x.AddElement(It.IsAny<EmployeeDataModel>())).Throws(new StorageException(new InvalidOperationException()));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.InsertEmployee(new(Guid.NewGuid().ToString(), "fio", "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false)), Throws.TypeOf<StorageException>());
|
|
_employeeStorageContract.Verify(x => x.AddElement(It.IsAny<EmployeeDataModel>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void UpdateEmployee_CorrectRecord_Test()
|
|
{
|
|
//Arrange
|
|
var flag = false;
|
|
var record = new EmployeeDataModel(Guid.NewGuid().ToString(), "fio", "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false);
|
|
_employeeStorageContract.Setup(x => x.UpdElement(It.IsAny<EmployeeDataModel>()))
|
|
.Callback((EmployeeDataModel x) =>
|
|
{
|
|
flag = x.Id == record.Id && x.FIO == record.FIO && x.PostId == record.PostId && x.BirthDate == record.BirthDate &&
|
|
x.EmploymentDate == record.EmploymentDate && x.IsDeleted == record.IsDeleted;
|
|
});
|
|
//Act
|
|
_employeeBusinessLogicContract.UpdateEmployee(record);
|
|
//Assert
|
|
_employeeStorageContract.Verify(x => x.UpdElement(It.IsAny<EmployeeDataModel>()), Times.Once);
|
|
Assert.That(flag);
|
|
}
|
|
|
|
[Test]
|
|
public void UpdateEmployee_RecordWithIncorrectData_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
_employeeStorageContract.Setup(x => x.UpdElement(It.IsAny<EmployeeDataModel>())).Throws(new ElementNotFoundException(""));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.UpdateEmployee(new(Guid.NewGuid().ToString(), "fio", "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false)), Throws.TypeOf<ElementNotFoundException>());
|
|
_employeeStorageContract.Verify(x => x.UpdElement(It.IsAny<EmployeeDataModel>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void UpdateEmployee_NullRecord_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.UpdateEmployee(null), Throws.TypeOf<ArgumentNullException>());
|
|
_employeeStorageContract.Verify(x => x.UpdElement(It.IsAny<EmployeeDataModel>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void UpdateEmployee_InvalidRecord_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.UpdateEmployee(new EmployeeDataModel("id", "fio", "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false)), Throws.TypeOf<ValidationException>());
|
|
_employeeStorageContract.Verify(x => x.UpdElement(It.IsAny<EmployeeDataModel>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void UpdateEmployee_StorageThrowError_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
_employeeStorageContract.Setup(x => x.UpdElement(It.IsAny<EmployeeDataModel>())).Throws(new StorageException(new InvalidOperationException()));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.UpdateEmployee(new(Guid.NewGuid().ToString(), "fio", "email@mail.com", Guid.NewGuid().ToString(), DateTime.Now.AddYears(-16).AddDays(-1), DateTime.Now, false)), Throws.TypeOf<StorageException>());
|
|
_employeeStorageContract.Verify(x => x.UpdElement(It.IsAny<EmployeeDataModel>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void DeleteEmployee_CorrectRecord_Test()
|
|
{
|
|
//Arrange
|
|
var id = Guid.NewGuid().ToString();
|
|
var flag = false;
|
|
_employeeStorageContract.Setup(x => x.DelElement(It.Is((string x) => x == id))).Callback(() => { flag = true; });
|
|
//Act
|
|
_employeeBusinessLogicContract.DeleteEmployee(id);
|
|
//Assert
|
|
_employeeStorageContract.Verify(x => x.DelElement(It.IsAny<string>()), Times.Once);
|
|
Assert.That(flag);
|
|
}
|
|
|
|
[Test]
|
|
public void DeleteEmployee_RecordWithIncorrectId_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
var id = Guid.NewGuid().ToString();
|
|
_employeeStorageContract.Setup(x => x.DelElement(It.Is((string x) => x != id))).Throws(new ElementNotFoundException(id));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.DeleteEmployee(Guid.NewGuid().ToString()), Throws.TypeOf<ElementNotFoundException>());
|
|
_employeeStorageContract.Verify(x => x.DelElement(It.IsAny<string>()), Times.Once);
|
|
}
|
|
|
|
[Test]
|
|
public void DeleteEmployee_IdIsNullOrEmpty_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.DeleteEmployee(null), Throws.TypeOf<ArgumentNullException>());
|
|
Assert.That(() => _employeeBusinessLogicContract.DeleteEmployee(string.Empty), Throws.TypeOf<ArgumentNullException>());
|
|
_employeeStorageContract.Verify(x => x.DelElement(It.IsAny<string>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void DeleteEmployee_IdIsNotGuid_ThrowException_Test()
|
|
{
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.DeleteEmployee("id"), Throws.TypeOf<ValidationException>());
|
|
_employeeStorageContract.Verify(x => x.DelElement(It.IsAny<string>()), Times.Never);
|
|
}
|
|
|
|
[Test]
|
|
public void DeleteEmployee_StorageThrowError_ThrowException_Test()
|
|
{
|
|
//Arrange
|
|
_employeeStorageContract.Setup(x => x.DelElement(It.IsAny<string>())).Throws(new StorageException(new InvalidOperationException()));
|
|
//Act&Assert
|
|
Assert.That(() => _employeeBusinessLogicContract.DeleteEmployee(Guid.NewGuid().ToString()), Throws.TypeOf<StorageException>());
|
|
_employeeStorageContract.Verify(x => x.DelElement(It.IsAny<string>()), Times.Once);
|
|
}
|
|
}
|