forked from slavaxom9k/PIBD-23_Fomichev_V.S._MagicCarpet
137 lines
5.9 KiB
C#
137 lines
5.9 KiB
C#
using MagicCarpetContracts.DataModels;
|
|
using MagicCarpetDatabase.Implementations;
|
|
using MagicCarpetDatabase.Models;
|
|
using MagicCarpetTests.Infrastructure;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace MagicCarpetTests.StoragesContractsTests;
|
|
|
|
[TestFixture]
|
|
internal class SalaryStorageContractTests : BaseStorageContractTest
|
|
{
|
|
private SalaryStorageContract _salaryStorageContract;
|
|
private Employee _employee;
|
|
|
|
[SetUp]
|
|
public void SetUp()
|
|
{
|
|
_salaryStorageContract = new SalaryStorageContract(MagicCarpetDbContext);
|
|
_employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn();
|
|
}
|
|
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
MagicCarpetDbContext.RemoveSalariesFromDatabase();
|
|
MagicCarpetDbContext.RemoveEmployeesFromDatabase();
|
|
}
|
|
|
|
[Test]
|
|
public void Try_GetList_WhenHaveRecords_Test()
|
|
{
|
|
var salary = MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(_employee.Id, employeeSalary: 100);
|
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(_employee.Id);
|
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(_employee.Id);
|
|
var list = _salaryStorageContract.GetList(DateTime.UtcNow.AddDays(-10), DateTime.UtcNow.AddDays(10));
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(list, Has.Count.EqualTo(3));
|
|
AssertElement(list.Single(x => x.Salary == salary.EmployeeSalary), salary);
|
|
}
|
|
|
|
[Test]
|
|
public void Try_GetList_WhenNoRecords_Test()
|
|
{
|
|
var list = _salaryStorageContract.GetList(DateTime.UtcNow.AddDays(-10), DateTime.UtcNow.AddDays(10));
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(list, Is.Empty);
|
|
}
|
|
|
|
[Test]
|
|
public void Try_GetList_OnlyInDatePeriod_Test()
|
|
{
|
|
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(1).AddMinutes(-5));
|
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(_employee.Id, salaryDate: DateTime.UtcNow.AddDays(1).AddMinutes(5));
|
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(_employee.Id, salaryDate: DateTime.UtcNow.AddDays(-2));
|
|
var list = _salaryStorageContract.GetList(DateTime.UtcNow.AddDays(-1), DateTime.UtcNow.AddDays(1));
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(list, Has.Count.EqualTo(2));
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void Try_GetList_ByEmployee_Test()
|
|
{
|
|
var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn("name 2");
|
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(_employee.Id);
|
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(_employee.Id);
|
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id);
|
|
var list = _salaryStorageContract.GetList(DateTime.UtcNow.AddDays(-1), DateTime.UtcNow.AddDays(1), _employee.Id);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(list, Has.Count.EqualTo(2));
|
|
Assert.That(list.All(x => x.EmployeeId == _employee.Id));
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void Try_GetList_ByEmployeeOnlyInDatePeriod_Test()
|
|
{
|
|
var employee = MagicCarpetDbContext.InsertEmployeeToDatabaseAndReturn(fio: "name 2");
|
|
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(1).AddMinutes(-5));
|
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(employee.Id, salaryDate: DateTime.UtcNow.AddDays(1).AddMinutes(-5));
|
|
MagicCarpetDbContext.InsertSalaryToDatabaseAndReturn(_employee.Id, salaryDate: DateTime.UtcNow.AddDays(-2));
|
|
var list = _salaryStorageContract.GetList(DateTime.UtcNow.AddDays(-1), DateTime.UtcNow.AddDays(1), _employee.Id);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(list, Has.Count.EqualTo(2));
|
|
Assert.That(list.All(x => x.EmployeeId == _employee.Id));
|
|
});
|
|
}
|
|
|
|
[Test]
|
|
public void Try_AddElement_Test()
|
|
{
|
|
var salary = CreateModel(_employee.Id);
|
|
_salaryStorageContract.AddElement(salary);
|
|
AssertElement(MagicCarpetDbContext.GetSalariesFromDatabaseByEmployeeId(_employee.Id).First(), salary);
|
|
}
|
|
|
|
private static void AssertElement(SalaryDataModel? actual, Salary expected)
|
|
{
|
|
Assert.That(actual, Is.Not.Null);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(actual.EmployeeId, Is.EqualTo(expected.EmployeeId));
|
|
Assert.That(actual.Salary, Is.EqualTo(expected.EmployeeSalary));
|
|
});
|
|
}
|
|
|
|
private static SalaryDataModel CreateModel(string employeeId, double employeeSalary = 1, DateTime? salaryDate = null)
|
|
=> new(employeeId, salaryDate ?? DateTime.UtcNow, employeeSalary);
|
|
|
|
private static void AssertElement(Salary? actual, SalaryDataModel expected)
|
|
{
|
|
Assert.That(actual, Is.Not.Null);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(actual.EmployeeId, Is.EqualTo(expected.EmployeeId));
|
|
Assert.That(actual.EmployeeSalary, Is.EqualTo(expected.Salary));
|
|
});
|
|
}
|
|
}
|