JsonCommaDelimitedIReadOnlyListTests.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using System.Collections.Generic;
  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 JsonCommaDelimitedIReadOnlyListTests
  10. {
  11. private readonly JsonSerializerOptions _jsonOptions = new JsonSerializerOptions()
  12. {
  13. Converters =
  14. {
  15. new JsonStringEnumConverter()
  16. }
  17. };
  18. [Fact]
  19. public void Deserialize_String_Valid_Success()
  20. {
  21. var desiredValue = new GenericBodyIReadOnlyListModel<string>
  22. {
  23. Value = new[] { "a", "b", "c" }
  24. };
  25. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<string>>(@"{ ""Value"": ""a,b,c"" }", _jsonOptions);
  26. Assert.Equal(desiredValue.Value, value?.Value);
  27. }
  28. [Fact]
  29. public void Deserialize_String_Space_Valid_Success()
  30. {
  31. var desiredValue = new GenericBodyIReadOnlyListModel<string>
  32. {
  33. Value = new[] { "a", "b", "c" }
  34. };
  35. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<string>>(@"{ ""Value"": ""a, b, c"" }", _jsonOptions);
  36. Assert.Equal(desiredValue.Value, value?.Value);
  37. }
  38. [Fact]
  39. public void Deserialize_GenericCommandType_Valid_Success()
  40. {
  41. var desiredValue = new GenericBodyIReadOnlyListModel<GeneralCommandType>
  42. {
  43. Value = new[] { GeneralCommandType.MoveUp, GeneralCommandType.MoveDown }
  44. };
  45. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp,MoveDown"" }", _jsonOptions);
  46. Assert.Equal(desiredValue.Value, value?.Value);
  47. }
  48. [Fact]
  49. public void Deserialize_GenericCommandType_Space_Valid_Success()
  50. {
  51. var desiredValue = new GenericBodyIReadOnlyListModel<GeneralCommandType>
  52. {
  53. Value = new[] { GeneralCommandType.MoveUp, GeneralCommandType.MoveDown }
  54. };
  55. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp, MoveDown"" }", _jsonOptions);
  56. Assert.Equal(desiredValue.Value, value?.Value);
  57. }
  58. [Fact]
  59. public void Deserialize_String_Array_Valid_Success()
  60. {
  61. var desiredValue = new GenericBodyIReadOnlyListModel<string>
  62. {
  63. Value = new[] { "a", "b", "c" }
  64. };
  65. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<string>>(@"{ ""Value"": [""a"",""b"",""c""] }", _jsonOptions);
  66. Assert.Equal(desiredValue.Value, value?.Value);
  67. }
  68. [Fact]
  69. public void Deserialize_GenericCommandType_Array_Valid_Success()
  70. {
  71. var desiredValue = new GenericBodyIReadOnlyListModel<GeneralCommandType>
  72. {
  73. Value = new[] { GeneralCommandType.MoveUp, GeneralCommandType.MoveDown }
  74. };
  75. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<GeneralCommandType>>(@"{ ""Value"": [""MoveUp"", ""MoveDown""] }", _jsonOptions);
  76. Assert.Equal(desiredValue.Value, value?.Value);
  77. }
  78. [Fact]
  79. public void Serialize_GenericCommandType_IReadOnlyList_Valid_Success()
  80. {
  81. var valueToSerialize = new GenericBodyIReadOnlyListModel<GeneralCommandType>
  82. {
  83. Value = new List<GeneralCommandType> { GeneralCommandType.MoveUp, GeneralCommandType.MoveDown }
  84. };
  85. string value = JsonSerializer.Serialize<GenericBodyIReadOnlyListModel<GeneralCommandType>>(valueToSerialize, _jsonOptions);
  86. Assert.Equal(@"{""Value"":[""MoveUp"",""MoveDown""]}", value);
  87. }
  88. }
  89. }