Knocks/BackEnd/Knoks.Test.Integrations/Api/Tools/ApiMocker.cs

109 lines
3.7 KiB
C#

using Bogus;
using Knoks.Api.Client.Invoker;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
namespace Knoks.Test.Integrations.Api.Tools
{
public static partial class ApiMocker
{
public const string AdminOperatorName = "Admin";
public const string AdminOperatorPassword = "aaaBBBcccDDDeeeFFFggg";
public readonly static Faker Faker = new Faker();
//public static T Value<T>(this IEnumerable<PropertyData> properties, LoanRequestProperty propertyId, bool defaultIfPropertyNotFound = false)
//{
// var items = properties.Where(p => p.PropertyId == propertyId);
// var itemValue = (defaultIfPropertyNotFound ? items.SingleOrDefault() : items.Single()).Value;
// return (T)Convert.ChangeType(itemValue, typeof(T));
//}
public static string DisposableEmail(this Person person, string domainName = "mailinator.com")
{
return person.Email.Split('@')[0] + '@' + domainName;
}
public static CreateUserArgs GetCreateUserArgs(bool isTest = true)
{
var person = new Person();
return new CreateUserArgs
{
FirstName = person.FirstName,
LastName = person.LastName,
Email = person.DisposableEmail(),
Phone = person.Phone,
Password = Guid.NewGuid().ToString("N"),
Gender = Faker.PickRandom(new[] { "1", "2" }),
CountryId = 1,
LanguageId = 1,
};
}
public static CreateOperatorArgs GetCreateOperatorArgs(bool isTest = true)
{
var person = new Person();
return new CreateOperatorArgs
{
FirstName = person.FirstName,
LastName = person.LastName,
Email = person.DisposableEmail(),
Phone = person.Phone,
OperatorName = person.UserName,
OperatorPassword = Guid.NewGuid().ToString("N"),
IsActive = true,
IsReadOnly = false,
IsTest = isTest,
OperatorCreationDate = DateTime.UtcNow
};
}
public static IEnumerable<decimal> SplitValue(decimal value, int count)
{
if (count <= 0)
throw new ArgumentException("Count must be greater than zero.", "count");
var result = new decimal[count];
decimal runningTotal = 0M;
for (int i = 0; i < count; i++)
{
var remainder = value - runningTotal;
var share = remainder > 0M ? Math.Max(Math.Round(remainder / ((decimal)(count - i)), 2), .01M) : 0M;
result[i] = share;
runningTotal += share;
}
if (runningTotal < value) result[count - 1] += value - runningTotal;
return result;
}
public static AddAccountTransactionArgs GetAddAccountTransactionArgs(long userId, long accountId, int operatorId)
{
return new AddAccountTransactionArgs
{
UserId = userId,
AccountId= accountId,
//AccountTransactionTypeId
Amount = 1,
AmountUSD =11,
CurrentBalance =1,
CurrentBonusBalance =1,
ExternalReferenceId = Guid.NewGuid().ToString(),
OperatorId = operatorId,
Comment = "Test",
WalletAddress = "TestWalletAddress",
PendingId = null
};
}
public class AccountTransaction
{
public long TransId { get; set; }
}
}
}