JsonCommaDelimitedArrayTests.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. using System;
  2. using System.Text.Json;
  3. using System.Text.Json.Serialization;
  4. using Jellyfin.Extensions.Tests.Json.Models;
  5. using MediaBrowser.Model.Session;
  6. using Xunit;
  7. namespace Jellyfin.Extensions.Tests.Json.Converters
  8. {
  9. public class JsonCommaDelimitedArrayTests
  10. {
  11. private readonly JsonSerializerOptions _jsonOptions = new JsonSerializerOptions()
  12. {
  13. Converters =
  14. {
  15. new JsonStringEnumConverter()
  16. }
  17. };
  18. [Fact]
  19. public void Deserialize_String_Null_Success()
  20. {
  21. var value = JsonSerializer.Deserialize<GenericBodyArrayModel<string>>(@"{ ""Value"": null }", _jsonOptions);
  22. Assert.Null(value?.Value);
  23. }
  24. [Fact]
  25. public void Deserialize_Empty_Success()
  26. {
  27. var desiredValue = new GenericBodyArrayModel<string>
  28. {
  29. Value = Array.Empty<string>()
  30. };
  31. var value = JsonSerializer.Deserialize<GenericBodyArrayModel<string>>(@"{ ""Value"": """" }", _jsonOptions);
  32. Assert.Equal(desiredValue.Value, value?.Value);
  33. }
  34. [Fact]
  35. public void Deserialize_String_Valid_Success()
  36. {
  37. var desiredValue = new GenericBodyArrayModel<string>
  38. {
  39. Value = ["a", "b", "c"]
  40. };
  41. var value = JsonSerializer.Deserialize<GenericBodyArrayModel<string>>(@"{ ""Value"": ""a,b,c"" }", _jsonOptions);
  42. Assert.Equal(desiredValue.Value, value?.Value);
  43. }
  44. [Fact]
  45. public void Deserialize_String_Space_Valid_Success()
  46. {
  47. var desiredValue = new GenericBodyArrayModel<string>
  48. {
  49. Value = ["a", "b", "c"]
  50. };
  51. var value = JsonSerializer.Deserialize<GenericBodyArrayModel<string>>(@"{ ""Value"": ""a, b, c"" }", _jsonOptions);
  52. Assert.Equal(desiredValue.Value, value?.Value);
  53. }
  54. [Fact]
  55. public void Deserialize_GenericCommandType_Valid_Success()
  56. {
  57. var desiredValue = new GenericBodyArrayModel<GeneralCommandType>
  58. {
  59. Value = [GeneralCommandType.MoveUp, GeneralCommandType.MoveDown]
  60. };
  61. var value = JsonSerializer.Deserialize<GenericBodyArrayModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp,MoveDown"" }", _jsonOptions);
  62. Assert.Equal(desiredValue.Value, value?.Value);
  63. }
  64. [Fact]
  65. public void Deserialize_GenericCommandType_EmptyEntry_Success()
  66. {
  67. var desiredValue = new GenericBodyArrayModel<GeneralCommandType>
  68. {
  69. Value = [GeneralCommandType.MoveUp, GeneralCommandType.MoveDown]
  70. };
  71. var value = JsonSerializer.Deserialize<GenericBodyArrayModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp,,MoveDown"" }", _jsonOptions);
  72. Assert.Equal(desiredValue.Value, value?.Value);
  73. }
  74. [Fact]
  75. public void Deserialize_GenericCommandType_Invalid_Success()
  76. {
  77. var desiredValue = new GenericBodyArrayModel<GeneralCommandType>
  78. {
  79. Value = [GeneralCommandType.MoveUp, GeneralCommandType.MoveDown]
  80. };
  81. var value = JsonSerializer.Deserialize<GenericBodyArrayModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp,TotallyNotAVallidCommand,MoveDown"" }", _jsonOptions);
  82. Assert.Equal(desiredValue.Value, value?.Value);
  83. }
  84. [Fact]
  85. public void Deserialize_GenericCommandType_Space_Valid_Success()
  86. {
  87. var desiredValue = new GenericBodyArrayModel<GeneralCommandType>
  88. {
  89. Value = [GeneralCommandType.MoveUp, GeneralCommandType.MoveDown]
  90. };
  91. var value = JsonSerializer.Deserialize<GenericBodyArrayModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp, MoveDown"" }", _jsonOptions);
  92. Assert.Equal(desiredValue.Value, value?.Value);
  93. }
  94. [Fact]
  95. public void Deserialize_String_Array_Valid_Success()
  96. {
  97. var desiredValue = new GenericBodyArrayModel<string>
  98. {
  99. Value = ["a", "b", "c"]
  100. };
  101. var value = JsonSerializer.Deserialize<GenericBodyArrayModel<string>>(@"{ ""Value"": [""a"",""b"",""c""] }", _jsonOptions);
  102. Assert.Equal(desiredValue.Value, value?.Value);
  103. }
  104. [Fact]
  105. public void Deserialize_GenericCommandType_Array_Valid_Success()
  106. {
  107. var desiredValue = new GenericBodyArrayModel<GeneralCommandType>
  108. {
  109. Value = [GeneralCommandType.MoveUp, GeneralCommandType.MoveDown]
  110. };
  111. var value = JsonSerializer.Deserialize<GenericBodyArrayModel<GeneralCommandType>>(@"{ ""Value"": [""MoveUp"", ""MoveDown""] }", _jsonOptions);
  112. Assert.Equal(desiredValue.Value, value?.Value);
  113. }
  114. }
  115. }