using System; using System.Collections.Generic; using Centron.BusinessLogic.WebServices.DataExchange.Connectors; using Centron.DAO; using Centron.DAO.Mappings.DataExchange.Connectors; using Centron.Data.Entities.Administration.Logins; using Centron.Interfaces.BL; using CentronSoftware.Centron.WebServices.Entities.DataExchange.Connectors; using FluentNHibernate.Cfg; using FluentNHibernate.Cfg.Db; using JetBrains.Annotations; using NHibernate; using NHibernate.Tool.hbm2ddl; using Xunit; namespace Centron.Tests.BL.DataExchange.Connectors; /// /// Guard tests for (no full rights/DB setup for SETTINGS). /// [TestSubject(typeof(DocBeeTicketTemplateWebServiceBL))] public class DocBeeTicketTemplateWebServiceBLTest { [Fact] public void SyncTemplates_WhenCurrentUserNull_ReturnsError() { using var session = CreateSession(); var daoSession = new DAOSession(session); var wsbl = new DocBeeTicketTemplateWebServiceBL(daoSession); var result = wsbl.SyncTemplates(new List(), null!); Assert.Equal(ResultStatus.Error, result.Status); Assert.Contains("User information is required", result.Message, StringComparison.Ordinal); } [Fact] public void SyncTemplates_WhenUserNull_ReturnsError() { using var session = CreateSession(); var daoSession = new DAOSession(session); var wsbl = new DocBeeTicketTemplateWebServiceBL(daoSession); var loggedIn = new LoggedInUser(appUserI3D: null, user: null); var result = wsbl.SyncTemplates(new List(), loggedIn); Assert.Equal(ResultStatus.Error, result.Status); Assert.Contains("User does not have permission", result.Message, StringComparison.Ordinal); } [Fact] public void GetAllTemplates_DelegatesToBl_EmptyDatabase() { using var session = CreateSession(); var daoSession = new DAOSession(session); var wsbl = new DocBeeTicketTemplateWebServiceBL(daoSession); var result = wsbl.GetAllTemplates(); Assert.Equal(ResultStatus.Success, result.Status); Assert.NotNull(result.Data); Assert.Empty(result.Data); } private static ISession CreateSession() { var fluentConfig = Fluently.Configure() .Database(SQLiteConfiguration.Standard.InMemory) .Mappings(m => m.FluentMappings.Add()); var sessionFactory = fluentConfig.BuildSessionFactory(); var session = sessionFactory.OpenSession(); new SchemaExport(fluentConfig.BuildConfiguration()).Execute(true, true, false, session.Connection, Console.Out); return session; } }