Backend/e-suite.Modules.FormsManager/e_suite.Modules.Form.ManagerUnitTest/FakeFormsRepository.cs

154 lines
6.0 KiB
C#

using e_suite.API.Common.repository;
using e_suite.Database.Audit;
using e_suite.Database.Core.Extensions;
using e_suite.Database.Core.Helpers;
using e_suite.Database.Core.Tables.Forms;
using e_suite.UnitTestCore;
using eSuite.Core.Miscellaneous;
using MockQueryable;
namespace e_suite.Modules.FormsManagerUnitTests;
public class FakeFormsRepository : FakeRepository, IFormRepository
{
public List<FormTemplate> FormTemplates { get; set; } = [];
public List<FormTemplateVersion> FormTemplateVersions { get; set; } = [];
public List<FormInstance> FormInstances { get; set; } = [];
public List<FormFieldInstance> FormFieldValues { get; set; } = [];
public Task CreateNewFormVersionAsync(AuditUserDetails auditUserDetails, FormTemplateVersion formTemplateVersion, CancellationToken cancellationToken)
{
FormTemplateVersions.Add(formTemplateVersion);
return Task.CompletedTask;
}
public IQueryable<FormTemplateVersion> GetAllFormVersions(long templateId)
{
return FormTemplateVersions.Where( x => x.TemplateId == templateId).ToList().BuildMock();
}
public Task CreateTemplateAsync(AuditUserDetails auditUserDetails, FormTemplate template, CancellationToken cancellationToken)
{
FormTemplates.Add(template);
return Task.CompletedTask;
}
public Task DeleteAllVersionsAsync(AuditUserDetails auditUserDetails, IEnumerable<FormTemplateVersion> formTemplateVersions, CancellationToken cancellationToken)
{
FormTemplateVersions.ForEach(x =>
{
if (formTemplateVersions.Any(f => f.Id == x.Id) || formTemplateVersions.Any(f => f.Guid == x.Guid))
{
x.Deleted = true;
};
});
return Task.CompletedTask;
}
public Task EditFormTemplateAsync(AuditUserDetails auditUserDetails, FormTemplate formTemplate, CancellationToken cancellationToken)
{
var form = FormTemplates.First(x => x.Id == formTemplate.Id || x.Guid == formTemplate.Guid);
form.Name = formTemplate.Name;
return Task.CompletedTask;
}
#pragma warning disable IDE0060 // Remove unused parameter
public Task<IEnumerable<FormTemplateVersion>> GetAllFormVersionsAsync(long templateId, CancellationToken cancellationToken)
#pragma warning restore IDE0060 // Remove unused parameter
{
return Task.FromResult(FormTemplateVersions.Where(x => x.TemplateId == templateId));
}
public Task<FormTemplateVersion?> GetFormTemplateVersionAsync(IGeneralIdRef templateId, CancellationToken cancellationToken)
{
return Task.FromResult(FormTemplateVersions.FirstOrDefault(x => x.Id == templateId.Id || x.Guid == templateId.Guid));
}
public Task<FormTemplate?> GetFormTemplateWithSpecificVersionAsync(IGeneralIdRef id, long formTemplateVersionId, CancellationToken cancellationToken)
{
return Task.FromResult(FormTemplates.FirstOrDefault(x => x.Id == id.Id || x.Guid == id.Guid));
}
public Task AddFormInstance(
AuditUserDetails auditUserDetails,
FormInstance newFormInstance,
CancellationToken cancellationToken
)
{
FormInstances.Add(newFormInstance);
return Task.CompletedTask;
}
public Task AddFormInstances(AuditUserDetails auditUserDetails, IEnumerable<FormInstance> newFormInstance,
CancellationToken cancellationToken)
{
FormInstances.AddRange(newFormInstance);
return Task.CompletedTask;
}
public Task AddFormInstanceValues(
AuditUserDetails auditUserDetails,
List<FormFieldInstance> customFieldValues,
CancellationToken cancellationToken
)
{
FormFieldValues.AddRange(customFieldValues);
return Task.CompletedTask;
}
public Task<FormInstance?> GetFormInstance(GeneralIdRef createFormInstanceId, bool tracking, CancellationToken cancellationToken)
{
return Task.FromResult(FormInstances.FindByGeneralIdRef(createFormInstanceId));
}
public Task<List<FormInstance>> GetFormInstances(IEnumerable<GeneralIdRef> generalIdRefs, bool tracking, CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
public Task SaveCustomFieldValues(AuditUserDetails auditUserDetails, Delta<FormFieldInstance> delta, CancellationToken cancellationToken)
{
SaveCustomFieldValuesCalled = true;
return Task.CompletedTask;
}
public Task<IEnumerable<FormInstance>> GetFormsContainingFieldValue(IGeneralIdRef customFieldGeneralIdRef, string value, CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
public bool SaveCustomFieldValuesCalled { get; set; } = false;
public Task<FormTemplate?> GetTemplateAsync(IGeneralIdRef id, CancellationToken cancellationToken)
{
var form = FormTemplates.FirstOrDefault(x => x.Id == id.Id || x.Guid == id.Guid);
if (form is null)
return Task.FromResult(form)!;
form!.Versions = [.. FormTemplateVersions.Where(f => f.TemplateId == form.Id).OrderBy(f => f.Version)];
return Task.FromResult(form)!;
}
public IQueryable<FormTemplate> GetTemplates()
{
return FormTemplates.BuildMock();
}
#pragma warning disable IDE0060 // Remove unused parameter
public Task<IEnumerable<FormTemplate>> GetTemplatesAsync(CancellationToken cancellationToken)
#pragma warning restore IDE0060 // Remove unused parameter
{
return Task.FromResult((IEnumerable<FormTemplate>)FormTemplates);
}
public Task<FormTemplate?> GetTemplateWithOutLoadedRefereranceAsync(IGeneralIdRef id, CancellationToken cancellationToken)
{
var res = FormTemplates.FirstOrDefault(x => x.Id == id.Id || x.Guid == id.Guid);
if (res is null)
{
return Task.FromResult(res);
}
res.Versions = null!;
return Task.FromResult(res)!;
}
}