/src/test/java/com/t11e/discovery/datatool/JsonColumnsTest.java

http://github.com/t11e/discovery_datatool · Java · 117 lines · 113 code · 4 blank · 0 comment · 0 complexity · 0bc2a60c707dfd58d0392b216451b12e MD5 · raw file

  1. package com.t11e.discovery.datatool;
  2. import java.util.Arrays;
  3. import java.util.Collections;
  4. import org.dom4j.Document;
  5. import org.junit.Test;
  6. public class JsonColumnsTest
  7. extends EndToEndTestBase
  8. {
  9. @Test
  10. public void testDefault()
  11. {
  12. final Document doc = assertChangeset("none", "", "snapshot",
  13. Arrays.asList("1", "2", "3"),
  14. Collections.<String> emptyList(),
  15. false);
  16. assertXpath("joe", doc,
  17. "/changeset/set-item[@id='1']/properties/struct/entry[@name='name']/string/text()");
  18. assertXpath("{'name':'joseph','age':21}".replace('\'', '"'), doc,
  19. "/changeset/set-item[@id='1']/properties/struct/entry[@name='JSON']/string/text()");
  20. }
  21. @Test
  22. public void legacy()
  23. {
  24. testScopedJson("legacy");
  25. }
  26. @Test
  27. public void scoped()
  28. {
  29. testScopedJson("scoped");
  30. }
  31. private void testScopedJson(final String publisher)
  32. {
  33. final Document doc = assertChangeset(publisher, "", "snapshot",
  34. Arrays.asList("1", "2", "3"),
  35. Collections.<String> emptyList(),
  36. false);
  37. assertXpath("joe", doc,
  38. "/changeset/set-item[@id='1']/properties/struct/entry[@name='name']/string/text()");
  39. assertXpath("joseph", doc,
  40. "/changeset/set-item[@id='1']/properties/struct/entry[@name='JSON']/struct/entry[@name='name']/string/text()");
  41. assertXpath("21", doc,
  42. "/changeset/set-item[@id='1']/properties/struct/entry[@name='JSON']/struct/entry[@name='age']/int/text()");
  43. }
  44. @Test
  45. public void unscoped()
  46. {
  47. final Document doc = assertChangeset("unscoped", "", "snapshot",
  48. Arrays.asList("1", "2", "3"),
  49. Collections.<String> emptyList(),
  50. false);
  51. assertXpath("joseph", doc,
  52. "/changeset/set-item[@id='1']/properties/struct/entry[@name='name']/string/text()");
  53. assertXpath("21", doc,
  54. "/changeset/set-item[@id='1']/properties/struct/entry[@name='age']/int/text()");
  55. }
  56. @Test
  57. public void unscopedOrder()
  58. {
  59. final Document doc = assertChangeset("unscoped-order", "", "snapshot",
  60. Arrays.asList("1", "2", "3"),
  61. Collections.<String> emptyList(),
  62. false);
  63. assertXpath("joe", doc,
  64. "/changeset/set-item[@id='1']/properties/struct/entry[@name='name']/string/text()");
  65. assertXpath("21", doc,
  66. "/changeset/set-item[@id='1']/properties/struct/entry[@name='age']/int/text()");
  67. }
  68. @Test
  69. public void mixed()
  70. {
  71. final Document doc = assertChangeset("mixed", "", "snapshot",
  72. Arrays.asList("1", "2", "3"),
  73. Collections.<String> emptyList(),
  74. false);
  75. assertXpath("joseph", doc,
  76. "/changeset/set-item[@id='1']/properties/struct/entry[@name='name']/string/text()");
  77. assertXpath("21", doc,
  78. "/changeset/set-item[@id='1']/properties/struct/entry[@name='age']/int/text()");
  79. assertXpath("joseph", doc,
  80. "/changeset/set-item[@id='1']/properties/struct/entry[@name='JSON']/struct/entry[@name='name']/string/text()");
  81. assertXpath("21", doc,
  82. "/changeset/set-item[@id='1']/properties/struct/entry[@name='JSON']/struct/entry[@name='age']/int/text()");
  83. }
  84. @Test
  85. public void mixedUpper()
  86. {
  87. final Document doc = assertChangeset("mixed-upper", "", "snapshot",
  88. Arrays.asList("1", "2", "3"),
  89. Collections.<String> emptyList(),
  90. false);
  91. assertXpath("joseph", doc,
  92. "/changeset/set-item[@id='1']/properties/struct/entry[@name='NAME']/string/text()");
  93. assertXpath("21", doc,
  94. "/changeset/set-item[@id='1']/properties/struct/entry[@name='AGE']/int/text()");
  95. assertXpath("joseph", doc,
  96. "/changeset/set-item[@id='1']/properties/struct/entry[@name='JSON']/struct/entry[@name='name']/string/text()");
  97. assertXpath("21", doc,
  98. "/changeset/set-item[@id='1']/properties/struct/entry[@name='JSON']/struct/entry[@name='age']/int/text()");
  99. }
  100. }