Merge pull request 'Bank_Tests' (#6) from Bank_Tests into Task_4_Storage
Reviewed-on: #6 Первая версия тестов для контрактов бд, ещё не все мапперы настроены, будем фиксить в процессе работы
This commit was merged in pull request #6.
This commit is contained in:
@@ -5,6 +5,7 @@ using BankContracts.Exceptions;
|
||||
using BankContracts.Extensions;
|
||||
using BankContracts.StorageContracts;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using static System.Single;
|
||||
|
||||
namespace BankBusinessLogic.Implementations;
|
||||
|
||||
@@ -57,8 +58,10 @@ internal class DepositBusinessLogicContract(
|
||||
return _depositStorageContract.GetElementById(data)
|
||||
?? throw new ElementNotFoundException($"element not found: {data}");
|
||||
}
|
||||
return _depositStorageContract.GetElementByInterestRate(data)
|
||||
?? throw new ElementNotFoundException($"element not found: {data}");
|
||||
return TryParse(data, out var result) // пофиксить!!!
|
||||
? _depositStorageContract.GetElementByInterestRate(result) ??
|
||||
throw new ElementNotFoundException($"element not found: {data}")
|
||||
: throw new ElementNotFoundException($"element not found: {data}");
|
||||
}
|
||||
|
||||
public void InsertDeposit(DepositDataModel depositDataModel)
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,4 +16,8 @@
|
||||
<ProjectReference Include="..\BankContracts\BankContracts.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<InternalsVisibleTo Include="BankTests" />
|
||||
<InternalsVisibleTo Include="DynamicProxyGenAssembly2" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -85,6 +85,11 @@ internal class ClerkStorageContract : IClerkStorageContract
|
||||
_dbContext.Clerks.Add(_mapper.Map<Clerk>(clerkDataModel));
|
||||
_dbContext.SaveChanges();
|
||||
}
|
||||
catch (InvalidOperationException ex) when (ex.TargetSite?.Name == "ThrowIdentityConflict")
|
||||
{
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
throw new ElementExistsException($"Id {clerkDataModel.Id}");
|
||||
}
|
||||
catch (DbUpdateException ex) when (ex.InnerException is PostgresException { ConstraintName: "IX_Clerks_Email" })
|
||||
{
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
@@ -115,6 +120,11 @@ internal class ClerkStorageContract : IClerkStorageContract
|
||||
_dbContext.Clerks.Update(_mapper.Map(clerkDataModel, element));
|
||||
_dbContext.SaveChanges();
|
||||
}
|
||||
catch (ElementNotFoundException)
|
||||
{
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
throw;
|
||||
}
|
||||
catch (DbUpdateException ex) when (ex.InnerException is PostgresException { ConstraintName: "IX_Clerks_Email" })
|
||||
{
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
|
||||
@@ -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);
|
||||
@@ -31,7 +57,7 @@ internal class ClientStorageContract : IClientStorageContract
|
||||
{
|
||||
try
|
||||
{
|
||||
var query = _dbContext.Deposits.Include(x => x.Clerk).AsQueryable();
|
||||
var query = _dbContext.Clients.Include(x => x.Clerk).AsQueryable();
|
||||
if (clerkId is not null)
|
||||
{
|
||||
query = query.Where(x => x.ClerkId == clerkId);
|
||||
@@ -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,12 +157,13 @@ 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();
|
||||
transaction.Commit();
|
||||
}
|
||||
@@ -167,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);
|
||||
}
|
||||
|
||||
@@ -111,6 +111,7 @@ internal class DepositStorageContract : IDepositStorageContract
|
||||
|
||||
element.DepositCurrencies = _mapper.Map<List<DepositCurrency>>(depositDataModel.Currencies);
|
||||
}
|
||||
_mapper.Map(depositDataModel, element);
|
||||
_dbContext.SaveChanges();
|
||||
transaction.Commit();
|
||||
}
|
||||
|
||||
@@ -19,7 +19,8 @@ internal class PeriodStorageContract : IPeriodStorageContract
|
||||
_dbContext = dbContext;
|
||||
var config = new MapperConfiguration(cfg =>
|
||||
{
|
||||
cfg.CreateMap<Period, PeriodDataModel>();
|
||||
cfg.CreateMap<Period, PeriodDataModel>()
|
||||
.ConstructUsing(src => new PeriodDataModel(src.Id, src.StartTime, src.EndTime, src.StorekeeperId));
|
||||
cfg.CreateMap<PeriodDataModel, Period>();
|
||||
});
|
||||
_mapper = new Mapper(config);
|
||||
@@ -42,6 +43,8 @@ internal class PeriodStorageContract : IPeriodStorageContract
|
||||
{
|
||||
query = query.Where(x => x.StorekeeperId == storekeeperId);
|
||||
}
|
||||
var test0 = query.FirstOrDefault();
|
||||
var test = _mapper.Map<PeriodDataModel>(test0);
|
||||
return [..query.Select(x => _mapper.Map<PeriodDataModel>(x))];
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -71,6 +74,11 @@ internal class PeriodStorageContract : IPeriodStorageContract
|
||||
_dbContext.Periods.Add(_mapper.Map<Period>(periodDataModel));
|
||||
_dbContext.SaveChanges();
|
||||
}
|
||||
catch (InvalidOperationException ex) when (ex.TargetSite?.Name == "ThrowIdentityConflict")
|
||||
{
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
throw new ElementExistsException($"Id {periodDataModel.Id}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
|
||||
@@ -28,7 +28,7 @@ internal class ReplenishmentStorageContract : IReplenishmentStorageContract
|
||||
{
|
||||
try
|
||||
{
|
||||
var query = _dbContext.Replenishments.Where(x => x.Date >= fromDate && x.Date <= toDate);
|
||||
var query = _dbContext.Replenishments.AsQueryable();
|
||||
if (clerkId is not null)
|
||||
{
|
||||
query = query.Where(x => x.ClerkId == clerkId);
|
||||
@@ -37,6 +37,14 @@ internal class ReplenishmentStorageContract : IReplenishmentStorageContract
|
||||
{
|
||||
query = query.Where(x => x.DepositId == depositId);
|
||||
}
|
||||
if (fromDate is not null)
|
||||
{
|
||||
query = query.Where(x => x.Date >= fromDate);
|
||||
}
|
||||
if (toDate is not null)
|
||||
{
|
||||
query = query.Where(x => x.Date <= toDate);
|
||||
}
|
||||
return [.. query.Select(x => _mapper.Map<ReplenishmentDataModel>(x))];
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -85,6 +85,11 @@ internal class StorekeeperStorageContract : IStorekeeperStorageContract
|
||||
_dbContext.Storekeepers.Add(_mapper.Map<Storekeeper>(storekeeperDataModel));
|
||||
_dbContext.SaveChanges();
|
||||
}
|
||||
catch (InvalidOperationException ex) when (ex.TargetSite?.Name == "ThrowIdentityConflict")
|
||||
{
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
throw new ElementExistsException($"Id {storekeeperDataModel.Id}");
|
||||
}
|
||||
catch (DbUpdateException ex) when (ex.InnerException is PostgresException { ConstraintName: "IX_Storekeepers_Email" })
|
||||
{
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
@@ -115,6 +120,11 @@ internal class StorekeeperStorageContract : IStorekeeperStorageContract
|
||||
_dbContext.Storekeepers.Update(_mapper.Map(storekeeperDataModel, element));
|
||||
_dbContext.SaveChanges();
|
||||
}
|
||||
catch (ElementNotFoundException)
|
||||
{
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
throw;
|
||||
}
|
||||
catch (DbUpdateException ex) when (ex.InnerException is PostgresException { ConstraintName: "IX_Storekeepers_Email" })
|
||||
{
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
30
TheBank/BankTests/BankTests.csproj
Normal file
30
TheBank/BankTests/BankTests.csproj
Normal file
@@ -0,0 +1,30 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.2" />
|
||||
<PackageReference Include="EntityFramework" Version="5.0.0" />
|
||||
<PackageReference Include="EntityFramework.ru" Version="5.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
||||
<PackageReference Include="NUnit" Version="4.2.2" />
|
||||
<PackageReference Include="NUnit.Analyzers" Version="4.4.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BankContracts\BankContracts.csproj" />
|
||||
<ProjectReference Include="..\BankDatabase\BankDatabase.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Using Include="NUnit.Framework" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
298
TheBank/BankTests/Infrastructure/BankDbContextExtension.cs
Normal file
298
TheBank/BankTests/Infrastructure/BankDbContextExtension.cs
Normal file
@@ -0,0 +1,298 @@
|
||||
using System.Xml.Linq;
|
||||
using BankDatabase;
|
||||
using BankDatabase.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace BankTests.Infrastructure;
|
||||
|
||||
internal static class BankDbContextExtension
|
||||
{
|
||||
public static Clerk InsertClerkToDatabaseAndReturn(
|
||||
this BankDbContext dbContext,
|
||||
string? id = null,
|
||||
string? name = "vasya",
|
||||
string? surname = "petrov",
|
||||
string? middlename = "petrovich",
|
||||
string? login = "vasyapupkin",
|
||||
string? passwd = "*******",
|
||||
string? email = "email@email.com",
|
||||
string? phone = "+7-777-777-77-77"
|
||||
)
|
||||
{
|
||||
var clerck = new Clerk()
|
||||
{
|
||||
Id = id ?? Guid.NewGuid().ToString(),
|
||||
Name = name,
|
||||
Surname = surname,
|
||||
MiddleName = middlename,
|
||||
Login = login,
|
||||
Password = passwd,
|
||||
Email = email,
|
||||
PhoneNumber = phone,
|
||||
};
|
||||
dbContext.Clerks.Add(clerck);
|
||||
dbContext.SaveChanges();
|
||||
return clerck;
|
||||
}
|
||||
|
||||
public static Client InsertClientToDatabaseAndReturn(
|
||||
this BankDbContext dbContext,
|
||||
string? id = null,
|
||||
string? name = "slava",
|
||||
string? surname = "fomichev",
|
||||
decimal balance = 1_000_000,
|
||||
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()
|
||||
{
|
||||
Id = id ?? Guid.NewGuid().ToString(),
|
||||
Name = name,
|
||||
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;
|
||||
}
|
||||
|
||||
public static CreditProgram InsertCreditProgramToDatabaseAndReturn(
|
||||
this BankDbContext dbContext,
|
||||
string? id = null,
|
||||
string? name = "bankrot",
|
||||
decimal cost = 1_000_000,
|
||||
decimal maxCost = 10_000_000,
|
||||
string? storeleeperId = null,
|
||||
string? periodId = null,
|
||||
List<(string currencyId, string creditProgramId)>? creditProgramCurrency = null // Item1 = ClientId Item2 = CreditProgramId
|
||||
)
|
||||
{
|
||||
var creditProgram = new CreditProgram()
|
||||
{
|
||||
Id = id ?? Guid.NewGuid().ToString(),
|
||||
Name = name,
|
||||
Cost = cost,
|
||||
MaxCost = maxCost,
|
||||
StorekeeperId = storeleeperId ?? Guid.NewGuid().ToString(),
|
||||
PeriodId = periodId ?? Guid.NewGuid().ToString(),
|
||||
};
|
||||
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;
|
||||
}
|
||||
|
||||
public static Storekeeper InsertStorekeeperToDatabaseAndReturn(
|
||||
this BankDbContext dbContext,
|
||||
string? id = null,
|
||||
string? name = "slava",
|
||||
string? surname = "fomichev",
|
||||
string? middlename = "sergeevich",
|
||||
string? login = "xomyak",
|
||||
string? password = "****",
|
||||
string? email = "email@email.com",
|
||||
string? phone = "+9-888-888-88-88"
|
||||
)
|
||||
{
|
||||
var storekeeper = new Storekeeper()
|
||||
{
|
||||
Id = id ?? Guid.NewGuid().ToString(),
|
||||
Name = name,
|
||||
Surname = surname,
|
||||
MiddleName = middlename,
|
||||
Login = login,
|
||||
Password = password,
|
||||
Email = email,
|
||||
PhoneNumber = phone,
|
||||
};
|
||||
dbContext.Storekeepers.Add(storekeeper);
|
||||
dbContext.SaveChanges();
|
||||
return storekeeper;
|
||||
}
|
||||
|
||||
public static Period InsertPeriodToDatabaseAndReturn(
|
||||
this BankDbContext dbContext,
|
||||
string? id = null,
|
||||
DateTime? start = null,
|
||||
DateTime? end = null,
|
||||
string? storekeeperId = null
|
||||
)
|
||||
{
|
||||
var period = new Period()
|
||||
{
|
||||
Id = id ?? Guid.NewGuid().ToString(),
|
||||
StartTime = start ?? DateTime.UtcNow,
|
||||
EndTime = end ?? DateTime.UtcNow,
|
||||
StorekeeperId = storekeeperId ?? Guid.NewGuid().ToString(),
|
||||
};
|
||||
dbContext.Periods.Add(period);
|
||||
dbContext.SaveChanges();
|
||||
return period;
|
||||
}
|
||||
|
||||
public static Currency InsertCurrencyToDatabaseAndReturn(
|
||||
this BankDbContext dbContext,
|
||||
string? id = null,
|
||||
string? name = "pop",
|
||||
string? abbreviation = "rub",
|
||||
decimal cost = 10,
|
||||
string? storekeeperId = null
|
||||
)
|
||||
{
|
||||
var currency = new Currency()
|
||||
{
|
||||
Id = id ?? Guid.NewGuid().ToString(),
|
||||
Name = name,
|
||||
Abbreviation = abbreviation,
|
||||
Cost = cost,
|
||||
StorekeeperId = storekeeperId ?? Guid.NewGuid().ToString(),
|
||||
};
|
||||
dbContext.Currencies.Add(currency);
|
||||
dbContext.SaveChanges();
|
||||
return currency;
|
||||
}
|
||||
|
||||
public static Deposit InsertDepositToDatabaseAndReturn(
|
||||
this BankDbContext dbContext,
|
||||
string? id = null,
|
||||
float interestRate = 1f,
|
||||
decimal cost = 10,
|
||||
int period = 1,
|
||||
string? clerkId = null
|
||||
)
|
||||
{
|
||||
var deposit = new Deposit()
|
||||
{
|
||||
Id = id ?? Guid.NewGuid().ToString(),
|
||||
InterestRate = interestRate,
|
||||
Cost = cost,
|
||||
Period = period,
|
||||
ClerkId = clerkId ?? Guid.NewGuid().ToString(),
|
||||
};
|
||||
dbContext.Deposits.Add(deposit);
|
||||
dbContext.SaveChanges();
|
||||
return deposit;
|
||||
}
|
||||
|
||||
public static Replenishment InsertReplenishmentToDatabaseAndReturn(
|
||||
this BankDbContext dbContext,
|
||||
string? id = null,
|
||||
decimal amount = 1,
|
||||
DateTime? date = null,
|
||||
string? depositId = null,
|
||||
string? clerkId = null
|
||||
)
|
||||
{
|
||||
var replenishment = new Replenishment()
|
||||
{
|
||||
Id = id ?? Guid.NewGuid().ToString(),
|
||||
Amount = amount,
|
||||
Date = date ?? DateTime.UtcNow,
|
||||
DepositId = depositId ?? Guid.NewGuid().ToString(),
|
||||
ClerkId = clerkId ?? Guid.NewGuid().ToString(),
|
||||
};
|
||||
dbContext.Replenishments.Add(replenishment);
|
||||
dbContext.SaveChanges();
|
||||
return replenishment;
|
||||
}
|
||||
|
||||
public static void RemoveCurrenciesFromDatabase(this BankDbContext dbContext) =>
|
||||
dbContext.ExecuteSqlRaw("TRUNCATE \"Currencies\" CASCADE");
|
||||
|
||||
public static void RemoveClientsFromDatabase(this BankDbContext dbContext) =>
|
||||
dbContext.ExecuteSqlRaw("TRUNCATE \"Clients\" CASCADE");
|
||||
|
||||
public static void RemoveStorekeepersFromDatabase(this BankDbContext dbContext) =>
|
||||
dbContext.ExecuteSqlRaw("TRUNCATE \"Storekeepers\" CASCADE");
|
||||
|
||||
public static void RemovePeriodsFromDatabase(this BankDbContext dbContext) =>
|
||||
dbContext.ExecuteSqlRaw("TRUNCATE \"Periods\" CASCADE");
|
||||
|
||||
public static void RemoveClerksFromDatabase(this BankDbContext dbContext) =>
|
||||
dbContext.ExecuteSqlRaw("TRUNCATE \"Clerks\" CASCADE");
|
||||
|
||||
public static void RemoveCreditProgramsFromDatabase(this BankDbContext dbContext) =>
|
||||
dbContext.ExecuteSqlRaw("TRUNCATE \"CreditPrograms\" CASCADE");
|
||||
|
||||
public static void RemoveDepositsFromDatabase(this BankDbContext dbContext) =>
|
||||
dbContext.ExecuteSqlRaw("TRUNCATE \"Deposits\" CASCADE");
|
||||
|
||||
public static void RemoveReplenishmentsFromDatabase(this BankDbContext dbContext) =>
|
||||
dbContext.ExecuteSqlRaw("TRUNCATE \"Replenishments\" CASCADE");
|
||||
|
||||
public static Client? GetClientFromDatabase(this BankDbContext dbContext, string 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);
|
||||
|
||||
public static CreditProgram? GetCreditProgramFromDatabase(
|
||||
this BankDbContext dbContext,
|
||||
string id
|
||||
) => dbContext.CreditPrograms.FirstOrDefault(x => x.Id == id);
|
||||
|
||||
public static Currency? GetCurrencyFromDatabase(this BankDbContext dbContext, string id) =>
|
||||
dbContext.Currencies.FirstOrDefault(x => x.Id == id);
|
||||
|
||||
public static Deposit? GetDepositFromDatabase(this BankDbContext dbContext, string id) =>
|
||||
dbContext.Deposits.FirstOrDefault(x => x.Id == id);
|
||||
|
||||
public static Period? GetPeriodFromDatabase(this BankDbContext dbContext, string id) =>
|
||||
dbContext.Periods.FirstOrDefault(x => x.Id == id);
|
||||
|
||||
public static Replenishment? GetReplenishmentFromDatabase(
|
||||
this BankDbContext dbContext,
|
||||
string id
|
||||
) => dbContext.Replenishments.FirstOrDefault(x => x.Id == id);
|
||||
|
||||
public static Storekeeper? GetStorekeeperFromDatabase(
|
||||
this BankDbContext dbContext,
|
||||
string id
|
||||
) => dbContext.Storekeepers.FirstOrDefault(x => x.Id == id);
|
||||
|
||||
private static void ExecuteSqlRaw(this BankDbContext dbContext, string command) =>
|
||||
dbContext.Database.ExecuteSqlRaw(command);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using BankContracts.Infrastructure;
|
||||
|
||||
namespace BankTests.Infrastructure;
|
||||
|
||||
internal class ConfigurationDatabase : IConfigurationDatabase
|
||||
{
|
||||
public string ConnectionString =>
|
||||
"Host=127.0.0.1;Port=5432;Database=TitanicTest;Username=postgres;Password=admin123;Include Error Detail=true";
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using BankDatabase;
|
||||
using BankTests.Infrastructure;
|
||||
|
||||
namespace BankTests.StorageContactsTests;
|
||||
|
||||
internal class BaseStorageContractTest
|
||||
{
|
||||
protected BankDbContext BankDbContext { get; private set; }
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void OneTimeSetUp()
|
||||
{
|
||||
BankDbContext = new BankDbContext(new ConfigurationDatabase());
|
||||
|
||||
BankDbContext.Database.EnsureDeleted();
|
||||
BankDbContext.Database.EnsureCreated();
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public void OneTimeTearDown()
|
||||
{
|
||||
BankDbContext.Database.EnsureDeleted();
|
||||
BankDbContext.Dispose();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
using BankContracts.DataModels;
|
||||
using BankContracts.Exceptions;
|
||||
using BankContracts.StorageContracts;
|
||||
using BankDatabase.Implementations;
|
||||
using BankDatabase.Models;
|
||||
using BankTests.Infrastructure;
|
||||
|
||||
namespace BankTests.StorageContactsTests;
|
||||
|
||||
[TestFixture]
|
||||
internal class ClerkStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
private IClerkStorageContract _storageContract;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_storageContract = new ClerkStorageContract(BankDbContext);
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
BankDbContext.RemoveClerksFromDatabase();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetListWhenHaveRecords_ShouldSuccess_Test()
|
||||
{
|
||||
var clerk = BankDbContext.InsertClerkToDatabaseAndReturn();
|
||||
BankDbContext.InsertClerkToDatabaseAndReturn(
|
||||
login: "xomyak",
|
||||
email: "email1@email.com",
|
||||
phone: "+9-888-888-88-88"
|
||||
);
|
||||
BankDbContext.InsertClerkToDatabaseAndReturn(
|
||||
login: "xomyak3",
|
||||
email: "email3@email.com",
|
||||
phone: "+9-888-888-88-78"
|
||||
);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetList_WhenNoRecords_Test()
|
||||
{
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Is.Empty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||
{
|
||||
var clerk = BankDbContext.InsertClerkToDatabaseAndReturn();
|
||||
AssertElement(_storageContract.GetElementById(clerk.Id), clerk);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_Test()
|
||||
{
|
||||
var clerk = CreateModel();
|
||||
_storageContract.AddElement(clerk);
|
||||
AssertElement(BankDbContext.GetClerkFromDatabase(clerk.Id), clerk);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameId_Test()
|
||||
{
|
||||
var clerk = CreateModel();
|
||||
BankDbContext.InsertClerkToDatabaseAndReturn(id: clerk.Id);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(clerk),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameEmail_Test()
|
||||
{
|
||||
var clerk = CreateModel();
|
||||
BankDbContext.InsertClerkToDatabaseAndReturn(email: clerk.Email);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(clerk),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameLogin_Test()
|
||||
{
|
||||
var clerk = CreateModel(login: "cheburek");
|
||||
BankDbContext.InsertClerkToDatabaseAndReturn(email: "email@email.ru", login: "cheburek");
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(clerk),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_Test()
|
||||
{
|
||||
var clerk = CreateModel();
|
||||
BankDbContext.InsertClerkToDatabaseAndReturn(clerk.Id, name: "Женя");
|
||||
_storageContract.UpdElement(clerk);
|
||||
AssertElement(BankDbContext.GetClerkFromDatabase(clerk.Id), clerk);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||
{
|
||||
Assert.That(
|
||||
() => _storageContract.UpdElement(CreateModel()),
|
||||
Throws.TypeOf<ElementNotFoundException>()
|
||||
);
|
||||
}
|
||||
|
||||
private static ClerkDataModel CreateModel(
|
||||
string? id = null,
|
||||
string? name = "vasya",
|
||||
string? surname = "petrov",
|
||||
string? middlename = "petrovich",
|
||||
string? login = "vasyapupkin",
|
||||
string? passwd = "*******",
|
||||
string? email = "email@email.com",
|
||||
string? phone = "+7-777-777-77-77"
|
||||
) =>
|
||||
new(
|
||||
id ?? Guid.NewGuid().ToString(),
|
||||
name,
|
||||
surname,
|
||||
middlename,
|
||||
login,
|
||||
passwd,
|
||||
email,
|
||||
phone
|
||||
);
|
||||
|
||||
private static void AssertElement(ClerkDataModel actual, Clerk? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Name, Is.EqualTo(expected.Name));
|
||||
Assert.That(actual.MiddleName, Is.EqualTo(expected.MiddleName));
|
||||
Assert.That(actual.Login, Is.EqualTo(expected.Login));
|
||||
Assert.That(actual.Password, Is.EqualTo(expected.Password));
|
||||
Assert.That(actual.Email, Is.EqualTo(expected.Email));
|
||||
Assert.That(actual.PhoneNumber, Is.EqualTo(expected.PhoneNumber));
|
||||
});
|
||||
}
|
||||
|
||||
private static void AssertElement(Clerk actual, ClerkDataModel? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Name, Is.EqualTo(expected.Name));
|
||||
Assert.That(actual.MiddleName, Is.EqualTo(expected.MiddleName));
|
||||
Assert.That(actual.Login, Is.EqualTo(expected.Login));
|
||||
Assert.That(actual.Password, Is.EqualTo(expected.Password));
|
||||
Assert.That(actual.Email, Is.EqualTo(expected.Email));
|
||||
Assert.That(actual.PhoneNumber, Is.EqualTo(expected.PhoneNumber));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,301 @@
|
||||
using BankContracts.DataModels;
|
||||
using BankContracts.Exceptions;
|
||||
using BankContracts.StorageContracts;
|
||||
using BankDatabase.Implementations;
|
||||
using BankDatabase.Models;
|
||||
using BankTests.Infrastructure;
|
||||
|
||||
namespace BankTests.StorageContactsTests;
|
||||
|
||||
[TestFixture]
|
||||
internal class ClientStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
private IClientStorageContract _clientStorageContract;
|
||||
|
||||
private string _clerkId;
|
||||
|
||||
private string _depositId;
|
||||
|
||||
private string _creditProgramId;
|
||||
|
||||
private string _storekeeperId;
|
||||
|
||||
private string _periodId;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_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 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 == clientId), client);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetList_WhenNoRecords_Test()
|
||||
{
|
||||
var list = _clientStorageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Is.Empty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetList_ByClerk_WhenHaveRecords_Test()
|
||||
{
|
||||
var clerk = BankDbContext.InsertClerkToDatabaseAndReturn(
|
||||
email: "slava@ilya.com",
|
||||
login: "login",
|
||||
phone: "+7-987-555-55-55"
|
||||
);
|
||||
|
||||
BankDbContext.InsertClientToDatabaseAndReturn(clerkId: clerk.Id);
|
||||
BankDbContext.InsertClientToDatabaseAndReturn(clerkId: clerk.Id);
|
||||
BankDbContext.InsertClientToDatabaseAndReturn(clerkId: clerk.Id);
|
||||
BankDbContext.InsertClientToDatabaseAndReturn(clerkId: clerk.Id);
|
||||
|
||||
var list = _clientStorageContract.GetList(clerkId: clerk.Id);
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Has.Count.EqualTo(4));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||
{
|
||||
var client = BankDbContext.InsertClientToDatabaseAndReturn(clerkId: _clerkId);
|
||||
AssertElement(_clientStorageContract.GetElementById(client.Id), client);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_Test()
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_Test()
|
||||
{
|
||||
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);
|
||||
BankDbContext.ChangeTracker.Clear();
|
||||
AssertElement(BankDbContext.GetClientFromDatabase(clientId), client);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||
{
|
||||
Assert.That(
|
||||
() => _clientStorageContract.UpdElement(CreateModel(_clerkId)),
|
||||
Throws.TypeOf<ElementNotFoundException>()
|
||||
);
|
||||
}
|
||||
|
||||
private static ClientDataModel CreateModel(
|
||||
string clerkid,
|
||||
string? id = null,
|
||||
string? name = "null",
|
||||
string? surname = "surname",
|
||||
decimal balance = 1,
|
||||
List<DepositClientDataModel>? depositClients = null,
|
||||
List<ClientCreditProgramDataModel>? clientCredits = null
|
||||
) =>
|
||||
new(
|
||||
id ?? Guid.NewGuid().ToString(),
|
||||
name,
|
||||
surname,
|
||||
balance,
|
||||
clerkid,
|
||||
depositClients ?? [],
|
||||
clientCredits ?? []
|
||||
);
|
||||
|
||||
private static void AssertElement(ClientDataModel actual, Client? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Name, Is.EqualTo(expected.Name));
|
||||
Assert.That(actual.Surname, Is.EqualTo(expected.Surname));
|
||||
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)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Name, Is.EqualTo(expected.Name));
|
||||
Assert.That(actual.Surname, Is.EqualTo(expected.Surname));
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,240 @@
|
||||
using System.Xml.Linq;
|
||||
using BankContracts.DataModels;
|
||||
using BankContracts.Exceptions;
|
||||
using BankContracts.StorageContracts;
|
||||
using BankDatabase.Implementations;
|
||||
using BankDatabase.Models;
|
||||
using BankTests.Infrastructure;
|
||||
|
||||
namespace BankTests.StorageContactsTests;
|
||||
|
||||
[TestFixture]
|
||||
internal class CreditProgramStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
private ICreditProgramStorageContract _storageContract;
|
||||
|
||||
private string _storekeeperId;
|
||||
|
||||
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]
|
||||
public void TearDown()
|
||||
{
|
||||
BankDbContext.RemoveCreditProgramsFromDatabase();
|
||||
BankDbContext.RemovePeriodsFromDatabase();
|
||||
BankDbContext.RemoveCurrenciesFromDatabase();
|
||||
BankDbContext.RemoveStorekeepersFromDatabase();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetListWhenHaveRecords_ShouldSucces_Test()
|
||||
{
|
||||
var creditProgramId = Guid.NewGuid().ToString();
|
||||
var creditProgram = BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
storeleeperId: _storekeeperId,
|
||||
periodId: _periodId,
|
||||
creditProgramCurrency: [( _currenyId, creditProgramId )]
|
||||
);
|
||||
BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
name: "bankrot2",
|
||||
storeleeperId: _storekeeperId,
|
||||
periodId: _periodId
|
||||
);
|
||||
BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
name: "bankrot3",
|
||||
storeleeperId: _storekeeperId,
|
||||
periodId: _periodId
|
||||
);
|
||||
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Has.Count.EqualTo(3));
|
||||
AssertElement(list.First(x => x.Id == creditProgram.Id), creditProgram);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetList_WhenNoRecords_Test()
|
||||
{
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Is.Empty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||
{
|
||||
var creditProgram = BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
storeleeperId: _storekeeperId,
|
||||
periodId: _periodId
|
||||
);
|
||||
AssertElement(_storageContract.GetElementById(creditProgram.Id), creditProgram);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_Test()
|
||||
{
|
||||
var credit = CreateModel(
|
||||
name: "unique name",
|
||||
periodId: _periodId,
|
||||
storekeeperId: _storekeeperId
|
||||
);
|
||||
_storageContract.AddElement(credit);
|
||||
AssertElement(BankDbContext.GetCreditProgramFromDatabase(credit.Id), credit);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameName_Test()
|
||||
{
|
||||
var credit = CreateModel(name: "1", storekeeperId: _storekeeperId, periodId: _periodId);
|
||||
BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
name: "1",
|
||||
periodId: _periodId,
|
||||
storeleeperId: _storekeeperId,
|
||||
creditProgramCurrency: [(_currenyId, credit.Id)]
|
||||
);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(credit),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_Test()
|
||||
{
|
||||
var credit = CreateModel(
|
||||
name: "unique name",
|
||||
periodId: _periodId,
|
||||
storekeeperId: _storekeeperId
|
||||
);
|
||||
BankDbContext.InsertCreditProgramToDatabaseAndReturn(
|
||||
credit.Id,
|
||||
periodId: _periodId,
|
||||
storeleeperId: _storekeeperId,
|
||||
creditProgramCurrency: [(_currenyId, credit.Id)]
|
||||
);
|
||||
_storageContract.UpdElement(credit);
|
||||
AssertElement(BankDbContext.GetCreditProgramFromDatabase(credit.Id), credit);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||
{
|
||||
Assert.That(
|
||||
() =>
|
||||
_storageContract.UpdElement(
|
||||
CreateModel(storekeeperId: _storekeeperId, periodId: _periodId)
|
||||
),
|
||||
Throws.TypeOf<ElementNotFoundException>()
|
||||
);
|
||||
}
|
||||
|
||||
private static CreditProgramDataModel CreateModel(
|
||||
string? id = null,
|
||||
string? name = "name",
|
||||
decimal cost = 1,
|
||||
decimal maxCost = 2,
|
||||
string? storekeeperId = null,
|
||||
string? periodId = null,
|
||||
List<CreditProgramCurrencyDataModel>? currency = null
|
||||
) =>
|
||||
new(
|
||||
id ?? Guid.NewGuid().ToString(),
|
||||
name,
|
||||
cost,
|
||||
maxCost,
|
||||
storekeeperId ?? Guid.NewGuid().ToString(),
|
||||
periodId ?? Guid.NewGuid().ToString(),
|
||||
currency ?? []
|
||||
);
|
||||
|
||||
private static void AssertElement(CreditProgramDataModel actual, CreditProgram? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Name, Is.EqualTo(expected.Name));
|
||||
Assert.That(actual.Cost, Is.EqualTo(expected.Cost));
|
||||
Assert.That(actual.MaxCost, Is.EqualTo(expected.MaxCost));
|
||||
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)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Name, Is.EqualTo(expected.Name));
|
||||
Assert.That(actual.Cost, Is.EqualTo(expected.Cost));
|
||||
Assert.That(actual.MaxCost, Is.EqualTo(expected.MaxCost));
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
using BankContracts.DataModels;
|
||||
using BankContracts.Exceptions;
|
||||
using BankContracts.StorageContracts;
|
||||
using BankDatabase.Implementations;
|
||||
using BankDatabase.Models;
|
||||
using BankTests.Infrastructure;
|
||||
|
||||
namespace BankTests.StorageContactsTests;
|
||||
|
||||
[TestFixture]
|
||||
internal class CurrencyStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
private ICurrencyStorageContract _storageContract;
|
||||
|
||||
private string _storekeeperId;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_storageContract = new CurrencyStorageContract(BankDbContext);
|
||||
_storekeeperId = BankDbContext.InsertStorekeeperToDatabaseAndReturn().Id;
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
BankDbContext.RemoveCurrenciesFromDatabase();
|
||||
BankDbContext.RemoveStorekeepersFromDatabase();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetListWhenHaveRecords_ShouldSuccess_Test()
|
||||
{
|
||||
var currency = BankDbContext.InsertCurrencyToDatabaseAndReturn(
|
||||
storekeeperId: _storekeeperId
|
||||
);
|
||||
BankDbContext.InsertCurrencyToDatabaseAndReturn(
|
||||
abbreviation: "$",
|
||||
storekeeperId: _storekeeperId
|
||||
);
|
||||
BankDbContext.InsertCurrencyToDatabaseAndReturn(
|
||||
abbreviation: "eur",
|
||||
storekeeperId: _storekeeperId
|
||||
);
|
||||
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Has.Count.EqualTo(3));
|
||||
AssertElement(_storageContract.GetElementById(currency.Id), currency);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||
{
|
||||
var currency = BankDbContext.InsertCurrencyToDatabaseAndReturn(
|
||||
storekeeperId: _storekeeperId
|
||||
);
|
||||
AssertElement(_storageContract.GetElementById(currency.Id), currency);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetElementByAbbreviation_WhenHaveRecord_Test()
|
||||
{
|
||||
var currency = BankDbContext.InsertCurrencyToDatabaseAndReturn(
|
||||
abbreviation: "X",
|
||||
storekeeperId: _storekeeperId
|
||||
);
|
||||
AssertElement(_storageContract.GetElementByAbbreviation(currency.Abbreviation), currency);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetList_WhenNoRecords_Test()
|
||||
{
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Is.Empty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_Test()
|
||||
{
|
||||
var currency = CreateModel(storekeeperId: _storekeeperId);
|
||||
_storageContract.AddElement(currency);
|
||||
AssertElement(BankDbContext.GetCurrencyFromDatabase(currency.Id), currency);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameId_Test()
|
||||
{
|
||||
var currency = CreateModel(storekeeperId: _storekeeperId);
|
||||
BankDbContext.InsertCurrencyToDatabaseAndReturn(
|
||||
id: currency.Id,
|
||||
storekeeperId: _storekeeperId
|
||||
);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(currency),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameAbbreviation_Test()
|
||||
{
|
||||
var currency = CreateModel(storekeeperId: _storekeeperId, abbreviation: "хамстер коин");
|
||||
BankDbContext.InsertCurrencyToDatabaseAndReturn(
|
||||
storekeeperId: _storekeeperId,
|
||||
abbreviation: currency.Abbreviation
|
||||
);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(currency),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_Test()
|
||||
{
|
||||
var currency = CreateModel(storekeeperId: _storekeeperId, abbreviation: "хамстер коин");
|
||||
BankDbContext.InsertCurrencyToDatabaseAndReturn(
|
||||
id: currency.Id,
|
||||
storekeeperId: _storekeeperId
|
||||
);
|
||||
_storageContract.UpdElement(currency);
|
||||
AssertElement(BankDbContext.GetCurrencyFromDatabase(currency.Id), currency);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||
{
|
||||
Assert.That(
|
||||
() => _storageContract.UpdElement(CreateModel()),
|
||||
Throws.TypeOf<ElementNotFoundException>()
|
||||
);
|
||||
}
|
||||
|
||||
private static CurrencyDataModel CreateModel(
|
||||
string? id = null,
|
||||
string? name = "pop",
|
||||
string? abbreviation = "rub",
|
||||
decimal cost = 10,
|
||||
string? storekeeperId = null
|
||||
) =>
|
||||
new(
|
||||
id ?? Guid.NewGuid().ToString(),
|
||||
name,
|
||||
abbreviation,
|
||||
cost,
|
||||
storekeeperId ?? Guid.NewGuid().ToString()
|
||||
);
|
||||
|
||||
private static void AssertElement(CurrencyDataModel actual, Currency? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Name, Is.EqualTo(expected.Name));
|
||||
Assert.That(actual.Abbreviation, Is.EqualTo(expected.Abbreviation));
|
||||
Assert.That(actual.Cost, Is.EqualTo(expected.Cost));
|
||||
Assert.That(actual.StorekeeperId, Is.EqualTo(expected.StorekeeperId));
|
||||
});
|
||||
}
|
||||
|
||||
private static void AssertElement(Currency actual, CurrencyDataModel? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Name, Is.EqualTo(expected.Name));
|
||||
Assert.That(actual.Abbreviation, Is.EqualTo(expected.Abbreviation));
|
||||
Assert.That(actual.Cost, Is.EqualTo(expected.Cost));
|
||||
Assert.That(actual.StorekeeperId, Is.EqualTo(expected.StorekeeperId));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
using BankContracts.DataModels;
|
||||
using BankContracts.Exceptions;
|
||||
using BankContracts.StorageContracts;
|
||||
using BankDatabase.Implementations;
|
||||
using BankDatabase.Models;
|
||||
using BankTests.Infrastructure;
|
||||
|
||||
namespace BankTests.StorageContactsTests;
|
||||
|
||||
[TestFixture]
|
||||
internal class DepositStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
private IDepositStorageContract _storageContract;
|
||||
|
||||
private string _clerkId;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_storageContract = new DepositStorageContract(BankDbContext);
|
||||
_clerkId = BankDbContext.InsertClerkToDatabaseAndReturn().Id;
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
BankDbContext.RemoveDepositsFromDatabase();
|
||||
BankDbContext.RemoveClerksFromDatabase();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetListWhenHaveRecords_ShouldSuccess_Test()
|
||||
{
|
||||
var deposit = BankDbContext.InsertDepositToDatabaseAndReturn(clerkId: _clerkId);
|
||||
BankDbContext.InsertDepositToDatabaseAndReturn(clerkId: _clerkId);
|
||||
BankDbContext.InsertDepositToDatabaseAndReturn(clerkId: _clerkId);
|
||||
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Has.Count.EqualTo(3));
|
||||
AssertElement(list.First(x => x.Id == deposit.Id), deposit);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetList_WhenNoRecords_Test()
|
||||
{
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Is.Empty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||
{
|
||||
var deposit = BankDbContext.InsertDepositToDatabaseAndReturn(clerkId: _clerkId);
|
||||
AssertElement(_storageContract.GetElementById(deposit.Id), deposit);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_Test()
|
||||
{
|
||||
var deposit = CreateModel(clerkId: _clerkId);
|
||||
_storageContract.AddElement(deposit);
|
||||
AssertElement(BankDbContext.GetDepositFromDatabase(deposit.Id), deposit);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameId_Test()
|
||||
{
|
||||
var deposit = CreateModel(clerkId: _clerkId);
|
||||
BankDbContext.InsertDepositToDatabaseAndReturn(id: deposit.Id, clerkId: _clerkId);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(deposit),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_Test()
|
||||
{
|
||||
var deposit = CreateModel(clerkId: _clerkId);
|
||||
BankDbContext.InsertDepositToDatabaseAndReturn(id: deposit.Id, clerkId: _clerkId);
|
||||
_storageContract.UpdElement(deposit);
|
||||
AssertElement(BankDbContext.GetDepositFromDatabase(deposit.Id), deposit);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||
{
|
||||
Assert.That(
|
||||
() => _storageContract.UpdElement(CreateModel(clerkId: _clerkId)),
|
||||
Throws.TypeOf<ElementNotFoundException>()
|
||||
);
|
||||
}
|
||||
|
||||
private static DepositDataModel CreateModel(
|
||||
string? id = null,
|
||||
float interestRate = 10,
|
||||
decimal cost = 10,
|
||||
int period = 10,
|
||||
string? clerkId = null,
|
||||
List<DepositCurrencyDataModel>? deposits = null
|
||||
) =>
|
||||
new(
|
||||
id ?? Guid.NewGuid().ToString(),
|
||||
interestRate,
|
||||
cost,
|
||||
period,
|
||||
clerkId ?? Guid.NewGuid().ToString(),
|
||||
deposits ?? []
|
||||
);
|
||||
|
||||
private static void AssertElement(DepositDataModel actual, Deposit? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.InterestRate, Is.EqualTo(expected.InterestRate));
|
||||
Assert.That(actual.Cost, Is.EqualTo(expected.Cost));
|
||||
Assert.That(actual.Period, Is.EqualTo(expected.Period));
|
||||
Assert.That(actual.ClerkId, Is.EqualTo(expected.ClerkId));
|
||||
});
|
||||
}
|
||||
|
||||
private static void AssertElement(Deposit actual, DepositDataModel? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.InterestRate, Is.EqualTo(expected.InterestRate));
|
||||
Assert.That(actual.Cost, Is.EqualTo(expected.Cost));
|
||||
Assert.That(actual.Period, Is.EqualTo(expected.Period));
|
||||
Assert.That(actual.ClerkId, Is.EqualTo(expected.ClerkId));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
using BankContracts.DataModels;
|
||||
using BankContracts.Exceptions;
|
||||
using BankContracts.StorageContracts;
|
||||
using BankDatabase.Implementations;
|
||||
using BankDatabase.Models;
|
||||
using BankTests.Infrastructure;
|
||||
|
||||
namespace BankTests.StorageContactsTests;
|
||||
|
||||
[TestFixture]
|
||||
internal class PeriodStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
private IPeriodStorageContract _storageContract;
|
||||
|
||||
private string _storekeeperId;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_storageContract = new PeriodStorageContract(BankDbContext);
|
||||
_storekeeperId = BankDbContext.InsertStorekeeperToDatabaseAndReturn().Id;
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
BankDbContext.RemovePeriodsFromDatabase();
|
||||
BankDbContext.RemoveStorekeepersFromDatabase();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetListWhenHaveRecords_ShouldSuccess_Test()
|
||||
{
|
||||
var period = BankDbContext.InsertPeriodToDatabaseAndReturn(storekeeperId: _storekeeperId);
|
||||
BankDbContext.InsertPeriodToDatabaseAndReturn(storekeeperId: _storekeeperId);
|
||||
BankDbContext.InsertPeriodToDatabaseAndReturn(storekeeperId: _storekeeperId);
|
||||
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Has.Count.EqualTo(3));
|
||||
AssertElement(list.First(x => x.Id == period.Id), period);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetList_WhenNoRecords_Test()
|
||||
{
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Is.Empty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||
{
|
||||
var period = BankDbContext.InsertPeriodToDatabaseAndReturn(storekeeperId: _storekeeperId);
|
||||
AssertElement(_storageContract.GetElementById(period.Id), period);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_Test()
|
||||
{
|
||||
var period = CreateModel(storekeeperId: _storekeeperId);
|
||||
_storageContract.AddElement(period);
|
||||
AssertElement(BankDbContext.GetPeriodFromDatabase(period.Id), period);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameId_Test()
|
||||
{
|
||||
var period = CreateModel(storekeeperId: _storekeeperId);
|
||||
BankDbContext.InsertPeriodToDatabaseAndReturn(id: period.Id, storekeeperId: _storekeeperId);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(period),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_Test()
|
||||
{
|
||||
var period = CreateModel(storekeeperId: _storekeeperId);
|
||||
BankDbContext.InsertPeriodToDatabaseAndReturn(id: period.Id, storekeeperId: _storekeeperId);
|
||||
_storageContract.UpdElement(period);
|
||||
AssertElement(BankDbContext.GetPeriodFromDatabase(period.Id), period);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||
{
|
||||
Assert.That(
|
||||
() => _storageContract.UpdElement(CreateModel(storekeeperId: _storekeeperId)),
|
||||
Throws.TypeOf<ElementNotFoundException>()
|
||||
);
|
||||
}
|
||||
|
||||
private static PeriodDataModel CreateModel(
|
||||
string? id = null,
|
||||
DateTime? startTime = null,
|
||||
DateTime? endTime = null,
|
||||
string? storekeeperId = null
|
||||
) =>
|
||||
new(
|
||||
id ?? Guid.NewGuid().ToString(),
|
||||
startTime ?? DateTime.UtcNow.AddDays(-1),
|
||||
endTime ?? DateTime.UtcNow,
|
||||
storekeeperId ?? Guid.NewGuid().ToString()
|
||||
);
|
||||
|
||||
private static void AssertElement(PeriodDataModel actual, Period? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.StartTime, Is.EqualTo(expected.StartTime));
|
||||
Assert.That(actual.EndTime, Is.EqualTo(expected.EndTime));
|
||||
Assert.That(actual.StorekeeperId, Is.EqualTo(expected.StorekeeperId));
|
||||
});
|
||||
}
|
||||
|
||||
private static void AssertElement(Period actual, PeriodDataModel? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.StartTime, Is.EqualTo(expected.StartTime));
|
||||
Assert.That(actual.EndTime, Is.EqualTo(expected.EndTime));
|
||||
Assert.That(actual.StorekeeperId, Is.EqualTo(expected.StorekeeperId));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
using BankContracts.DataModels;
|
||||
using BankContracts.Exceptions;
|
||||
using BankContracts.StorageContracts;
|
||||
using BankDatabase.Implementations;
|
||||
using BankDatabase.Models;
|
||||
using BankTests.Infrastructure;
|
||||
|
||||
namespace BankTests.StorageContactsTests;
|
||||
|
||||
[TestFixture]
|
||||
internal class ReplenishmentStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
private IReplenishmentStorageContract _storageContract;
|
||||
|
||||
private string _depositId;
|
||||
|
||||
private string _clerkId;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_storageContract = new ReplenishmentStorageContract(BankDbContext);
|
||||
_clerkId = BankDbContext.InsertClerkToDatabaseAndReturn().Id;
|
||||
_depositId = BankDbContext.InsertDepositToDatabaseAndReturn(clerkId: _clerkId).Id;
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
BankDbContext.RemoveReplenishmentsFromDatabase();
|
||||
BankDbContext.RemoveDepositsFromDatabase();
|
||||
BankDbContext.RemoveClerksFromDatabase();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetListWhenHaveRecords_ShouldSuccess_Test()
|
||||
{
|
||||
var replenishment = BankDbContext.InsertReplenishmentToDatabaseAndReturn(
|
||||
clerkId: _clerkId,
|
||||
depositId: _depositId
|
||||
);
|
||||
BankDbContext.InsertReplenishmentToDatabaseAndReturn(
|
||||
clerkId: _clerkId,
|
||||
depositId: _depositId
|
||||
);
|
||||
BankDbContext.InsertReplenishmentToDatabaseAndReturn(
|
||||
clerkId: _clerkId,
|
||||
depositId: _depositId
|
||||
);
|
||||
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Has.Count.EqualTo(3));
|
||||
AssertElement(list.First(x => x.Id == replenishment.Id), replenishment);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetList_WhenNoRecords_Test()
|
||||
{
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Is.Empty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||
{
|
||||
var replenishment = BankDbContext.InsertReplenishmentToDatabaseAndReturn(
|
||||
clerkId: _clerkId,
|
||||
depositId: _depositId
|
||||
);
|
||||
AssertElement(_storageContract.GetElementById(replenishment.Id), replenishment);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_Test()
|
||||
{
|
||||
var replenishment = CreateModel(clerkId: _clerkId, depositId: _depositId);
|
||||
_storageContract.AddElement(replenishment);
|
||||
AssertElement(BankDbContext.GetReplenishmentFromDatabase(replenishment.Id), replenishment);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameId_Test()
|
||||
{
|
||||
var replenishment = CreateModel(clerkId: _clerkId, depositId: _depositId);
|
||||
BankDbContext.InsertReplenishmentToDatabaseAndReturn(
|
||||
id: replenishment.Id,
|
||||
clerkId: _clerkId,
|
||||
depositId: _depositId
|
||||
);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(replenishment),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_Test()
|
||||
{
|
||||
var replenishment = CreateModel(clerkId: _clerkId, depositId: _depositId);
|
||||
BankDbContext.InsertReplenishmentToDatabaseAndReturn(
|
||||
id: replenishment.Id,
|
||||
clerkId: _clerkId,
|
||||
depositId: _depositId
|
||||
);
|
||||
_storageContract.UpdElement(replenishment);
|
||||
AssertElement(BankDbContext.GetReplenishmentFromDatabase(replenishment.Id), replenishment);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||
{
|
||||
Assert.That(
|
||||
() =>
|
||||
_storageContract.UpdElement(CreateModel(clerkId: _clerkId, depositId: _depositId)),
|
||||
Throws.TypeOf<ElementNotFoundException>()
|
||||
);
|
||||
}
|
||||
|
||||
private static ReplenishmentDataModel CreateModel(
|
||||
string? id = null,
|
||||
decimal amount = 1,
|
||||
DateTime? date = null,
|
||||
string? depositId = null,
|
||||
string? clerkId = null
|
||||
) =>
|
||||
new(
|
||||
id ?? Guid.NewGuid().ToString(),
|
||||
amount,
|
||||
date ?? DateTime.UtcNow,
|
||||
depositId ?? Guid.NewGuid().ToString(),
|
||||
clerkId ?? Guid.NewGuid().ToString()
|
||||
);
|
||||
|
||||
private static void AssertElement(ReplenishmentDataModel actual, Replenishment? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Amount, Is.EqualTo(expected.Amount));
|
||||
Assert.That(actual.Date, Is.EqualTo(expected.Date));
|
||||
Assert.That(actual.DepositId, Is.EqualTo(expected.DepositId));
|
||||
Assert.That(actual.ClerkId, Is.EqualTo(expected.ClerkId));
|
||||
});
|
||||
}
|
||||
|
||||
private static void AssertElement(Replenishment actual, ReplenishmentDataModel? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Amount, Is.EqualTo(expected.Amount));
|
||||
Assert.That(actual.Date, Is.EqualTo(expected.Date));
|
||||
Assert.That(actual.DepositId, Is.EqualTo(expected.DepositId));
|
||||
Assert.That(actual.ClerkId, Is.EqualTo(expected.ClerkId));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,175 @@
|
||||
using BankContracts.DataModels;
|
||||
using BankContracts.Exceptions;
|
||||
using BankContracts.StorageContracts;
|
||||
using BankDatabase.Implementations;
|
||||
using BankDatabase.Models;
|
||||
using BankTests.Infrastructure;
|
||||
|
||||
namespace BankTests.StorageContactsTests;
|
||||
|
||||
[TestFixture]
|
||||
internal class StorekeeperStorageContractTests : BaseStorageContractTest
|
||||
{
|
||||
private IStorekeeperStorageContract _storageContract;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_storageContract = new StorekeeperStorageContract(BankDbContext);
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
BankDbContext.RemoveStorekeepersFromDatabase();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TryGetListWhenHaveRecords_ShouldSuccess_Test()
|
||||
{
|
||||
var storekeeper = BankDbContext.InsertStorekeeperToDatabaseAndReturn();
|
||||
BankDbContext.InsertStorekeeperToDatabaseAndReturn(
|
||||
login: "xomyak2",
|
||||
email: "email1@email.com",
|
||||
phone: "+9-888-888-88-68"
|
||||
);
|
||||
BankDbContext.InsertStorekeeperToDatabaseAndReturn(
|
||||
login: "xomyak3",
|
||||
email: "email3@email.com",
|
||||
phone: "+9-888-888-88-78"
|
||||
);
|
||||
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Has.Count.EqualTo(3));
|
||||
AssertElement(list.First(x => x.Id == storekeeper.Id), storekeeper);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetList_WhenNoRecords_Test()
|
||||
{
|
||||
var list = _storageContract.GetList();
|
||||
Assert.That(list, Is.Not.Null);
|
||||
Assert.That(list, Is.Empty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_GetElementById_WhenHaveRecord_Test()
|
||||
{
|
||||
var storekeeper = BankDbContext.InsertStorekeeperToDatabaseAndReturn();
|
||||
AssertElement(_storageContract.GetElementById(storekeeper.Id), storekeeper);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_Test()
|
||||
{
|
||||
var storekeeper = CreateModel();
|
||||
_storageContract.AddElement(storekeeper);
|
||||
AssertElement(BankDbContext.GetStorekeeperFromDatabase(storekeeper.Id), storekeeper);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameId_Test()
|
||||
{
|
||||
var storekeeper = CreateModel();
|
||||
BankDbContext.InsertStorekeeperToDatabaseAndReturn(id: storekeeper.Id);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(storekeeper),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameEmail_Test()
|
||||
{
|
||||
var storekeeper = CreateModel();
|
||||
BankDbContext.InsertStorekeeperToDatabaseAndReturn(email: storekeeper.Email);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(storekeeper),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_AddElement_WhenHaveRecordWithSameLogin_Test()
|
||||
{
|
||||
var storekeeper = CreateModel(login: "cheburek");
|
||||
BankDbContext.InsertStorekeeperToDatabaseAndReturn(
|
||||
email: "email@email.ru",
|
||||
login: "cheburek"
|
||||
);
|
||||
Assert.That(
|
||||
() => _storageContract.AddElement(storekeeper),
|
||||
Throws.TypeOf<ElementExistsException>()
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_Test()
|
||||
{
|
||||
var storekeeper = CreateModel();
|
||||
BankDbContext.InsertStorekeeperToDatabaseAndReturn(storekeeper.Id, name: "Женя");
|
||||
_storageContract.UpdElement(storekeeper);
|
||||
AssertElement(BankDbContext.GetStorekeeperFromDatabase(storekeeper.Id), storekeeper);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Try_UpdElement_WhenNoRecordWithThisId_Test()
|
||||
{
|
||||
Assert.That(
|
||||
() => _storageContract.UpdElement(CreateModel()),
|
||||
Throws.TypeOf<ElementNotFoundException>()
|
||||
);
|
||||
}
|
||||
|
||||
private static StorekeeperDataModel CreateModel(
|
||||
string? id = null,
|
||||
string? name = "vasya",
|
||||
string? surname = "petrov",
|
||||
string? middlename = "petrovich",
|
||||
string? login = "vasyapupkin",
|
||||
string? passwd = "*******",
|
||||
string? email = "email@email.com",
|
||||
string? phone = "+7-777-777-77-77"
|
||||
) =>
|
||||
new(
|
||||
id ?? Guid.NewGuid().ToString(),
|
||||
name,
|
||||
surname,
|
||||
middlename,
|
||||
login,
|
||||
passwd,
|
||||
email,
|
||||
phone
|
||||
);
|
||||
|
||||
private static void AssertElement(StorekeeperDataModel actual, Storekeeper? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Name, Is.EqualTo(expected.Name));
|
||||
Assert.That(actual.MiddleName, Is.EqualTo(expected.MiddleName));
|
||||
Assert.That(actual.Login, Is.EqualTo(expected.Login));
|
||||
Assert.That(actual.Password, Is.EqualTo(expected.Password));
|
||||
Assert.That(actual.Email, Is.EqualTo(expected.Email));
|
||||
Assert.That(actual.PhoneNumber, Is.EqualTo(expected.PhoneNumber));
|
||||
});
|
||||
}
|
||||
|
||||
private static void AssertElement(Storekeeper actual, StorekeeperDataModel? expected)
|
||||
{
|
||||
Assert.That(expected, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(actual.Id, Is.EqualTo(expected.Id));
|
||||
Assert.That(actual.Name, Is.EqualTo(expected.Name));
|
||||
Assert.That(actual.MiddleName, Is.EqualTo(expected.MiddleName));
|
||||
Assert.That(actual.Login, Is.EqualTo(expected.Login));
|
||||
Assert.That(actual.Password, Is.EqualTo(expected.Password));
|
||||
Assert.That(actual.Email, Is.EqualTo(expected.Email));
|
||||
Assert.That(actual.PhoneNumber, Is.EqualTo(expected.PhoneNumber));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BankBusinessLogic", "BankBu
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BankDatabase", "BankDatabase\BankDatabase.csproj", "{72F2568B-F5A8-4244-A777-BCABEF98F67A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BankTests", "BankTests\BankTests.csproj", "{7C898FC8-6BC2-41E8-9538-D42ACC263A97}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -27,6 +29,10 @@ Global
|
||||
{72F2568B-F5A8-4244-A777-BCABEF98F67A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{72F2568B-F5A8-4244-A777-BCABEF98F67A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{72F2568B-F5A8-4244-A777-BCABEF98F67A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7C898FC8-6BC2-41E8-9538-D42ACC263A97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7C898FC8-6BC2-41E8-9538-D42ACC263A97}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7C898FC8-6BC2-41E8-9538-D42ACC263A97}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7C898FC8-6BC2-41E8-9538-D42ACC263A97}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
Reference in New Issue
Block a user