| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using Serilog.Events;
- using Xunit;
- using YZWater.Core.Models;
- using YZWater.Core.Services;
- using YZWater.Core.ViewModels;
- namespace YZWater.Core.Tests.ViewModels;
- /// <summary>
- /// "恢复默认设置"必须真的落到运行配置和磁盘上。
- /// 现场日志(log-20261001)里操作员 07:36:24 点了恢复默认,日志写着 IP=192.168.2.100:102,
- /// 但 4 秒后服务初始化仍然是 127.0.0.1:103,随后 5 次"测试连接"全部失败,直到重启程序才好
- /// —— 旧实现只往输入框里填了值,配置对象和文件都没动过。
- /// 这里刻意先装一个"出厂模板地址",就是为了证明断言能红:漏掉落盘这一步时它必炸。
- /// </summary>
- [Collection("Serilog minimum level")]
- public class ResetToDefaultPersistenceTests : IDisposable
- {
- private readonly LogEventLevel _originalLevel = LogService.MinimumLevel;
- private readonly string _originalIp;
- private readonly int _originalPort;
- public ResetToDefaultPersistenceTests()
- {
- LogService.ApplyMinimumLevel("Error");
- var config = ConfigService.GetConfig()!;
- _originalIp = config.PlcIp;
- _originalPort = config.PlcPort;
- // 现场部署包里的配置就是仿真地址,测试从这里起步
- config.PlcIp = "127.0.0.1";
- config.PlcPort = 103;
- }
- public void Dispose()
- {
- var config = ConfigService.GetConfig();
- if (config != null)
- {
- config.PlcIp = _originalIp;
- config.PlcPort = _originalPort;
- }
- LogService.ApplyMinimumLevel(_originalLevel.ToString());
- }
- [Fact]
- public void ResetToDefault_UpdatesRuntimeConfigAndPersistedFile()
- {
- var vm = new ViewBViewModel();
- try
- {
- Assert.Equal("127.0.0.1", vm.PlcIp); // 构造时已从配置载入
- vm.ResetToDefaultCommand.Execute(null);
- Assert.Equal(SystemConfig.DefaultPlcIp, vm.PlcIp);
- Assert.Equal(SystemConfig.DefaultPlcPort, vm.PlcPort);
- // 光有输入框没用:轮询和"测试连接"读的是配置对象
- Assert.Equal(SystemConfig.DefaultPlcIp, ConfigService.GetConfig()!.PlcIp);
- Assert.Equal(SystemConfig.DefaultPlcPort, ConfigService.GetConfig()!.PlcPort);
- // 重启后还得留得住:从磁盘重新读一遍
- ConfigService.LoadConfig();
- Assert.Equal(SystemConfig.DefaultPlcIp, ConfigService.GetConfig()!.PlcIp);
- Assert.Equal(SystemConfig.DefaultPlcPort, ConfigService.GetConfig()!.PlcPort);
- }
- finally
- {
- vm.Dispose();
- }
- }
- }
|