| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396 |
- using qdr.fnd.core.test;
- using Quadarax.Application.QLiberace.Base.Dtos;
- using Quadarax.Application.QLiberace.Base.Mapper;
- using Quadarax.Application.QLiberace.Base.Repositories;
- using Quadarax.Application.QLiberace.Base.Services;
- using Quadarax.Application.QLiberace.Base.Tests.Services.Base;
- using Quadarax.Application.QLiberace.Base.Tests.Services.Fakes;
- using Quadarax.Application.QLiberace.Common;
- using Quadarax.Application.QLiberace.Common.Domain;
- using Quadarax.Foundation.Core.Data.Domain;
- using Quadarax.Foundation.Core.Data.Interface.Entity;
- using Quadarax.Foundation.Core.Value;
- #pragma warning disable CS8625
- namespace Quadarax.Application.QLiberace.Base.Tests.Services
- {
- [TestFixture(Category = "Srv")]
- public class TenantServiceTest: TenantBasedService<TenantService, RepoTenant>
- {
- protected override RepoTenant GetRepository()
- {
- return new RepoTenant(Uow.As<IDataDomain>(), new QlbrcContext(null,"default", 1));
- }
- protected override TenantService GetService()
- {
- return new TenantService(GetRepository(), new ContextFake(), null);
- }
- [Test]
- public void ExistsTenantOK()
- {
- var service = GetService();
- // exists tenant
- var result = service.ExistsTenant(TenantOneCode);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Value, Is.True);
- // not exists tenant
- result = service.ExistsTenant(TenantOneCode + "x");
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Value, Is.False);
- }
- [Test]
- public void ExistsTenantFail()
- {
- var service = GetService();
- // empty tenant code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.ExistsTenant(string.Empty))
- ?.ParamName,
- Is.EqualTo("tenantCode"));
- }
- [Test]
- public void LockOK()
- {
- var service = GetService();
- // set tenant locked
- var result = service.Lock(TenantOneCode, true);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
-
- Uow.Commit();
- //verify tenant if locked
- var tenant = service.GetTenant(TenantOneCode);
- Assert.That(tenant, Is.Not.Null);
- Assert.That(tenant.IsSuccess, Is.True);
- Assert.That(tenant.Value, Is.Not.Null);
- Assert.That(tenant?.Value?.IsLocked, Is.EqualTo(true));
- // set tenant unlocked
- result = service.Lock(TenantOneCode, false);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
-
- Uow.Commit();
- //verify tenant if unlocked
- tenant = service.GetTenant(TenantOneCode);
- Assert.That(tenant, Is.Not.Null);
- Assert.That(tenant.IsSuccess, Is.True);
- Assert.That(tenant.Value, Is.Not.Null);
- Assert.That(tenant?.Value?.IsLocked, Is.EqualTo(false));
- }
- [Test]
- public void LockFail()
- {
- var service = GetService();
- // empty tenant code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.Lock(string.Empty, true))
- ?.ParamName,
- Is.EqualTo("tenantCode"));
- // invalid tenant code
- var resultTenant = service.Lock("testx", true);
- Assert.That(resultTenant, Is.Not.Null);
- Assert.That(resultTenant.IsSuccess, Is.False);
- Assert.That(resultTenant.Errors.Count(), Is.GreaterThan(0));
- Assert.That(resultTenant.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.TenantNotFoundCode));
- }
- [Test]
- public void ValidateOK()
- {
- var service = GetService();
- // check validate unlocked
- var result = service.Validate(TenantOneCode);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- // set tenant locked
- var resultLock = service.Lock(TenantOneCode, true);
- Assert.That(resultLock, Is.Not.Null);
- Assert.That(resultLock.IsSuccess, Is.True);
- Uow.Commit();
- // check validate locked
- result = service.Validate(TenantOneCode);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.False);
- Assert.That(result.Errors.Count(), Is.GreaterThan(0));
- Assert.That(result.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.TenantLockedCode));
- }
- [Test]
- public void ValidateFail()
- {
- var service = GetService();
- // empty tenant code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.Lock(string.Empty, true))
- ?.ParamName,
- Is.EqualTo("tenantCode"));
- // invalid tenant code
- var resultTenant = service.Lock("testx", true);
- Assert.That(resultTenant, Is.Not.Null);
- Assert.That(resultTenant.IsSuccess, Is.False);
- Assert.That(resultTenant.Errors.Count(), Is.GreaterThan(0));
- Assert.That(resultTenant.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.TenantNotFoundCode));
- }
- [Test]
- public void GetTenantOK()
- {
- var service = GetService();
- // get tenant by code
- var result = service.GetTenant(TenantOneCode);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Value, Is.Not.Null);
- Assert.That(result.Value?.Code, Is.EqualTo(TenantOneCode));
- Assert.That(result.Value?.Name, Is.EqualTo(TenantOneName));
- Assert.That(result.Value?.IsLocked, Is.EqualTo(TenantOneIsLocked));
- // get tenant by id
- result = service.GetTenant(2);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Value, Is.Not.Null);
- Assert.That(result.Value?.Code, Is.EqualTo(TenantOneCode));
- Assert.That(result.Value?.Name, Is.EqualTo(TenantOneName));
- Assert.That(result.Value?.IsLocked, Is.EqualTo(TenantOneIsLocked));
- }
- [Test]
- public void GetTenantFail()
- {
- var service = GetService();
- // empty tenant code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.GetTenant(string.Empty))
- ?.ParamName,
- Is.EqualTo("tenantCode"));
- // get tenant by code
- var result = service.GetTenant(TenantOneCode + "X");
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.False);
- Assert.That(result.Errors.Count(), Is.GreaterThan(0));
- Assert.That(result.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.TenantNotFoundCode));
- // get tenant by id
- result = service.GetTenant(-1);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.False);
- Assert.That(result.Errors.Count(), Is.GreaterThan(0));
- Assert.That(result.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.TenantNotFoundCode));
- }
- [Test]
- public void CreateTenantOK()
- {
- var service = GetService();
- var newTenant = new TenantWDto()
- {
- Code = "NewTenant",
- Name = "NewTenant"
- };
- var result = service.CreateTenant(newTenant);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Value, Is.Not.Null);
- Uow.Commit();
- var tenant = service.GetTenant(newTenant.Code);
- Assert.That(tenant, Is.Not.Null);
- Assert.That(tenant.IsSuccess, Is.True);
- Assert.That(tenant.Value, Is.Not.Null);
- Assert.That(tenant.Value?.Code, Is.EqualTo(newTenant.Code));
- Assert.That(tenant.Value?.Name, Is.EqualTo(newTenant.Name));
- Assert.That(tenant.Value?.LastAccess, Is.Not.Null);
- }
- [Test]
- public void CreateTenantFail()
- {
- var service = GetService();
- // empty tenant code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.CreateTenant(null))
- ?.ParamName,
- Is.EqualTo("tenant"));
- var newTenant = new TenantWDto()
- {
- Code = "NewTenant",
- Name = "NewTenant"
- };
- // create one tenant
- var result = service.CreateTenant(newTenant);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Value, Is.Not.Null);
- Uow.Commit();
- // create same/duplicit tenant
- result = service.CreateTenant(newTenant);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.False);
- Assert.That(result.Value, Is.Not.Null);
- Assert.That(result.Errors.Count(), Is.GreaterThan(0));
- Assert.That(result.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.TenantAlreadyExistsCode));
- // create not valid tenant (code oveflow)
- newTenant.Code = new string('x', 21);
- result = service.CreateTenant(newTenant);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.False);
- Assert.That(result.Value, Is.Not.Null);
- Assert.That(result.Errors.Count(), Is.GreaterThan(0));
- Assert.That(result.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.ValidationErrorsCode));
- }
- [Test]
- public void UpdateTenantOK()
- {
- var service = GetService();
- // gets existing tenant
- var tenant = service.GetTenant(TenantOneCode);
- Assert.That(tenant, Is.Not.Null);
- Assert.That(tenant.IsSuccess, Is.True);
- Assert.That(tenant.Value, Is.Not.Null);
- //update some properties
- var tenantW = tenant.Value.MapDto2Dto<TenantRDto, TenantWDto>();
- Assert.That(tenantW, Is.Not.Null);
- tenantW.Name = TenantOneName + "x";
- var result = service.UpdateTenant(tenantW);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- }
- [Test]
- public void UpdateTenantFail()
- {
- var service = GetService();
- // empty tenant code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.UpdateTenant(null))
- ?.ParamName,
- Is.EqualTo("tenant"));
- // gets existing tenant
- var tenant = service.GetTenant(TenantOneCode);
- Assert.That(tenant, Is.Not.Null);
- Assert.That(tenant.IsSuccess, Is.True);
- Assert.That(tenant.Value, Is.Not.Null);
- //update some properties fails
- var tenantW = tenant.Value.MapDto2Dto<TenantRDto, TenantWDto>();
- Assert.That(tenantW, Is.Not.Null);
- tenantW.Name = new string('x',201);
- var result = service.UpdateTenant(tenantW);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.False);
- Assert.That(result.Errors.Count(), Is.GreaterThan(0));
- Assert.That(result.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.ValidationErrorsCode));
- //update with bad tenant code
- tenantW.Name = TenantDefaultName;
- tenantW.Code = TenantOneCode + "x";
- result = service.UpdateTenant(tenantW);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.False);
- Assert.That(result.Errors.Count(), Is.GreaterThan(0));
- Assert.That(result.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.TenantNotFoundCode));
- }
- [Test]
- public void DeleteTenantOK()
- {
- var service = GetService();
- var result = service.GetTenant(TenantOneCode);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Value, Is.Not.Null);
- // delete tenant
- var delete = service.DeleteTenant(result.Value!.Id);
- Assert.That(delete, Is.Not.Null);
- Assert.That(delete.IsSuccess, Is.True);
- Uow.Commit();
- // verify delete
- result = service.GetTenant(TenantOneCode);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.False);
- Assert.That(result.Errors.Count(), Is.GreaterThan(0));
- Assert.That(result.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.TenantNotFoundCode));
-
- }
- [Test]
- public void DeleteTenantFail()
- {
- var service = GetService();
- // delete tenant
- var delete = service.DeleteTenant(-1);
- Assert.That(delete, Is.Not.Null);
- Assert.That(delete.IsSuccess, Is.False);
- Assert.That(delete.Errors.Count(), Is.GreaterThan(0));
- Assert.That(delete.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.TenantNotFoundCode));
- }
- protected override void OnSetup()
- {
- base.OnSetup();
- var repoTenant = new RepoTenant(Uow.As<IDataDomain>(),new QlbrcContext(null, "default", 1));
- var tenant = repoTenant.New();
- tenant.Code = "default";
- tenant.Name = "Default system tenant";
- tenant.IsLocked = false;
- repoTenant.Set(tenant);
- Uow.Commit();
- }
- }
- }
|