feat: тесты, начало проверки многие ко многим
This commit is contained in:
@@ -27,9 +27,9 @@ public class ClientDataModel(string id, string name, string surname, decimal bal
|
||||
|
||||
public string ClerkId { get; private set; } = clerkId;
|
||||
|
||||
public List<DepositClientDataModel> Deposits { get; private set; } = depositClients;
|
||||
public List<DepositClientDataModel> DepositClients { get; private set; } = depositClients;
|
||||
|
||||
public List<ClientCreditProgramDataModel> CreditPrograms { get; private set; } = creditProgramClients;
|
||||
public List<ClientCreditProgramDataModel> CreditProgramClients { get; private set; } = creditProgramClients;
|
||||
|
||||
public void Validate()
|
||||
{
|
||||
@@ -61,13 +61,13 @@ public class ClientDataModel(string id, string name, string surname, decimal bal
|
||||
{
|
||||
throw new ValidationException("The value in the field Clerkid is not a unique identifier");
|
||||
}
|
||||
if (Deposits is null)
|
||||
if (DepositClients is null)
|
||||
{
|
||||
throw new ValidationException("Field Deposits is null");
|
||||
throw new ValidationException("Field DepositClients is null");
|
||||
}
|
||||
if (CreditPrograms is null)
|
||||
if (CreditProgramClients is null)
|
||||
{
|
||||
throw new ValidationException("Field CreditPrograms is null");
|
||||
throw new ValidationException("Field CreditProgramClients is null");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,8 +20,34 @@ internal class ClientStorageContract : IClientStorageContract
|
||||
var config = new MapperConfiguration(cfg =>
|
||||
{
|
||||
cfg.CreateMap<Clerk, ClerkDataModel>();
|
||||
cfg.CreateMap<Client, ClientDataModel>();
|
||||
cfg.CreateMap<ClientDataModel, Client>();
|
||||
cfg.CreateMap<Client, ClientDataModel>()
|
||||
.ForMember(dest => dest.DepositClients, opt => opt.MapFrom(src => src.DepositClients))
|
||||
.ForMember(dest => dest.CreditProgramClients, opt => opt.MapFrom(src => src.CreditProgramClients));
|
||||
cfg.CreateMap<ClientDataModel, Client>()
|
||||
.ForMember(dest => dest.DepositClients, opt => opt.MapFrom(src => src.DepositClients))
|
||||
.ForMember(dest => dest.CreditProgramClients, opt => opt.MapFrom(src => src.CreditProgramClients));
|
||||
cfg.CreateMap<DepositClient, DepositClientDataModel>()
|
||||
.ForMember(dest => dest.DepositId, opt => opt.MapFrom(src => src.DepositId))
|
||||
.ForMember(dest => dest.ClientId, opt => opt.MapFrom(src => src.ClientId));
|
||||
cfg.CreateMap<DepositClientDataModel, DepositClient>()
|
||||
.ForMember(dest => dest.DepositId, opt => opt.MapFrom(src => src.DepositId))
|
||||
.ForMember(dest => dest.ClientId, opt => opt.MapFrom(src => src.ClientId));
|
||||
cfg.CreateMap<Deposit, DepositClientDataModel>()
|
||||
.ForMember(dest => dest.DepositId, opt => opt.MapFrom(src => src.Id))
|
||||
.ForMember(dest => dest.ClientId, opt => opt.Ignore());
|
||||
cfg.CreateMap<DepositClientDataModel, Deposit>()
|
||||
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.DepositId));
|
||||
cfg.CreateMap<ClientCreditProgram, ClientCreditProgramDataModel>()
|
||||
.ForMember(dest => dest.ClientId, opt => opt.MapFrom(src => src.ClientId))
|
||||
.ForMember(dest => dest.CreditProgramId, opt => opt.MapFrom(src => src.CreditProgramId));
|
||||
cfg.CreateMap<ClientCreditProgramDataModel, ClientCreditProgram>()
|
||||
.ForMember(dest => dest.ClientId, opt => opt.MapFrom(src => src.ClientId))
|
||||
.ForMember(dest => dest.CreditProgramId, opt => opt.MapFrom(src => src.CreditProgramId));
|
||||
cfg.CreateMap<CreditProgram, ClientCreditProgramDataModel>()
|
||||
.ForMember(dest => dest.CreditProgramId, opt => opt.MapFrom(src => src.Id))
|
||||
.ForMember(dest => dest.ClientId, opt => opt.Ignore());
|
||||
cfg.CreateMap<ClientCreditProgramDataModel, CreditProgram>()
|
||||
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.CreditProgramId));
|
||||
cfg.CreateMap<Replenishment, ReplenishmentDataModel>();
|
||||
});
|
||||
_mapper = new Mapper(config);
|
||||
@@ -122,7 +148,7 @@ internal class ClientStorageContract : IClientStorageContract
|
||||
{
|
||||
var element = GetClientById(clientDataModel.Id) ?? throw new ElementNotFoundException(clientDataModel.Id);
|
||||
//проверь пожалуйста(не уверен)
|
||||
if (clientDataModel.Deposits != null && clientDataModel.CreditPrograms != null)
|
||||
if (clientDataModel.DepositClients != null && clientDataModel.CreditProgramClients != null)
|
||||
{
|
||||
if (element.DepositClients != null || element.DepositClients?.Count >= 0)
|
||||
{
|
||||
@@ -131,11 +157,11 @@ internal class ClientStorageContract : IClientStorageContract
|
||||
|
||||
if (element.CreditProgramClients != null || element.CreditProgramClients?.Count >= 0)
|
||||
{
|
||||
_dbContext.DepositClients.RemoveRange(element.DepositClients);
|
||||
_dbContext.CreditProgramClients.RemoveRange(element.CreditProgramClients);
|
||||
}
|
||||
|
||||
element.DepositClients = _mapper.Map<List<DepositClient>>(clientDataModel.Deposits);
|
||||
element.DepositClients = _mapper.Map<List<DepositClient>>(clientDataModel.CreditPrograms);
|
||||
element.DepositClients = _mapper.Map<List<DepositClient>>(clientDataModel.DepositClients);
|
||||
element.CreditProgramClients = _mapper.Map<List<ClientCreditProgram>>(clientDataModel.CreditProgramClients);
|
||||
}
|
||||
_mapper.Map(element, clientDataModel);
|
||||
_dbContext.SaveChanges();
|
||||
@@ -168,5 +194,5 @@ internal class ClientStorageContract : IClientStorageContract
|
||||
throw new StorageException(ex.Message);
|
||||
}
|
||||
}
|
||||
private Client? GetClientById(string id) => _dbContext.Clients.FirstOrDefault(x => x.Id == id);
|
||||
private Client? GetClientById(string id) => _dbContext.Clients.Include(client => client.DepositClients).Include(client => client.CreditProgramClients).FirstOrDefault(x => x.Id == id);
|
||||
}
|
||||
|
||||
@@ -22,8 +22,18 @@ internal class CreditProgramStorageContract : ICreditProgramStorageContract
|
||||
_dbContext = dbContext;
|
||||
var config = new MapperConfiguration(x =>
|
||||
{
|
||||
x.CreateMap<CreditProgram, CreditProgramDataModel>();
|
||||
x.CreateMap<CreditProgramDataModel, CreditProgram>();
|
||||
x.CreateMap<CreditProgram, CreditProgramDataModel>()
|
||||
.ForMember(dest => dest.Currencies, opt => opt.MapFrom(src => src.CurrencyCreditPrograms));
|
||||
x.CreateMap<CreditProgramDataModel, CreditProgram>()
|
||||
.ForMember(dest => dest.CurrencyCreditPrograms, opt => opt.MapFrom(src => src.Currencies));
|
||||
x.CreateMap<CreditProgramCurrency, CreditProgramCurrencyDataModel>()
|
||||
.ForMember(dest => dest.CreditProgramId, opt => opt.MapFrom(src => src.CreditProgramId))
|
||||
.ForMember(dest => dest.CurrencyId, opt => opt.MapFrom(src => src.CurrencyId));
|
||||
x.CreateMap<CreditProgramCurrencyDataModel, CreditProgramCurrency>()
|
||||
.ForMember(dest => dest.CreditProgramId, opt => opt.MapFrom(src => src.CreditProgramId))
|
||||
.ForMember(dest => dest.CurrencyId, opt => opt.MapFrom(src => src.CurrencyId))
|
||||
.ForMember(dest => dest.CreditProgram, opt => opt.Ignore())
|
||||
.ForMember(dest => dest.Currency, opt => opt.Ignore());
|
||||
});
|
||||
_mapper = new Mapper(config);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BankDatabase.Models;
|
||||
namespace BankDatabase.Models;
|
||||
|
||||
class ClientCreditProgram
|
||||
{
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BankDatabase.Models;
|
||||
namespace BankDatabase.Models;
|
||||
|
||||
class CreditProgramCurrency
|
||||
{
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BankDatabase.Models;
|
||||
namespace BankDatabase.Models;
|
||||
|
||||
class DepositClient
|
||||
{
|
||||
|
||||
@@ -41,7 +41,9 @@ internal static class BankDbContextExtension
|
||||
string? name = "slava",
|
||||
string? surname = "fomichev",
|
||||
decimal balance = 1_000_000,
|
||||
string? clerkId = null
|
||||
string? clerkId = null,
|
||||
List<(string clientId, string creditProgramId)>? creditProgramClients = null, // Item1 = ClientId Item2 = CreditProgramId
|
||||
List<(string depositId, string clientId)>? depositClients = null // Item1 = DepositId Item2 = ClientId
|
||||
)
|
||||
{
|
||||
var client = new Client()
|
||||
@@ -51,7 +53,31 @@ internal static class BankDbContextExtension
|
||||
Surname = surname,
|
||||
Balance = balance,
|
||||
ClerkId = clerkId ?? Guid.NewGuid().ToString(),
|
||||
DepositClients = [],
|
||||
CreditProgramClients = [],
|
||||
};
|
||||
if (creditProgramClients is not null)
|
||||
{
|
||||
foreach (var (clientId, creditProgramId) in creditProgramClients)
|
||||
{
|
||||
dbContext.CreditProgramClients.Add(
|
||||
new ClientCreditProgram
|
||||
{
|
||||
ClientId = clientId,
|
||||
CreditProgramId = creditProgramId,
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
if (depositClients is not null)
|
||||
{
|
||||
foreach (var (depositId, clientId) in depositClients)
|
||||
{
|
||||
dbContext.DepositClients.Add(
|
||||
new DepositClient { ClientId = clientId, DepositId = depositId }
|
||||
);
|
||||
}
|
||||
}
|
||||
dbContext.Clients.Add(client);
|
||||
dbContext.SaveChanges();
|
||||
return client;
|
||||
@@ -64,7 +90,8 @@ internal static class BankDbContextExtension
|
||||
decimal cost = 1_000_000,
|
||||
decimal maxCost = 10_000_000,
|
||||
string? storeleeperId = null,
|
||||
string? periodId = null
|
||||
string? periodId = null,
|
||||
List<(string currencyId, string creditProgramId)>? creditProgramCurrency = null // Item1 = ClientId Item2 = CreditProgramId
|
||||
)
|
||||
{
|
||||
var creditProgram = new CreditProgram()
|
||||
@@ -78,6 +105,20 @@ internal static class BankDbContextExtension
|
||||
};
|
||||
dbContext.CreditPrograms.Add(creditProgram);
|
||||
dbContext.SaveChanges();
|
||||
if (creditProgramCurrency is not null)
|
||||
{
|
||||
foreach (var (currencyId, creditProgramId) in creditProgramCurrency)
|
||||
{
|
||||
dbContext.CurrencyCreditPrograms.Add(
|
||||
new CreditProgramCurrency
|
||||
{
|
||||
CurrencyId = currencyId,
|
||||
CreditProgramId = creditProgram.Id,
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
dbContext.SaveChanges();
|
||||
return creditProgram;
|
||||
}
|
||||
|
||||
@@ -220,7 +261,10 @@ internal static class BankDbContextExtension
|
||||
dbContext.ExecuteSqlRaw("TRUNCATE \"Replenishments\" CASCADE");
|
||||
|
||||
public static Client? GetClientFromDatabase(this BankDbContext dbContext, string id) =>
|
||||
dbContext.Clients.FirstOrDefault(x => x.Id == id);
|
||||
dbContext
|
||||
.Clients.Include(x => x.DepositClients)
|
||||
.Include(x => x.CreditProgramClients)
|
||||
.FirstOrDefault(x => x.Id == id);
|
||||
|
||||
public static Clerk? GetClerkFromDatabase(this BankDbContext dbContext, string id) =>
|
||||
dbContext.Clerks.FirstOrDefault(x => x.Id == id);
|
||||
|
||||
@@ -10,35 +10,70 @@ namespace BankTests.StorageContactsTests;
|
||||
[TestFixture]
|
||||
internal class ClientStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
private IClientStorageContract _clientStorageContract;
|
||||
|
||||
private string _clerkId;
|
||||
|
||||
private IClientStorageContract _clientStorageContract;
|
||||
private string _depositId;
|
||||
|
||||
private string _creditProgramId;
|
||||
|
||||
private string _storekeeperId;
|
||||
|
||||
private string _periodId;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_clerkId = BankDbContext.InsertClerkToDatabaseAndReturn().Id;
|
||||
_clientStorageContract = new ClientStorageContract(BankDbContext);
|
||||
_clerkId = BankDbContext.InsertClerkToDatabaseAndReturn().Id;
|
||||
_storekeeperId = BankDbContext.InsertStorekeeperToDatabaseAndReturn().Id;
|
||||
_depositId = BankDbContext.InsertDepositToDatabaseAndReturn(clerkId: _clerkId).Id;
|
||||
_periodId = BankDbContext.InsertPeriodToDatabaseAndReturn(storekeeperId: _storekeeperId).Id;
|
||||
_creditProgramId = BankDbContext
|
||||
.InsertCreditProgramToDatabaseAndReturn(
|
||||
storeleeperId: _storekeeperId,
|
||||
periodId: _periodId
|
||||
)
|
||||
.Id;
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
BankDbContext.RemoveClientsFromDatabase();
|
||||
BankDbContext.RemoveDepositsFromDatabase();
|
||||
BankDbContext.RemovePeriodsFromDatabase();
|
||||
BankDbContext.RemoveCreditProgramsFromDatabase();
|
||||
BankDbContext.RemoveClerksFromDatabase();
|
||||
BankDbContext.RemoveStorekeepersFromDatabase();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetListWhenHaveRecords_ShouldSucces_Test()
|
||||
{
|
||||
var client = BankDbContext.InsertClientToDatabaseAndReturn(clerkId: _clerkId);
|
||||
BankDbContext.InsertClientToDatabaseAndReturn(clerkId: _clerkId);
|
||||
BankDbContext.InsertClientToDatabaseAndReturn(clerkId: _clerkId);
|
||||
var clientId = Guid.NewGuid().ToString();
|
||||
var client = BankDbContext.InsertClientToDatabaseAndReturn(
|
||||
id: clientId,
|
||||
clerkId: _clerkId,
|
||||
depositClients: [(_depositId, clientId)]
|
||||
);
|
||||
BankDbContext.InsertClientToDatabaseAndReturn(
|
||||
clerkId: _clerkId,
|
||||
depositClients:
|
||||
[
|
||||
(BankDbContext.InsertDepositToDatabaseAndReturn(clerkId: _clerkId).Id, clientId),
|
||||
]
|
||||
);
|
||||
BankDbContext.InsertClientToDatabaseAndReturn(
|
||||
clerkId: _clerkId,
|
||||
creditProgramClients: [(clientId, _creditProgramId)]
|
||||
);
|
||||
|
||||
var list = _clientStorageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Has.Count.EqualTo(3));
|
||||
AssertElement(list.First(x => x.Id == client.Id), client);
|
||||
AssertElement(list.First(x => x.Id == clientId), client);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -78,7 +113,13 @@ internal class ClientStorageContractTests : BaseStorageContractTest
|
||||
[Test]
|
||||
public void Try_AddElement_Test()
|
||||
{
|
||||
var client = CreateModel(_clerkId);
|
||||
var clientId = Guid.NewGuid().ToString();
|
||||
var client = CreateModel(
|
||||
_clerkId,
|
||||
clientId,
|
||||
depositClients: [new DepositClientDataModel(_depositId, clientId)],
|
||||
clientCredits: [new ClientCreditProgramDataModel(clientId, _creditProgramId)]
|
||||
);
|
||||
_clientStorageContract.AddElement(client);
|
||||
AssertElement(BankDbContext.GetClientFromDatabase(client.Id), client);
|
||||
}
|
||||
@@ -86,10 +127,20 @@ internal class ClientStorageContractTests : BaseStorageContractTest
|
||||
[Test]
|
||||
public void Try_UpdElement_Test()
|
||||
{
|
||||
var client = CreateModel(_clerkId);
|
||||
BankDbContext.InsertClientToDatabaseAndReturn(id: client.Id, clerkId: _clerkId);
|
||||
var clientId = Guid.NewGuid().ToString();
|
||||
var client = CreateModel(
|
||||
_clerkId,
|
||||
id: clientId,
|
||||
depositClients: [new DepositClientDataModel(_depositId, clientId)]
|
||||
);
|
||||
BankDbContext.InsertClientToDatabaseAndReturn(
|
||||
id: clientId,
|
||||
clerkId: _clerkId,
|
||||
creditProgramClients: [(clientId, _creditProgramId)]
|
||||
);
|
||||
_clientStorageContract.UpdElement(client);
|
||||
AssertElement(BankDbContext.GetClientFromDatabase(client.Id), client);
|
||||
BankDbContext.ChangeTracker.Clear();
|
||||
AssertElement(BankDbContext.GetClientFromDatabase(clientId), client);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -131,6 +182,57 @@ internal class ClientStorageContractTests : BaseStorageContractTest
|
||||
Assert.That(actual.Balance, Is.EqualTo(expected.Balance));
|
||||
Assert.That(actual.ClerkId, Is.EqualTo(expected.ClerkId));
|
||||
});
|
||||
|
||||
if (expected.DepositClients is not null)
|
||||
{
|
||||
Assert.That(actual.DepositClients, Is.Not.Null);
|
||||
Assert.That(actual.DepositClients, Has.Count.EqualTo(expected.DepositClients.Count));
|
||||
for (int i = 0; i < actual.DepositClients.Count; ++i)
|
||||
{
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(
|
||||
actual.DepositClients[i].ClientId,
|
||||
Is.EqualTo(expected.DepositClients[i].ClientId)
|
||||
);
|
||||
Assert.That(
|
||||
actual.DepositClients[i].DepositId,
|
||||
Is.EqualTo(expected.DepositClients[i].DepositId)
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.That(actual.DepositClients, Is.Null);
|
||||
}
|
||||
|
||||
if (expected.CreditProgramClients is not null)
|
||||
{
|
||||
Assert.That(actual.CreditProgramClients, Is.Not.Null);
|
||||
Assert.That(
|
||||
actual.CreditProgramClients,
|
||||
Has.Count.EqualTo(expected.CreditProgramClients.Count)
|
||||
);
|
||||
for (int i = 0; i < actual.CreditProgramClients.Count; ++i)
|
||||
{
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(
|
||||
actual.CreditProgramClients[i].ClientId,
|
||||
Is.EqualTo(expected.CreditProgramClients[i].ClientId)
|
||||
);
|
||||
Assert.That(
|
||||
actual.CreditProgramClients[i].CreditProgramId,
|
||||
Is.EqualTo(expected.CreditProgramClients[i].CreditProgramId)
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.That(actual.CreditProgramClients, Is.Null);
|
||||
}
|
||||
}
|
||||
|
||||
private static void AssertElement(Client actual, ClientDataModel? expected)
|
||||
@@ -144,5 +246,56 @@ internal class ClientStorageContractTests : BaseStorageContractTest
|
||||
Assert.That(actual.Balance, Is.EqualTo(expected.Balance));
|
||||
Assert.That(actual.ClerkId, Is.EqualTo(expected.ClerkId));
|
||||
});
|
||||
|
||||
if (expected.DepositClients is not null)
|
||||
{
|
||||
Assert.That(actual.DepositClients, Is.Not.Null);
|
||||
Assert.That(actual.DepositClients, Has.Count.EqualTo(expected.DepositClients.Count));
|
||||
for (int i = 0; i < actual.DepositClients.Count; ++i)
|
||||
{
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(
|
||||
actual.DepositClients[i].ClientId,
|
||||
Is.EqualTo(expected.DepositClients[i].ClientId)
|
||||
);
|
||||
Assert.That(
|
||||
actual.DepositClients[i].DepositId,
|
||||
Is.EqualTo(expected.DepositClients[i].DepositId)
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.That(actual.DepositClients, Is.Null);
|
||||
}
|
||||
|
||||
if (expected.CreditProgramClients is not null)
|
||||
{
|
||||
Assert.That(actual.CreditProgramClients, Is.Not.Null);
|
||||
Assert.That(
|
||||
actual.CreditProgramClients,
|
||||
Has.Count.EqualTo(expected.CreditProgramClients.Count)
|
||||
);
|
||||
for (int i = 0; i < actual.CreditProgramClients.Count; ++i)
|
||||
{
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(
|
||||
actual.CreditProgramClients[i].ClientId,
|
||||
Is.EqualTo(expected.CreditProgramClients[i].ClientId)
|
||||
);
|
||||
Assert.That(
|
||||
actual.CreditProgramClients[i].CreditProgramId,
|
||||
Is.EqualTo(expected.CreditProgramClients[i].CreditProgramId)
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.That(actual.CreditProgramClients, Is.Null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,12 +17,15 @@ internal class CreditProgramStorageContractTests : BaseStorageContractTest
|
||||
|
||||
private string _periodId;
|
||||
|
||||
private string _currenyId;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_storageContract = new CreditProgramStorageContract(BankDbContext);
|
||||
_storekeeperId = BankDbContext.InsertStorekeeperToDatabaseAndReturn().Id;
|
||||
_periodId = BankDbContext.InsertPeriodToDatabaseAndReturn(storekeeperId: _storekeeperId).Id;
|
||||
_currenyId = BankDbContext.InsertCurrencyToDatabaseAndReturn(storekeeperId: _storekeeperId).Id;
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
@@ -30,15 +33,18 @@ internal class CreditProgramStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
BankDbContext.RemoveCreditProgramsFromDatabase();
|
||||
BankDbContext.RemovePeriodsFromDatabase();
|
||||
BankDbContext.RemoveCurrenciesFromDatabase();
|
||||
BankDbContext.RemoveStorekeepersFromDatabase();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetListWhenHaveRecords_ShouldSucces_Test()
|
||||
{
|
||||
var clerk = BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
var creditProgramId = Guid.NewGuid().ToString();
|
||||
var creditProgram = BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
storeleeperId: _storekeeperId,
|
||||
periodId: _periodId
|
||||
periodId: _periodId,
|
||||
creditProgramCurrency: [( _currenyId, creditProgramId )]
|
||||
);
|
||||
BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
name: "bankrot2",
|
||||
@@ -54,7 +60,7 @@ internal class CreditProgramStorageContractTests : BaseStorageContractTest
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Has.Count.EqualTo(3));
|
||||
AssertElement(list.First(x => x.Id == clerk.Id), clerk);
|
||||
AssertElement(list.First(x => x.Id == creditProgram.Id), creditProgram);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -94,7 +100,8 @@ internal class CreditProgramStorageContractTests : BaseStorageContractTest
|
||||
BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
name: "1",
|
||||
periodId: _periodId,
|
||||
storeleeperId: _storekeeperId
|
||||
storeleeperId: _storekeeperId,
|
||||
creditProgramCurrency: [(_currenyId, credit.Id)]
|
||||
);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(credit),
|
||||
@@ -113,7 +120,8 @@ internal class CreditProgramStorageContractTests : BaseStorageContractTest
|
||||
BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
credit.Id,
|
||||
periodId: _periodId,
|
||||
storeleeperId: _storekeeperId
|
||||
storeleeperId: _storekeeperId,
|
||||
creditProgramCurrency: [(_currenyId, credit.Id)]
|
||||
);
|
||||
_storageContract.UpdElement(credit);
|
||||
AssertElement(BankDbContext.GetCreditProgramFromDatabase(credit.Id), credit);
|
||||
@@ -162,6 +170,32 @@ internal class CreditProgramStorageContractTests : BaseStorageContractTest
|
||||
Assert.That(actual.StorekeeperId, Is.EqualTo(expected.StorekeeperId));
|
||||
Assert.That(actual.PeriodId, Is.EqualTo(expected.PeriodId));
|
||||
});
|
||||
if (actual.Currencies is not null)
|
||||
{
|
||||
Assert.That(expected.CurrencyCreditPrograms, Is.Not.Null);
|
||||
Assert.That(
|
||||
actual.Currencies,
|
||||
Has.Count.EqualTo(expected.CurrencyCreditPrograms.Count)
|
||||
);
|
||||
for (int i = 0; i < actual.Currencies.Count; ++i)
|
||||
{
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(
|
||||
actual.Currencies[i].CreditProgramId,
|
||||
Is.EqualTo(expected.CurrencyCreditPrograms[i].CreditProgramId)
|
||||
);
|
||||
Assert.That(
|
||||
actual.Currencies[i].CurrencyId,
|
||||
Is.EqualTo(expected.CurrencyCreditPrograms[i].CurrencyId)
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.That(expected.CurrencyCreditPrograms, Is.Null);
|
||||
}
|
||||
}
|
||||
|
||||
private static void AssertElement(CreditProgram actual, CreditProgramDataModel? expected)
|
||||
@@ -176,5 +210,31 @@ internal class CreditProgramStorageContractTests : BaseStorageContractTest
|
||||
Assert.That(actual.StorekeeperId, Is.EqualTo(expected.StorekeeperId));
|
||||
Assert.That(actual.PeriodId, Is.EqualTo(expected.PeriodId));
|
||||
});
|
||||
if (actual.CurrencyCreditPrograms is not null)
|
||||
{
|
||||
Assert.That(expected.Currencies, Is.Not.Null);
|
||||
Assert.That(
|
||||
actual.CurrencyCreditPrograms,
|
||||
Has.Count.EqualTo(expected.Currencies.Count)
|
||||
);
|
||||
for (int i = 0;i < actual.CurrencyCreditPrograms.Count;++i)
|
||||
{
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(
|
||||
actual.CurrencyCreditPrograms[i].CreditProgramId,
|
||||
Is.EqualTo(expected.Currencies[i].CreditProgramId)
|
||||
);
|
||||
Assert.That(
|
||||
actual.CurrencyCreditPrograms[i].CurrencyId,
|
||||
Is.EqualTo(expected.Currencies[i].CurrencyId)
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.That(expected.Currencies, Is.Null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace BankTests.StorageContactsTests;
|
||||
internal class StorekeeperStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
private IStorekeeperStorageContract _storageContract;
|
||||
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
@@ -94,7 +94,10 @@ internal class StorekeeperStorageContractTests : BaseStorageContractTest
|
||||
public void Try_AddElement_WhenHaveRecordWithSameLogin_Test()
|
||||
{
|
||||
var storekeeper = CreateModel(login: "cheburek");
|
||||
BankDbContext.InsertStorekeeperToDatabaseAndReturn(email: "email@email.ru", login: "cheburek");
|
||||
BankDbContext.InsertStorekeeperToDatabaseAndReturn(
|
||||
email: "email@email.ru",
|
||||
login: "cheburek"
|
||||
);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(storekeeper),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
@@ -169,4 +172,4 @@ internal class StorekeeperStorageContractTests : BaseStorageContractTest
|
||||
Assert.That(actual.PhoneNumber, Is.EqualTo(expected.PhoneNumber));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user