membership.vala 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /********************************************************************
  2. # Copyright 2016-2017 Daniel 'grindhold' Brendle
  3. #
  4. # This file is part of liboparl.
  5. #
  6. # liboparl is free software: you can redistribute it and/or
  7. # modify it under the terms of the GNU Lesser General Public License
  8. # as published by the Free Software Foundation, either
  9. # version 3 of the License, or (at your option) any later
  10. # version.
  11. #
  12. # liboparl is distributed in the hope that it will be
  13. # useful, but WITHOUT ANY WARRANTY; without even the implied
  14. # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  15. # PURPOSE. See the GNU Lesser General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU Lesser General Public
  18. # License along with liboparl.
  19. # If not, see http://www.gnu.org/licenses/.
  20. *********************************************************************/
  21. using OParl;
  22. namespace OParlTest {
  23. public class MembershipTest {
  24. private static GLib.HashTable<string,string> test_input;
  25. private static void init() {
  26. MembershipTest.test_input = new GLib.HashTable<string,string>(GLib.str_hash, GLib.str_equal);
  27. MembershipTest.test_input.insert("https://oparl.example.org/", Fixtures.system_sane);
  28. MembershipTest.test_input.insert("https://oparl.example.org/bodies", Fixtures.body_list_sane);
  29. MembershipTest.test_input.insert("https://oparl.example.org/organization/0", Fixtures.organization_sane);
  30. MembershipTest.test_input.insert("https://oparl.example.org/body/0/people/", Fixtures.person_list_sane);
  31. MembershipTest.test_input.insert("https://oparl.example.org/membership/0", Fixtures.membership_sane_1);
  32. MembershipTest.test_input.insert("https://oparl.example.org/membership/1", Fixtures.membership_sane_2);
  33. }
  34. public static void add_tests () {
  35. MembershipTest.init();
  36. Test.add_func ("/oparl/membership/sane_input", () => {
  37. var client = new Client();
  38. TestHelper.mock_connect(ref client, MembershipTest.test_input, null);
  39. System s;
  40. try {
  41. s = client.open("https://oparl.example.org/");
  42. } catch (ParsingError e) {
  43. GLib.assert_not_reached();
  44. }
  45. try {
  46. Body b = s.get_body().nth_data(0);
  47. Person p = b.get_person().nth_data(0);
  48. Membership m = p.membership.nth_data(1);
  49. assert (m.id == "https://oparl.example.org/membership/1");
  50. assert (m.get_organization() != null);
  51. assert (m.get_organization() is OParl.Organization);
  52. assert (m.get_on_behalf_of() != null);
  53. assert (m.get_on_behalf_of() is OParl.Organization);
  54. assert (m.get_person() != null);
  55. assert (m.get_person() is OParl.Person);
  56. assert (m.role == "Sachkundige Bürgerin");
  57. assert (m.voting_right == false);
  58. assert (m.start_date.to_string() == "2013-12-02T00:00:00+0000");
  59. assert (m.end_date.to_string() == "2014-07-27T00:00:00+0000");
  60. } catch (ParsingError e) {
  61. GLib.assert_not_reached();
  62. }
  63. });
  64. Test.add_func ("/oparl/membership/wrong_id_type", () => {
  65. var client = new Client();
  66. TestHelper.mock_connect(ref client, MembershipTest.test_input, "\"https://oparl.example.org/membership/1\"");
  67. try {
  68. System s = client.open("https://oparl.example.org/");
  69. Body b = s.get_body().nth_data(0);
  70. Person p = b.get_person().nth_data(0);
  71. p.membership.nth_data(1);
  72. GLib.assert_not_reached();
  73. } catch (ParsingError e) {
  74. assert(e.message.contains("'id'"));
  75. }
  76. });
  77. Test.add_func ("/oparl/membership/wrong_organization_type", () => {
  78. var client = new Client();
  79. TestHelper.mock_connect(ref client, MembershipTest.test_input, "\"https://oparl.example.org/organization/0\"");
  80. try {
  81. System s = client.open("https://oparl.example.org/");
  82. Body b = s.get_body().nth_data(0);
  83. Person p = b.get_person().nth_data(0);
  84. p.membership.nth_data(1);
  85. GLib.assert_not_reached();
  86. } catch (ParsingError e) {
  87. assert(e.message.contains("'organizations'"));
  88. }
  89. });
  90. Test.add_func ("/oparl/membership/wrong_role_type", () => {
  91. var client = new Client();
  92. TestHelper.mock_connect(ref client, MembershipTest.test_input, "\"Sachkundige Bürgerin\"");
  93. try {
  94. System s = client.open("https://oparl.example.org/");
  95. Body b = s.get_body().nth_data(0);
  96. Person p = b.get_person().nth_data(0);
  97. p.membership.nth_data(1);
  98. GLib.assert_not_reached();
  99. } catch (ParsingError e) {
  100. assert(e.message.contains("'role'"));
  101. }
  102. });
  103. Test.add_func ("/oparl/membership/wrong_voting_right_type", () => {
  104. var client = new Client();
  105. TestHelper.mock_connect_extra(ref client, MembershipTest.test_input, "false", "\"foobar\"");
  106. try {
  107. System s = client.open("https://oparl.example.org/");
  108. Body b = s.get_body().nth_data(0);
  109. Person p = b.get_person().nth_data(0);
  110. p.membership.nth_data(1);
  111. GLib.assert_not_reached();
  112. } catch (ParsingError e) {
  113. assert(e.message.contains("'votingRight'"));
  114. }
  115. });
  116. Test.add_func ("/oparl/membership/wrong_start_date_type", () => {
  117. var client = new Client();
  118. TestHelper.mock_connect(ref client, MembershipTest.test_input, "\"2013-12-02\"");
  119. try {
  120. System s = client.open("https://oparl.example.org/");
  121. Body b = s.get_body().nth_data(0);
  122. Person p = b.get_person().nth_data(0);
  123. p.membership.nth_data(1);
  124. GLib.assert_not_reached();
  125. } catch (ParsingError e) {
  126. assert(e.message.contains("'startDate'"));
  127. }
  128. });
  129. Test.add_func ("/oparl/membership/wrong_end_date_type", () => {
  130. var client = new Client();
  131. TestHelper.mock_connect(ref client, MembershipTest.test_input, "\"2014-07-27\"");
  132. try {
  133. System s = client.open("https://oparl.example.org/");
  134. Body b = s.get_body().nth_data(0);
  135. Person p = b.get_person().nth_data(0);
  136. p.membership.nth_data(1);
  137. GLib.assert_not_reached();
  138. } catch (ParsingError e) {
  139. assert(e.message.contains("'endDate'"));
  140. }
  141. });
  142. }
  143. }
  144. }