| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using YZWater.Core.Models;
- using System.Text.Json;
- namespace YZWater.Core.Tests.Models;
- public class HubMessageTests
- {
- [Fact]
- public void ToJson_ProducesValidJson_WithTypeAndPayload()
- {
- var msg = HubMessage.AuthResult(true);
- var json = msg.ToJson();
- var doc = JsonDocument.Parse(json);
- Assert.Equal("auth_result", doc.RootElement.GetProperty("type").GetString());
- Assert.True(doc.RootElement.GetProperty("payload").GetBoolean());
- }
- [Fact]
- public void FromJson_RoundTrips_Correctly()
- {
- var original = HubMessage.CommandResult(success: true, message: "泵已启动");
- var json = original.ToJson();
- var restored = HubMessage.FromJson(json);
- Assert.NotNull(restored);
- Assert.Equal("command_result", restored!.Type);
- var payload = restored.GetPayload<CommandResultPayload>();
- Assert.NotNull(payload);
- Assert.True(payload!.Success);
- Assert.Equal("泵已启动", payload.Message);
- }
- [Fact]
- public void FromJson_InvalidJson_ThrowsException()
- {
- Assert.ThrowsAny<JsonException>(() => HubMessage.FromJson("not-json"));
- }
- [Fact]
- public void GetPayload_NullPayload_ReturnsDefault()
- {
- var msg = new HubMessage { Type = "empty" };
- var result = msg.GetPayload<CommandResultPayload>();
- Assert.Null(result);
- }
- [Fact]
- public void LockResult_Success_SetsPayloadCorrectly()
- {
- var msg = HubMessage.LockResult(success: true, currentOperator: "admin");
- Assert.Equal("lock_result", msg.Type);
- var payload = msg.GetPayload<LockResultPayload>();
- Assert.NotNull(payload);
- Assert.True(payload!.Success);
- Assert.Equal("admin", payload.CurrentOperator);
- }
- [Fact]
- public void LockStatus_ReflectsParameters()
- {
- var msg = HubMessage.LockStatus(currentOperator: "engineer1", isLocked: true);
- var payload = msg.GetPayload<LockStatusPayload>();
- Assert.NotNull(payload);
- Assert.True(payload!.IsLocked);
- Assert.Equal("engineer1", payload.CurrentOperator);
- }
- [Fact]
- public void ClientCount_SerializesIntegerPayload()
- {
- var msg = HubMessage.ClientCount(5);
- var json = msg.ToJson();
- var doc = JsonDocument.Parse(json);
- Assert.Equal(5, doc.RootElement.GetProperty("payload").GetInt32());
- }
- }
|