using System; using Centron.BusinessLogic; using Centron.BusinessLogic.Administration.Settings; using Centron.BusinessLogic.Sales.Receipts.Settings; using Centron.Core.Sales.Receipts.Settings; using Centron.Interfaces.Administration.Settings; using Centron.Tests.EndToEnd.Infrastructure; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.Tests.Sales.Receipts.Settings { /// /// End-to-end tests for the Receiver Text Settings functionality. /// These tests verify that the settings can be retrieved and saved correctly, /// and that the setting for contact department order works as expected. /// public class ReceiverTextSettingsTests : EndToEndTest { public ReceiverTextSettingsTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { // Comment this line after expected files have been generated // Verifier.OverrideExpectedFiles = true; } public override void Execute() { using (var session = new BLSession()) { // Test default settings retrieval GetDefaultReceiverTextSettings(session); // Test saving settings with all settings enabled SaveAllSettingsEnabled(session); // Test saving settings with partial updates SavePartialSettings(session); // Test saving settings with contact department ordering changed SaveContactDepartmentOrderSetting(session); } } /// /// Tests that the default settings are returned correctly. /// private void GetDefaultReceiverTextSettings(BLSession session) { // Arrange var receiverTextSettingsBL = session.GetBL(); // Act var settings = receiverTextSettingsBL.GetReceiverTextSettings(); // Assert Verifier.Verify("ReceiverTextSettings_GetDefaultSettings", settings); // Additional log for test output LogOutputMessage($"Default settings retrieved: ReceiverContactDepartmentFirst={settings.ReceiverContactDepartmentFirst}"); } /// /// Tests saving all settings with enabled values. /// private void SaveAllSettingsEnabled(BLSession session) { // Arrange var receiverTextSettingsBL = session.GetBL(); var allEnabledSettings = new ReceiverTextSettingsDTO { AdditionalLineBetweenStreetAndCity = true, ReceiverAddCountryShortInFrontOfZip = true, ReceiverAddCountryName = true, ReceiverAddStreetForPostbox = true, ReceiverContactDepartmentFirst = true }; // Act var saveResult = receiverTextSettingsBL.SaveReceiverTextSettings(allEnabledSettings); var retrievedSettings = receiverTextSettingsBL.GetReceiverTextSettings(); // Assert Verifier.Verify("ReceiverTextSettings_AllSettingsEnabled_SaveResult", saveResult); Verifier.Verify("ReceiverTextSettings_AllSettingsEnabled_RetrievedSettings", retrievedSettings); // Additional log for test output LogOutputMessage($"All settings enabled and saved successfully: {saveResult}"); } /// /// Tests saving partial settings updates. /// private void SavePartialSettings(BLSession session) { // Arrange var receiverTextSettingsBL = session.GetBL(); // Create partial settings update - only some settings provided var partialSettings = new ReceiverTextSettingsDTO { AdditionalLineBetweenStreetAndCity = false, ReceiverAddCountryName = false // Other settings remain null - should not be updated }; // Act var saveResult = receiverTextSettingsBL.SaveReceiverTextSettings(partialSettings); var retrievedSettings = receiverTextSettingsBL.GetReceiverTextSettings(); // Assert Verifier.Verify("ReceiverTextSettings_PartialSettings_SaveResult", saveResult); Verifier.Verify("ReceiverTextSettings_PartialSettings_RetrievedSettings", retrievedSettings); // Additional log for test output LogOutputMessage($"Partial settings saved successfully: {saveResult}"); LogOutputMessage($"Retrieved settings after partial update: " + $"AdditionalLineBetweenStreetAndCity={retrievedSettings.AdditionalLineBetweenStreetAndCity}, " + $"ReceiverAddCountryName={retrievedSettings.ReceiverAddCountryName}, " + $"ReceiverContactDepartmentFirst={retrievedSettings.ReceiverContactDepartmentFirst}"); } /// /// Tests specifically changing the ReceiverContactDepartmentFirst setting /// which controls the ordering of contact vs. address department in receiver text. /// private void SaveContactDepartmentOrderSetting(BLSession session) { // Arrange var receiverTextSettingsBL = session.GetBL(); // Get current settings to determine current state var currentSettings = receiverTextSettingsBL.GetReceiverTextSettings(); // Create settings update to change the department order var departmentOrderSettings = new ReceiverTextSettingsDTO { ReceiverContactDepartmentFirst = !currentSettings.ReceiverContactDepartmentFirst }; // Act var saveResult = receiverTextSettingsBL.SaveReceiverTextSettings(departmentOrderSettings); var retrievedSettings = receiverTextSettingsBL.GetReceiverTextSettings(); // Assert Verifier.Verify("ReceiverTextSettings_ContactDepartmentOrder_SaveResult", saveResult); Verifier.Verify("ReceiverTextSettings_ContactDepartmentOrder_RetrievedSettings", retrievedSettings); // Additional log for test output LogOutputMessage($"Contact department order changed from {currentSettings.ReceiverContactDepartmentFirst} " + $"to {retrievedSettings.ReceiverContactDepartmentFirst}"); } /// /// Logs a message to the test output. /// private void LogOutputMessage(string message) { TestOutputHelper.WriteLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}] {message}"); } } }