56 lines
1.6 KiB
C#

using System.Data.Common;
using Contracts.DTO;
using Contracts.Repositories;
using Contracts.SearchModels;
using Services.Tests.Support.Fakes.Database;
namespace Services.Tests.Support.Fakes.Repositories;
internal class UserRepoFake : IUserRepo
{
public async Task<bool> ChangeBalance(UserSearch search, decimal amount)
{
var user = DbFake.Users.FirstOrDefault(u => u.Id == search.Id);
if (user != null)
{
user.Balance += amount;
return await Task.FromResult(true);
}
return await Task.FromResult(false);
}
public async Task<UserDto> Create(UserDto user)
{
DbFake.Users.Add(user);
return await Task.FromResult(user);
}
public async Task<UserDto?> Delete(UserSearch search)
{
var user = DbFake.Users.FirstOrDefault(u => u.Id == search.Id);
if (user != null)
{
DbFake.Users.Remove(user);
}
return await Task.FromResult(user);
}
public async Task<UserDto?> Get(UserSearch search)
{
return await Task.FromResult(DbFake.Users.FirstOrDefault(u => u.Id == search.Id));
}
public async Task<UserDto?> Update(UserDto user)
{
var existingUser = DbFake.Users.FirstOrDefault(u => u.Id == user.Id);
if (existingUser != null)
{
existingUser.Name = user.Name;
existingUser.Password = user.Password;
DbFake.Users.Remove(existingUser);
DbFake.Users.Add(existingUser);
}
return await Task.FromResult(existingUser);
}
}