| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
- using System.Globalization;
- using qdr.fnd.core.test;
- 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;
- using Quadarax.Foundation.Core.Data.Domain;
- using Quadarax.Foundation.Core.Value.Extensions;
- #pragma warning disable CS8625
- namespace Quadarax.Application.QLiberace.Base.Tests.Services
- {
- [TestFixture(Category = "Srv")]
- public class SettingsServiceTest : TenantBasedService<SettingsService, RepoSetting>
- {
- protected override RepoSetting GetRepository()
- {
- return new RepoSetting(Uow.As<IDataDomain>(), Context);
- }
- protected override SettingsService GetService()
- {
- return new SettingsService(GetRepository(), new ContextFake(), new LoggerFactoryFake());
- }
- [Test]
- public void CreateSettingsOK()
- {
- var service = GetService();
- var settings = new ModuleSettingFake();
- var result = service.CreateSettings<ModuleSettingFake>(settings);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- //check if stored in database
- Uow.Commit();
- var repo = GetRepository();
- var value = repo.Get("test", nameof(settings.PropertyString1));
- Assert.That(value, Is.Not.Null);
- Assert.That(value.Value, Is.EqualTo(settings.PropertyString1));
- Assert.That(value.IsEnabled, Is.True);
- Assert.That(value.ValueTypeQualified, Is.EqualTo(typeof(string).FullName));
- }
- [Test]
- public void CreateSettingsFail()
- {
- var service = GetService();
- // no module attribute
- var settings = new ModuleSettingWoAttributeFake();
- var result = service.CreateSettings<ModuleSettingWoAttributeFake>(settings);
- 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().Message.StartsWith("ModuleAttribute"), Is.True);
- }
- [Test]
- public void GetSettingsOK()
- {
- var service = GetService();
- var settings = new ModuleSettingFake();
- settings.PropertyString2 = DateTime.Now.ToOADate().ToString(CultureInfo.InvariantCulture);
- var result = service.CreateSettings<ModuleSettingFake>(settings);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- // gets the settings as dto
- var resultSettings = service.GetSettings<ModuleSettingFake>("test");
- Assert.That(resultSettings, Is.Not.Null);
- Assert.That(resultSettings.IsSuccess, Is.True);
- Assert.That(resultSettings.Errors.Count(), Is.EqualTo(0));
- Assert.That(resultSettings.Value, Is.Not.Null);
- Assert.That(resultSettings.Value.PropertyString2, Is.EquivalentTo(settings.PropertyString2));
- }
- [Test]
- public void GetSettingsFail()
- {
- var service = GetService();
- // invalid module code
- var resultSettings = service.GetSettings<ModuleSettingFake>("testx");
- Assert.That(resultSettings, Is.Not.Null);
- Assert.That(resultSettings.IsSuccess, Is.False);
- Assert.That(resultSettings.Errors.Count(), Is.GreaterThan(0));
- Assert.That(resultSettings.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.SettingsNotFoundForModuleCode));
- // empty module code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.GetSettings<ModuleSettingFake>(string.Empty))
- ?.ParamName,
- Is.EqualTo("moduleCode"));
- }
- [Test]
- public void GetSettingsValueOK()
- {
- var service = GetService();
- // create one settings
- var settings = new ModuleSettingFake();
- settings.PropertyString2 = DateTime.Now.ToOADate().ToString(CultureInfo.InvariantCulture);
- var result = service.CreateSettings<ModuleSettingFake>(settings);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- var settingGot = service.GetSettingsValues("test", Paging.NoPaging());
- Assert.That(settingGot, Is.Not.Null);
- Assert.That(settingGot.IsSuccess, Is.True);
- Assert.That(settingGot.Errors.Count(), Is.EqualTo(0));
- Assert.That(settingGot.Values.Count, Is.EqualTo(8));
- Assert.That(((DateTime?)settingGot.Values["PropertyDateTimeNow"])?.ToFileShortDateTimeString(),
- Is.EqualTo(settings.PropertyDateTimeNow?.ToFileShortDateTimeString()));
- }
- [Test]
- public void GetSettingsValueFail()
- {
- var service = GetService();
- // empty module code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.GetSettingsValues(string.Empty, Paging.NoPaging()))
- ?.ParamName,
- Is.EqualTo("moduleCode"));
- // not existing module
- var settings = service.GetSettingsValues("testx", Paging.NoPaging());
- Assert.That(settings, Is.Not.Null);
- Assert.That(settings.IsSuccess, Is.True);
- Assert.That(settings.Errors.Count(), Is.EqualTo(0));
- Assert.That(settings.Values.Count, Is.EqualTo(0));
- }
- [Test]
- public void ExistsSettingsValueOK()
- {
- var service = GetService();
- // create one settings
- var settings = new ModuleSettingFake();
- settings.PropertyString2 = DateTime.Now.ToOADate().ToString(CultureInfo.InvariantCulture);
- var result = service.CreateSettings<ModuleSettingFake>(settings);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- var value = service.GetSettingsValue<DateTime?>("test", "PropertyDateTimeNow");
- Assert.That(value, Is.Not.Null);
- Assert.That(value.IsSuccess, Is.True);
- Assert.That(value.Errors.Count(), Is.EqualTo(0));
- Assert.That(((DateTime?)value.Value)?.ToFileShortDateTimeString(),
- Is.EqualTo(settings.PropertyDateTimeNow?.ToFileShortDateTimeString()));
- }
- [Test]
- public void ExistsSettingsValueFail()
- {
- var service = GetService();
- // create one settings
- var settings = new ModuleSettingFake();
- settings.PropertyString2 = DateTime.Now.ToOADate().ToString(CultureInfo.InvariantCulture);
- var result = service.CreateSettings<ModuleSettingFake>(settings);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- // empty module code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.GetSettingsValue<DateTime?>(string.Empty, "PropertyDateTimeNow"))
- ?.ParamName,
- Is.EqualTo("moduleCode"));
- // not empty value code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.GetSettingsValue<DateTime?>("test", string.Empty))
- ?.ParamName,
- Is.EqualTo("valueCode"));
- // not existing value code
- var fail = service.GetSettingsValue<DateTime?>("test", "PropertyDateTimeNow2");
- Assert.That(fail, Is.Not.Null);
- Assert.That(fail.IsSuccess, Is.False);
- Assert.That(fail.Errors.Count(), Is.EqualTo(1));
- Assert.That(fail.Errors.First().Code, Is.EqualTo(ExceptionLibrary.ExceptionsCodes.SettingsNotFoundCode));
- }
- [Test]
- public void AddSettingsValueOK()
- {
- var service = GetService();
- // add new value
- var result = service.AddSettingsValue<string>("test", "foo", "this is a foo", "value");
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- // read new created value
- var resultValue = service.GetSettingsValue<string>("test", "foo");
- Assert.That(resultValue, Is.Not.Null);
- Assert.That(resultValue.IsSuccess, Is.True);
- Assert.That(resultValue.Errors.Count(), Is.EqualTo(0));
- Assert.That(resultValue.Value, Is.EqualTo("value"));
- }
- [Test]
- public void AddSettingsValueFail()
- {
- var service = GetService();
- // add new value correct
- var result = service.AddSettingsValue<string>("test", "foo", "this is a foo", "value");
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- // add duplicit value
- var fail = service.AddSettingsValue<string>("test", "foo", "this is a foo", "value");
- Assert.That(fail, Is.Not.Null);
- Assert.That(fail.IsSuccess, Is.False);
- Assert.That(fail.Errors.Count(), Is.EqualTo(1));
- Assert.That(fail.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.SettingsAlreadyExistsCode));
- // empty module code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.AddSettingsValue<string>(string.Empty, "foo", "this is a foo", "value"))
- ?.ParamName,
- Is.EqualTo("moduleCode"));
- // not empty value code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.AddSettingsValue<string>("test", string.Empty, "this is a foo", "value"))
- ?.ParamName,
- Is.EqualTo("valueCode"));
- }
- [Test]
- public void UpdateSettingsOK()
- {
- var service = GetService();
- // create one settings
- var settings = new ModuleSettingFake();
- settings.PropertyString2 = DateTime.Now.ToOADate().ToString(CultureInfo.InvariantCulture);
- var result = service.CreateSettings<ModuleSettingFake>(settings);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- settings.PropertyBool = !settings.PropertyBool;
- settings.PropertyDateTime1 = DateTime.Now;
- settings.PropertyDateTime2 = DateTime.Now;
- settings.PropertyInt = null;
- result = service.UpdateSettings<ModuleSettingFake>(settings);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- var settingGot = service.GetSettings<ModuleSettingFake>("test");
- Assert.That(settingGot, Is.Not.Null);
- Assert.That(settingGot.IsSuccess, Is.True);
- Assert.That(settingGot.Errors.Count(), Is.EqualTo(0));
- Assert.That(settingGot.Value.PropertyDateTimeNow?.ToFileShortDateTimeString(),
- Is.EqualTo(settings.PropertyDateTimeNow?.ToFileShortDateTimeString()));
- Assert.That(settingGot.Value.PropertyDateTime1.ToFileShortDateTimeString(),
- Is.EqualTo(settings.PropertyDateTime1.ToFileShortDateTimeString()));
- }
- [Test]
- public void UpdateSettingsFail()
- {
- var service = GetService();
- // create one settings
- var settings = new ModuleSettingFake();
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.UpdateSettings<ModuleSettingFake>(null))?.ParamName,
- Is.EqualTo("settings"));
- var fail = service.UpdateSettings<ModuleSettingFake>(settings);
- Assert.That(fail, Is.Not.Null);
- Assert.That(fail.IsSuccess, Is.False);
- Assert.That(fail.Errors.Count(), Is.EqualTo(1));
- Assert.That(fail.Errors.First().Code,
- Is.EqualTo(ExceptionLibrary.ExceptionsCodes.SettingsNotFoundForModuleCode));
- // include test for attributes
- //Assert.That(Assert.Throws<InvalidOperationException>(() =>
- // service.UpdateSettings<ModuleSettingWoAttributeFake>(new ModuleSettingWoAttributeFake()))?.Message.StartsWith("ModuleAttribute"),
- // Is.True);
- }
- [Test]
- public void UpdateSettingsValueOK()
- {
- var service = GetService();
- // create one settings
- var settings = new ModuleSettingFake();
- settings.PropertyString2 = DateTime.Now.ToOADate().ToString(CultureInfo.InvariantCulture);
- var result = service.CreateSettings<ModuleSettingFake>(settings);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- var now = DateTime.Now;
- result = service.UpdateSettingsValue("test", "PropertyDateTime1", now);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- var settingGot = service.GetSettingsValue<DateTime>("test", "PropertyDateTime1");
- Assert.That(settingGot, Is.Not.Null);
- Assert.That(settingGot.IsSuccess, Is.True);
- Assert.That(settingGot.Errors.Count(), Is.EqualTo(0));
- Assert.That(((DateTime)settingGot.Value).ToFileShortDateTimeString(),
- Is.EqualTo(now.ToFileShortDateTimeString()));
- result = service.UpdateSettingsValue("test", "PropertyInt", null);
- }
- [Test]
- public void UpdateSettingsValueFail()
- {
- var service = GetService();
- // add duplicit value
- var fail = service.UpdateSettingsValue("test", "foo", "value");
- Assert.That(fail, Is.Not.Null);
- Assert.That(fail.IsSuccess, Is.False);
- Assert.That(fail.Errors.Count(), Is.EqualTo(1));
- Assert.That(fail.Errors.First().Code, Is.EqualTo(ExceptionLibrary.ExceptionsCodes.SettingsNotFoundCode));
- // empty module code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.UpdateSettingsValue(string.Empty, "foo", "value"))
- ?.ParamName,
- Is.EqualTo("moduleCode"));
- // not empty value code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.UpdateSettingsValue("test", string.Empty, "value"))
- ?.ParamName,
- Is.EqualTo("valueCode"));
- }
- [Test]
- public void AddOrUpdateSettingsValueOK()
- {
- var service = GetService();
- var now = DateTime.Now;
- var result = service.AddOrUpdateSettingsValue<DateTime>("test", "PropertyDateTime1", now);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- var settingGot = service.GetSettingsValue<DateTime>("test", "PropertyDateTime1");
- Assert.That(settingGot, Is.Not.Null);
- Assert.That(settingGot.IsSuccess, Is.True);
- Assert.That(settingGot.Errors.Count(), Is.EqualTo(0));
- Assert.That(((DateTime)settingGot.Value).ToFileShortDateTimeString(),
- Is.EqualTo(now.ToFileShortDateTimeString()));
- now = DateTime.Now.AddHours(1);
- result = service.AddOrUpdateSettingsValue<DateTime>("test", "PropertyDateTime1", now);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- settingGot = service.GetSettingsValue<DateTime>("test", "PropertyDateTime1");
- Assert.That(settingGot, Is.Not.Null);
- Assert.That(settingGot.IsSuccess, Is.True);
- Assert.That(settingGot.Errors.Count(), Is.EqualTo(0));
- Assert.That(((DateTime)settingGot.Value).ToFileShortDateTimeString(),
- Is.EqualTo(now.ToFileShortDateTimeString()));
- }
- [Test]
- public void AddOrUpdateSettingsValueFail()
- {
- var service = GetService();
- // empty module code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.AddOrUpdateSettingsValue<DateTime>(string.Empty, "foo", "value"))
- ?.ParamName,
- Is.EqualTo("moduleCode"));
- // not empty value code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.AddOrUpdateSettingsValue<DateTime>("test", string.Empty, "value"))
- ?.ParamName,
- Is.EqualTo("valueCode"));
- }
- [Test]
- public void GetSettingsValuesOK()
- {
- var service = GetService();
- // create one settings
- var settings = new ModuleSettingFake();
- var result = service.CreateSettings<ModuleSettingFake>(settings);
- Assert.That(result, Is.Not.Null);
- Assert.That(result.IsSuccess, Is.True);
- Assert.That(result.Errors.Count(), Is.EqualTo(0));
- Uow.Commit();
- var settingGot = service.GetSettingsValues("test", Paging.NoPaging());
- Assert.That(settingGot, Is.Not.Null);
- Assert.That(settingGot.IsSuccess, Is.True);
- Assert.That(settingGot.Errors.Count(), Is.EqualTo(0));
- Assert.That(settingGot.Values.Count, Is.EqualTo(8));
- }
- [Test]
- public void GetSettingsValuesFail()
- {
- var service = GetService();
- // empty module code
- Assert.That(Assert.Throws<ArgumentNullException>(() =>
- service.GetSettingsValues(string.Empty, null))
- ?.ParamName,
- Is.EqualTo("moduleCode"));
- var settingGot = service.GetSettingsValues("testx", Paging.NoPaging());
- Assert.That(settingGot, Is.Not.Null);
- Assert.That(settingGot.IsSuccess, Is.True);
- Assert.That(settingGot.Errors.Count(), Is.EqualTo(0));
- Assert.That(settingGot.Values.Count, Is.EqualTo(0));
- }
- 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();
- }
- }
- }
|