JsonCommaDelimitedIReadOnlyListTests.cs 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System.Text.Json;
  2. using System.Text.Json.Serialization;
  3. using Jellyfin.Extensions.Tests.Json.Models;
  4. using MediaBrowser.Model.Session;
  5. using Xunit;
  6. namespace Jellyfin.Extensions.Tests.Json.Converters
  7. {
  8. public static class JsonCommaDelimitedIReadOnlyListTests
  9. {
  10. [Fact]
  11. public static void Deserialize_String_Valid_Success()
  12. {
  13. var desiredValue = new GenericBodyIReadOnlyListModel<string>
  14. {
  15. Value = new[] { "a", "b", "c" }
  16. };
  17. var options = new JsonSerializerOptions();
  18. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<string>>(@"{ ""Value"": ""a,b,c"" }", options);
  19. Assert.Equal(desiredValue.Value, value?.Value);
  20. }
  21. [Fact]
  22. public static void Deserialize_String_Space_Valid_Success()
  23. {
  24. var desiredValue = new GenericBodyIReadOnlyListModel<string>
  25. {
  26. Value = new[] { "a", "b", "c" }
  27. };
  28. var options = new JsonSerializerOptions();
  29. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<string>>(@"{ ""Value"": ""a, b, c"" }", options);
  30. Assert.Equal(desiredValue.Value, value?.Value);
  31. }
  32. [Fact]
  33. public static void Deserialize_GenericCommandType_Valid_Success()
  34. {
  35. var desiredValue = new GenericBodyIReadOnlyListModel<GeneralCommandType>
  36. {
  37. Value = new[] { GeneralCommandType.MoveUp, GeneralCommandType.MoveDown }
  38. };
  39. var options = new JsonSerializerOptions();
  40. options.Converters.Add(new JsonStringEnumConverter());
  41. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp,MoveDown"" }", options);
  42. Assert.Equal(desiredValue.Value, value?.Value);
  43. }
  44. [Fact]
  45. public static void Deserialize_GenericCommandType_Space_Valid_Success()
  46. {
  47. var desiredValue = new GenericBodyIReadOnlyListModel<GeneralCommandType>
  48. {
  49. Value = new[] { GeneralCommandType.MoveUp, GeneralCommandType.MoveDown }
  50. };
  51. var options = new JsonSerializerOptions();
  52. options.Converters.Add(new JsonStringEnumConverter());
  53. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp, MoveDown"" }", options);
  54. Assert.Equal(desiredValue.Value, value?.Value);
  55. }
  56. [Fact]
  57. public static void Deserialize_String_Array_Valid_Success()
  58. {
  59. var desiredValue = new GenericBodyIReadOnlyListModel<string>
  60. {
  61. Value = new[] { "a", "b", "c" }
  62. };
  63. var options = new JsonSerializerOptions();
  64. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<string>>(@"{ ""Value"": [""a"",""b"",""c""] }", options);
  65. Assert.Equal(desiredValue.Value, value?.Value);
  66. }
  67. [Fact]
  68. public static void Deserialize_GenericCommandType_Array_Valid_Success()
  69. {
  70. var desiredValue = new GenericBodyIReadOnlyListModel<GeneralCommandType>
  71. {
  72. Value = new[] { GeneralCommandType.MoveUp, GeneralCommandType.MoveDown }
  73. };
  74. var options = new JsonSerializerOptions();
  75. options.Converters.Add(new JsonStringEnumConverter());
  76. var value = JsonSerializer.Deserialize<GenericBodyIReadOnlyListModel<GeneralCommandType>>(@"{ ""Value"": [""MoveUp"", ""MoveDown""] }", options);
  77. Assert.Equal(desiredValue.Value, value?.Value);
  78. }
  79. }
  80. }