Files
fiscalos/tests/FiscalOS.Infra.Tests/Data/UserBuilder.cs
T

102 lines
2.4 KiB
C#

namespace FiscalOS.Infra.Tests.Data;
// protected async Task<User> CreateTestUserAsync()
// {
// var user = User.From(
// "username",
// "hashedPassword",
// EncryptedDataKey.From("keyUsed", "encryptedKey")
// );
//
// var institutionMetadata = PlaidInstitutionMetadata.From(
// "plaidId",
// "plaidName",
// "encryptedAccessToken",
// "itemId"
// );
// var institution = Institution.From("institutionName", institutionMetadata);
// user.AddInstitution(institution);
//
// var accountMetadata = PlaidAccountMetadata.From("plaidId", "plaidName");
// var account = Account.From("some account", accountMetadata);
// user.AddAccount(account);
// institution.AddAccount(account);
//
// var transactionMetadata = PlaidTransactionMetadata.From("plaidId");
// var transaction = Transaction.From(
// "merchantName",
// "description",
// 100,
// DateTimeOffset.UtcNow,
// transactionMetadata
// );
// user.AddTransaction(transaction);
// account.AddTransaction(transaction);
//
// await AppDbContext.AddAsync(user, TestContext.Current.CancellationToken);
// await AppDbContext.SaveChangesAsync(TestContext.Current.CancellationToken);
//
// return user;
// }
internal sealed class UserBuilder
{
private string _username = "username";
private string _password = "hashedPassword";
private EncryptedDataKey _dataKey = EncryptedDataKey.From(
"keyUsed",
"encryptedKey"
);
private readonly List<InstitutionBuilder> _instituionBuilders = [];
private UserBuilder()
{
}
public static UserBuilder Create()
{
return new();
}
public UserBuilder WithUsername(string username)
{
_username = username;
return this;
}
public UserBuilder WithPassword(string password)
{
_password = password;
return this;
}
public UserBuilder WithDataKey(EncryptedDataKey key)
{
_dataKey = key;
return this;
}
public UserBuilder WithInstitution(Action<InstitutionBuilder>? action = null)
{
var ib = InstitutionBuilder.Create();
action?.Invoke(ib);
_instituionBuilders.Add(ib);
return this;
}
public User Build()
{
var user = User.From(
_username,
_password,
_dataKey
);
foreach (var ib in _instituionBuilders)
{
var institution = ib.WithUser(user).Build();
user.AddInstitution(institution);
}
return user;
}
}