decidim 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc.json +2 -1
  3. data/Gemfile.lock +121 -112
  4. data/README.md +28 -10
  5. data/Rakefile +1 -1
  6. data/decidim-admin/README.md +1 -1
  7. data/decidim-admin/app/assets/stylesheets/decidim/admin/_sidebar.scss +30 -1
  8. data/decidim-admin/app/assets/stylesheets/decidim/admin/_tables.scss +3 -0
  9. data/decidim-admin/app/assets/stylesheets/decidim/admin/application.scss +3 -0
  10. data/decidim-admin/app/commands/decidim/admin/create_participatory_process.rb +4 -1
  11. data/decidim-admin/app/commands/decidim/admin/create_participatory_process_admin.rb +26 -7
  12. data/decidim-admin/app/commands/decidim/admin/create_participatory_process_group.rb +54 -0
  13. data/decidim-admin/app/commands/decidim/admin/create_participatory_process_step.rb +0 -1
  14. data/decidim-admin/app/commands/decidim/admin/destroy_participatory_process_step.rb +3 -1
  15. data/decidim-admin/app/commands/decidim/admin/hide_resource.rb +37 -0
  16. data/decidim-admin/app/commands/decidim/admin/reorder_participatory_process_steps.rb +1 -0
  17. data/decidim-admin/app/commands/decidim/admin/unreport_resource.rb +33 -0
  18. data/decidim-admin/app/commands/decidim/admin/update_participatory_process.rb +4 -2
  19. data/decidim-admin/app/commands/decidim/admin/update_participatory_process_group.rb +57 -0
  20. data/decidim-admin/app/commands/decidim/admin/update_participatory_process_step.rb +1 -2
  21. data/decidim-admin/app/controllers/decidim/admin/application_controller.rb +4 -0
  22. data/decidim-admin/app/controllers/decidim/admin/categories_controller.rb +1 -1
  23. data/decidim-admin/app/controllers/decidim/admin/feature_permissions_controller.rb +2 -2
  24. data/decidim-admin/{lib → app/controllers}/decidim/admin/features/base_controller.rb +0 -0
  25. data/decidim-admin/app/controllers/decidim/admin/moderations_controller.rb +64 -0
  26. data/decidim-admin/app/controllers/decidim/admin/newsletters_controller.rb +1 -1
  27. data/decidim-admin/app/controllers/decidim/admin/participatory_process_groups_controller.rb +86 -0
  28. data/decidim-admin/app/controllers/decidim/admin/participatory_process_publications_controller.rb +1 -1
  29. data/decidim-admin/app/controllers/decidim/admin/participatory_process_step_activations_controller.rb +1 -1
  30. data/decidim-admin/app/controllers/decidim/admin/participatory_process_step_ordering_controller.rb +1 -1
  31. data/decidim-admin/app/controllers/decidim/admin/participatory_process_steps_controller.rb +1 -1
  32. data/decidim-admin/app/controllers/decidim/admin/participatory_process_user_roles_controller.rb +3 -3
  33. data/decidim-admin/app/controllers/decidim/admin/participatory_processes_controller.rb +3 -2
  34. data/decidim-admin/app/forms/decidim/admin/organization_form.rb +1 -0
  35. data/decidim-admin/app/forms/decidim/admin/participatory_process_form.rb +12 -1
  36. data/decidim-admin/app/forms/decidim/admin/participatory_process_group_form.rb +23 -0
  37. data/decidim-admin/app/forms/decidim/admin/participatory_process_step_form.rb +0 -1
  38. data/decidim-admin/app/forms/decidim/admin/participatory_process_user_role_form.rb +5 -1
  39. data/decidim-admin/app/helpers/decidim/admin/application_helper.rb +1 -0
  40. data/decidim-admin/app/helpers/decidim/admin/process_groups_for_select_helper.rb +20 -0
  41. data/decidim-admin/app/helpers/decidim/admin/processes_for_select_helper.rb +22 -0
  42. data/decidim-admin/app/models/decidim/admin/abilities/admin_user.rb +2 -0
  43. data/decidim-admin/app/models/decidim/admin/abilities/participatory_process_admin.rb +4 -0
  44. data/decidim-admin/app/models/decidim/admin/participatory_process_user_role.rb +1 -1
  45. data/decidim-admin/app/queries/decidim/admin/process_admins.rb +43 -0
  46. data/decidim-admin/app/views/decidim/admin/moderations/index.html.erb +65 -0
  47. data/decidim-admin/app/views/decidim/admin/organization/_form.html.erb +4 -0
  48. data/decidim-admin/app/views/decidim/admin/participatory_process_groups/_form.html.erb +17 -0
  49. data/decidim-admin/app/views/decidim/admin/participatory_process_groups/edit.html.erb +13 -0
  50. data/decidim-admin/app/views/decidim/admin/participatory_process_groups/index.html.erb +38 -0
  51. data/decidim-admin/app/views/decidim/admin/participatory_process_groups/new.html.erb +11 -0
  52. data/decidim-admin/app/views/decidim/admin/participatory_process_groups/show.html.erb +23 -0
  53. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/_form.html.erb +0 -4
  54. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/show.html.erb +4 -5
  55. data/decidim-admin/app/views/decidim/admin/participatory_process_user_roles/index.html.erb +27 -24
  56. data/decidim-admin/app/views/decidim/admin/participatory_processes/_form.html.erb +10 -1
  57. data/decidim-admin/app/views/decidim/admin/participatory_processes/show.html.erb +15 -1
  58. data/decidim-admin/app/views/layouts/decidim/admin/_header.html.erb +1 -0
  59. data/decidim-admin/app/views/layouts/decidim/admin/_language_chooser.html.erb +14 -0
  60. data/decidim-admin/app/views/layouts/decidim/admin/_sidebar.html.erb +2 -0
  61. data/decidim-admin/app/views/layouts/decidim/admin/participatory_process.html.erb +5 -0
  62. data/decidim-admin/config/i18n-tasks.yml +3 -1
  63. data/decidim-admin/config/locales/ca.yml +83 -3
  64. data/decidim-admin/config/locales/en.yml +81 -1
  65. data/decidim-admin/config/locales/es.yml +81 -1
  66. data/decidim-admin/config/locales/eu.yml +340 -1
  67. data/decidim-admin/config/locales/fi.yml +464 -0
  68. data/decidim-admin/config/routes.rb +8 -0
  69. data/decidim-admin/db/seeds.rb +1 -1
  70. data/decidim-admin/lib/decidim/admin/engine.rb +1 -0
  71. data/decidim-admin/spec/commands/create_participatory_process_admin_spec.rb +10 -4
  72. data/decidim-admin/spec/commands/create_participatory_process_spec.rb +6 -1
  73. data/decidim-admin/spec/commands/hide_resource_spec.rb +41 -0
  74. data/decidim-admin/spec/commands/unreport_resource_spec.rb +42 -0
  75. data/decidim-admin/spec/commands/update_organization_spec.rb +1 -0
  76. data/decidim-admin/spec/features/admin_invite_spec.rb +1 -0
  77. data/decidim-admin/spec/features/admin_manages_feature_permissions_spec.rb +1 -1
  78. data/decidim-admin/spec/features/admin_manages_organization_admins_spec.rb +1 -1
  79. data/decidim-admin/spec/features/admin_manages_participatory_process_groups_spec.rb +107 -0
  80. data/decidim-admin/spec/features/admin_manages_participatory_processes_spec.rb +5 -0
  81. data/decidim-admin/spec/features/admin_manages_user_groups_spec.rb +11 -4
  82. data/decidim-admin/spec/forms/organization_form_spec.rb +2 -0
  83. data/decidim-admin/spec/forms/participatory_process_group_form_spec.rb +86 -0
  84. data/decidim-admin/spec/forms/participatory_process_step_form_spec.rb +0 -10
  85. data/decidim-admin/spec/forms/participatory_process_user_role_form_spec.rb +4 -0
  86. data/decidim-admin/spec/models/abilities/admin_user_spec.rb +3 -2
  87. data/decidim-admin/spec/models/abilities/participatory_process_admin_spec.rb +7 -0
  88. data/decidim-admin/spec/queries/process_admins_spec.rb +23 -0
  89. data/decidim-admin/spec/shared/manage_process_admins_examples.rb +2 -0
  90. data/decidim-admin/spec/shared/manage_process_steps_examples.rb +0 -10
  91. data/decidim-api/decidim-api.gemspec +1 -1
  92. data/decidim-budgets/app/commands/decidim/budgets/add_line_item.rb +9 -1
  93. data/decidim-budgets/app/controllers/decidim/budgets/admin/projects_controller.rb +13 -1
  94. data/decidim-budgets/app/forms/decidim/budgets/admin/project_form.rb +5 -1
  95. data/decidim-budgets/app/models/decidim/budgets/order.rb +3 -0
  96. data/decidim-budgets/app/models/decidim/budgets/project.rb +9 -1
  97. data/decidim-budgets/app/services/decidim/budgets/project_search.rb +0 -5
  98. data/decidim-budgets/app/views/decidim/budgets/admin/projects/_form.html.erb +5 -3
  99. data/decidim-budgets/app/views/decidim/budgets/admin/projects/index.html.erb +9 -0
  100. data/decidim-budgets/app/views/decidim/budgets/line_items/update_budget.js.erb +1 -0
  101. data/decidim-budgets/app/views/decidim/budgets/projects/_filters.html.erb +2 -2
  102. data/decidim-budgets/app/views/decidim/budgets/projects/_filters_small_view.html.erb +18 -0
  103. data/decidim-budgets/app/views/decidim/budgets/projects/_project.html.erb +17 -2
  104. data/decidim-budgets/app/views/decidim/budgets/projects/_project_budget_button.html.erb +2 -2
  105. data/decidim-budgets/app/views/decidim/budgets/projects/_tags.html.erb +1 -1
  106. data/decidim-budgets/app/views/decidim/budgets/projects/index.html.erb +2 -1
  107. data/decidim-budgets/app/views/decidim/budgets/projects/show.html.erb +7 -1
  108. data/decidim-budgets/config/i18n-tasks.yml +1 -0
  109. data/decidim-budgets/config/locales/ca.yml +18 -3
  110. data/decidim-budgets/config/locales/en.yml +15 -0
  111. data/decidim-budgets/config/locales/es.yml +17 -2
  112. data/decidim-budgets/config/locales/eu.yml +97 -1
  113. data/decidim-budgets/config/locales/fi.yml +123 -0
  114. data/decidim-budgets/db/migrate/20170215132708_add_reference_to_projects.rb +7 -0
  115. data/decidim-budgets/lib/decidim/budgets/feature.rb +4 -2
  116. data/decidim-budgets/lib/decidim/budgets/seeds/Exampledocument.pdf +0 -0
  117. data/decidim-budgets/lib/decidim/budgets/seeds/city.jpeg +0 -0
  118. data/decidim-budgets/lib/decidim/budgets/test/factories.rb +21 -1
  119. data/decidim-budgets/spec/commands/add_line_item_spec.rb +10 -1
  120. data/decidim-budgets/spec/features/comments_spec.rb +10 -0
  121. data/decidim-budgets/spec/features/orders_spec.rb +47 -3
  122. data/decidim-budgets/spec/models/project_spec.rb +16 -1
  123. data/decidim-budgets/spec/services/project_search_spec.rb +9 -0
  124. data/decidim-budgets/spec/shared/admin_shared_context.rb +1 -1
  125. data/decidim-budgets/spec/shared/manage_projects_examples.rb +22 -0
  126. data/decidim-comments/app/assets/javascripts/decidim/comments/bundle.js +0 -0
  127. data/decidim-comments/app/commands/decidim/comments/create_comment.rb +9 -1
  128. data/decidim-comments/app/frontend/application/icon.component.jsx +1 -1
  129. data/decidim-comments/app/frontend/comments/add_comment_form.component.jsx +11 -10
  130. data/decidim-comments/app/frontend/comments/add_comment_form.component.test.jsx +5 -5
  131. data/decidim-comments/app/frontend/comments/comment.component.jsx +91 -1
  132. data/decidim-comments/app/frontend/comments/comment.component.test.jsx +18 -0
  133. data/decidim-comments/app/frontend/comments/comment_data.fragment.graphql +2 -0
  134. data/decidim-comments/app/frontend/comments/comment_order_selector.component.jsx +4 -5
  135. data/decidim-comments/app/frontend/comments/comments.query.graphql +1 -0
  136. data/decidim-comments/app/mailers/decidim/comments/comment_notification_mailer.rb +8 -0
  137. data/decidim-comments/app/models/decidim/comments/abilities/admin_user.rb +25 -0
  138. data/decidim-comments/app/models/decidim/comments/abilities/process_admin_user.rb +33 -0
  139. data/decidim-comments/app/models/decidim/comments/comment.rb +7 -1
  140. data/decidim-comments/app/models/decidim/comments/comment_vote.rb +3 -1
  141. data/decidim-comments/app/queries/decidim/comments/sorted_comments.rb +1 -0
  142. data/decidim-comments/app/views/decidim/comments/comment_notification_mailer/comment_created.html.erb +1 -1
  143. data/decidim-comments/app/views/decidim/comments/comment_notification_mailer/reply_created.html.erb +1 -1
  144. data/decidim-comments/config/locales/ca.yml +11 -0
  145. data/decidim-comments/config/locales/en.yml +12 -2
  146. data/decidim-comments/config/locales/es.yml +11 -0
  147. data/decidim-comments/config/locales/eu.yml +38 -1
  148. data/decidim-comments/config/locales/fi.yml +66 -0
  149. data/decidim-comments/lib/decidim/comments.rb +2 -0
  150. data/decidim-comments/lib/decidim/comments/admin.rb +9 -0
  151. data/decidim-comments/lib/decidim/comments/admin_engine.rb +22 -0
  152. data/decidim-comments/lib/decidim/comments/api/comment_type.rb +12 -0
  153. data/decidim-comments/lib/decidim/comments/commentable.rb +0 -2
  154. data/decidim-comments/lib/decidim/comments/engine.rb +1 -0
  155. data/decidim-comments/lib/decidim/comments/test/factories.rb +3 -0
  156. data/decidim-comments/spec/commands/create_comment_spec.rb +11 -0
  157. data/decidim-comments/spec/features/admin_manages_comments_spec.rb +23 -0
  158. data/decidim-comments/spec/features/comments_spec.rb +5 -173
  159. data/decidim-comments/spec/features/process_admin_manages_comments_spec.rb +24 -0
  160. data/decidim-comments/spec/features/report_comment_spec.rb +20 -0
  161. data/decidim-comments/spec/models/abilities/admin_user_spec.rb +20 -0
  162. data/decidim-comments/spec/models/abilities/process_admin_user_spec.rb +21 -0
  163. data/decidim-comments/spec/models/comment_spec.rb +1 -0
  164. data/decidim-comments/spec/queries/sorted_comments_spec.rb +11 -0
  165. data/decidim-comments/spec/shared/admin_shared_context.rb +11 -0
  166. data/decidim-comments/spec/types/comment_type_spec.rb +19 -0
  167. data/decidim-dev/config/locales/ca.yml +1 -1
  168. data/decidim-dev/config/locales/en.yml +1 -1
  169. data/decidim-dev/config/locales/es.yml +1 -1
  170. data/decidim-dev/config/locales/eu.yml +1 -1
  171. data/decidim-dev/config/locales/fi.yml +5 -0
  172. data/decidim-dev/decidim-dev.gemspec +3 -1
  173. data/decidim-dev/lib/decidim/dev/test/base_spec_helper.rb +1 -28
  174. data/decidim-dev/lib/decidim/dev/test/rspec_support/feature.rb +11 -0
  175. data/{decidim-meetings/spec/support → decidim-dev/lib/decidim/dev/test/rspec_support}/geocoder.rb +5 -1
  176. data/decidim-dev/lib/decidim/dev/test/rspec_support/html_matchers.rb +6 -0
  177. data/decidim-dev/lib/decidim/dev/test/rspec_support/i18n.rb +3 -0
  178. data/decidim-dev/lib/decidim/dev/test/rspec_support/webmock.rb +2 -0
  179. data/decidim-dev/lib/decidim/dev/test/spec_helper.rb +37 -0
  180. data/decidim-dev/lib/generators/decidim/dummy_generator.rb +5 -0
  181. data/decidim-dev/lib/generators/decidim/templates/autoprefixer.yml +8 -0
  182. data/decidim-dev/lib/generators/decidim/templates/autoprefixer_initializer.rb +16 -0
  183. data/decidim-meetings/app/commands/decidim/meetings/admin/create_meeting.rb +6 -17
  184. data/decidim-meetings/app/commands/decidim/meetings/admin/update_meeting.rb +6 -7
  185. data/decidim-meetings/app/controllers/decidim/meetings/application_controller.rb +1 -0
  186. data/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb +14 -9
  187. data/decidim-meetings/app/forms/decidim/meetings/admin/meeting_form.rb +12 -1
  188. data/decidim-meetings/app/helpers/decidim/meetings/admin/application_helper.rb +1 -1
  189. data/decidim-meetings/app/helpers/decidim/meetings/application_helper.rb +2 -1
  190. data/decidim-meetings/app/helpers/decidim/meetings/map_helper.rb +10 -32
  191. data/decidim-meetings/app/models/decidim/meetings/meeting.rb +2 -1
  192. data/decidim-meetings/app/services/decidim/meetings/meeting_search.rb +0 -5
  193. data/decidim-meetings/app/views/decidim/meetings/admin/meetings/_form.html.erb +5 -3
  194. data/decidim-meetings/app/views/decidim/meetings/meetings/_filters.html.erb +5 -3
  195. data/decidim-meetings/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +1 -1
  196. data/decidim-meetings/app/views/decidim/meetings/meetings/_meetings.html.erb +11 -1
  197. data/decidim-meetings/app/views/decidim/meetings/meetings/_tags.html.erb +1 -1
  198. data/decidim-meetings/app/views/decidim/meetings/meetings/index.html.erb +27 -32
  199. data/decidim-meetings/app/views/decidim/meetings/meetings/index.js.erb +2 -2
  200. data/decidim-meetings/app/views/decidim/meetings/meetings/show.html.erb +2 -15
  201. data/decidim-meetings/config/i18n-tasks.yml +1 -1
  202. data/decidim-meetings/config/locales/ca.yml +18 -3
  203. data/decidim-meetings/config/locales/en.yml +20 -3
  204. data/decidim-meetings/config/locales/es.yml +18 -3
  205. data/decidim-meetings/config/locales/eu.yml +75 -1
  206. data/decidim-meetings/config/locales/fi.yml +98 -0
  207. data/decidim-meetings/db/migrate/20170215132546_add_reference_to_meetings.rb +7 -0
  208. data/decidim-meetings/decidim-meetings.gemspec +0 -2
  209. data/decidim-meetings/lib/decidim/meetings/admin_engine.rb +0 -26
  210. data/decidim-meetings/lib/decidim/meetings/list_engine.rb +1 -9
  211. data/decidim-meetings/spec/commands/create_meeting_spec.rb +6 -14
  212. data/decidim-meetings/spec/commands/update_meeting_spec.rb +10 -29
  213. data/decidim-meetings/spec/features/explore_meetings_spec.rb +37 -13
  214. data/decidim-meetings/spec/forms/meeting_form_spec.rb +15 -1
  215. data/decidim-meetings/spec/models/meeting_spec.rb +1 -0
  216. data/decidim-meetings/spec/services/meeting_search_spec.rb +9 -0
  217. data/decidim-meetings/spec/shared/admin_shared_context.rb +1 -1
  218. data/decidim-meetings/spec/shared/manage_meetings_examples.rb +97 -1
  219. data/decidim-meetings/spec/spec_helper.rb +0 -5
  220. data/decidim-pages/app/commands/decidim/pages/admin/update_page.rb +1 -4
  221. data/decidim-pages/app/commands/decidim/pages/create_page.rb +1 -4
  222. data/decidim-pages/app/forms/decidim/pages/admin/page_form.rb +0 -3
  223. data/decidim-pages/app/models/decidim/pages/page.rb +8 -12
  224. data/decidim-pages/app/views/decidim/pages/admin/pages/_form.html.erb +0 -1
  225. data/decidim-pages/app/views/decidim/pages/application/show.html.erb +0 -1
  226. data/decidim-pages/config/locales/ca.yml +0 -1
  227. data/decidim-pages/config/locales/en.yml +0 -1
  228. data/decidim-pages/config/locales/es.yml +0 -1
  229. data/decidim-pages/config/locales/eu.yml +14 -1
  230. data/decidim-pages/config/locales/fi.yml +22 -0
  231. data/decidim-pages/db/migrate/20170220091402_remove_page_feature_titles.rb +5 -0
  232. data/decidim-pages/lib/decidim/pages/engine.rb +1 -0
  233. data/decidim-pages/lib/decidim/pages/feature.rb +4 -1
  234. data/decidim-pages/spec/commands/create_page_spec.rb +1 -2
  235. data/decidim-pages/spec/commands/update_page_spec.rb +0 -1
  236. data/decidim-pages/spec/factories.rb +6 -1
  237. data/decidim-pages/spec/features/admin_spec.rb +1 -17
  238. data/decidim-pages/spec/features/comments_spec.rb +10 -0
  239. data/decidim-pages/spec/features/page_show_spec.rb +1 -10
  240. data/decidim-pages/spec/forms/page_form_spec.rb +0 -21
  241. data/decidim-pages/spec/models/page_spec.rb +2 -4
  242. data/decidim-proposals/app/commands/decidim/proposals/admin/create_proposal.rb +4 -1
  243. data/decidim-proposals/app/commands/decidim/proposals/create_proposal.rb +4 -1
  244. data/decidim-proposals/app/controllers/decidim/proposals/admin/proposals_controller.rb +4 -0
  245. data/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb +12 -6
  246. data/decidim-proposals/app/forms/decidim/proposals/admin/proposal_form.rb +13 -2
  247. data/decidim-proposals/app/forms/decidim/proposals/proposal_form.rb +13 -2
  248. data/decidim-proposals/app/helpers/decidim/proposals/application_helper.rb +3 -0
  249. data/decidim-proposals/app/helpers/decidim/proposals/map_helper.rb +19 -0
  250. data/decidim-proposals/app/helpers/decidim/proposals/proposal_order_helper.rb +16 -0
  251. data/decidim-proposals/app/models/decidim/proposals/abilities/admin_user.rb +2 -0
  252. data/decidim-proposals/app/models/decidim/proposals/abilities/current_user.rb +3 -0
  253. data/decidim-proposals/app/models/decidim/proposals/abilities/process_admin_user.rb +2 -1
  254. data/decidim-proposals/app/models/decidim/proposals/proposal.rb +12 -3
  255. data/decidim-proposals/app/services/decidim/proposals/proposal_search.rb +0 -5
  256. data/decidim-proposals/app/views/decidim/proposals/admin/proposal_answers/edit.html.erb +1 -1
  257. data/decidim-proposals/app/views/decidim/proposals/admin/proposals/_form.html.erb +8 -2
  258. data/decidim-proposals/app/views/decidim/proposals/admin/proposals/index.html.erb +12 -14
  259. data/decidim-proposals/app/views/decidim/proposals/proposals/_filters.html.erb +2 -2
  260. data/decidim-proposals/app/views/decidim/proposals/proposals/_filters_small_view.html.erb +1 -1
  261. data/decidim-proposals/app/views/decidim/proposals/proposals/_proposals.html.erb +1 -1
  262. data/decidim-proposals/app/views/decidim/proposals/proposals/_tags.html.erb +1 -1
  263. data/decidim-proposals/app/views/decidim/proposals/proposals/index.html.erb +27 -0
  264. data/decidim-proposals/app/views/decidim/proposals/proposals/new.html.erb +8 -2
  265. data/decidim-proposals/app/views/decidim/proposals/proposals/show.html.erb +18 -1
  266. data/decidim-proposals/config/i18n-tasks.yml +3 -1
  267. data/decidim-proposals/config/locales/ca.yml +11 -8
  268. data/decidim-proposals/config/locales/en.yml +9 -6
  269. data/decidim-proposals/config/locales/es.yml +14 -11
  270. data/decidim-proposals/config/locales/eu.yml +119 -1
  271. data/decidim-proposals/config/locales/fi.yml +143 -0
  272. data/decidim-proposals/db/migrate/20170215113152_create_proposal_reports.rb +14 -0
  273. data/decidim-proposals/db/migrate/20170215131720_add_report_count_to_proposals.rb +5 -0
  274. data/decidim-proposals/db/migrate/20170215132030_add_reference_to_proposals.rb +7 -0
  275. data/decidim-proposals/db/migrate/20170220152416_add_hidden_at_to_proposals.rb +5 -0
  276. data/decidim-proposals/db/migrate/20170228105156_add_geolocalization_fields_to_proposals.rb +7 -0
  277. data/decidim-proposals/db/migrate/20170307085300_migrate_proposal_reports_data_to_reports.rb +26 -0
  278. data/decidim-proposals/decidim-proposals.gemspec +1 -1
  279. data/decidim-proposals/lib/decidim/proposals/feature.rb +4 -3
  280. data/decidim-proposals/lib/decidim/proposals/test/factories.rb +8 -0
  281. data/decidim-proposals/spec/features/admin_manages_proposals_spec.rb +3 -0
  282. data/decidim-proposals/spec/features/comments_spec.rb +11 -0
  283. data/decidim-proposals/spec/features/process_admin_manages_proposals_spec.rb +3 -0
  284. data/decidim-proposals/spec/features/proposals_spec.rb +98 -15
  285. data/decidim-proposals/spec/features/report_proposal_spec.rb +19 -0
  286. data/decidim-proposals/spec/helpers/proposal_order_helper_spec.rb +30 -0
  287. data/decidim-proposals/spec/models/decidim/proposals/proposal_spec.rb +2 -0
  288. data/decidim-proposals/spec/services/decidim/proposals/proposal_search_spec.rb +9 -0
  289. data/decidim-proposals/spec/shared/create_proposal_examples.rb +29 -2
  290. data/decidim-proposals/spec/shared/manage_proposals_examples.rb +95 -26
  291. data/decidim-proposals/spec/shared/proposal_form_examples.rb +29 -1
  292. data/decidim-results/app/forms/decidim/results/admin/result_form.rb +9 -1
  293. data/decidim-results/app/models/decidim/results/result.rb +2 -1
  294. data/decidim-results/app/services/decidim/results/result_search.rb +0 -5
  295. data/decidim-results/app/views/decidim/results/admin/results/_form.html.erb +5 -3
  296. data/decidim-results/app/views/decidim/results/results/_filters.html.erb +2 -2
  297. data/decidim-results/app/views/decidim/results/results/_filters_small_view.html.erb +18 -0
  298. data/decidim-results/app/views/decidim/results/results/_tags.html.erb +1 -1
  299. data/decidim-results/app/views/decidim/results/results/index.html.erb +1 -0
  300. data/decidim-results/app/views/decidim/results/results/show.html.erb +1 -0
  301. data/decidim-results/config/i18n-tasks.yml +2 -0
  302. data/decidim-results/config/locales/ca.yml +15 -2
  303. data/decidim-results/config/locales/en.yml +15 -2
  304. data/decidim-results/config/locales/es.yml +15 -2
  305. data/decidim-results/config/locales/eu.yml +57 -1
  306. data/decidim-results/config/locales/fi.yml +77 -0
  307. data/decidim-results/db/migrate/20170215132624_add_reference_to_results.rb +7 -0
  308. data/decidim-results/lib/decidim/results/test/factories.rb +6 -0
  309. data/decidim-results/spec/features/comments_spec.rb +10 -0
  310. data/decidim-results/spec/features/explore_results_spec.rb +27 -0
  311. data/decidim-results/spec/models/result_spec.rb +1 -0
  312. data/decidim-results/spec/services/result_search_spec.rb +9 -0
  313. data/decidim-results/spec/shared/admin_shared_context.rb +1 -1
  314. data/decidim-system/README.md +45 -8
  315. data/decidim-system/app/commands/decidim/system/register_organization.rb +3 -0
  316. data/decidim-system/app/commands/decidim/system/update_organization.rb +2 -0
  317. data/decidim-system/app/controllers/decidim/system/application_controller.rb +2 -0
  318. data/decidim-system/app/forms/decidim/system/register_organization_form.rb +1 -0
  319. data/decidim-system/app/forms/decidim/system/update_organization_form.rb +18 -0
  320. data/decidim-system/app/views/decidim/system/organizations/edit.html.erb +10 -0
  321. data/decidim-system/app/views/decidim/system/organizations/new.html.erb +33 -19
  322. data/decidim-system/config/locales/ca.yml +3 -0
  323. data/decidim-system/config/locales/en.yml +3 -0
  324. data/decidim-system/config/locales/es.yml +3 -0
  325. data/decidim-system/config/locales/eu.yml +3 -0
  326. data/decidim-system/config/locales/fi.yml +68 -0
  327. data/decidim-system/db/seeds.rb +1 -1
  328. data/decidim-system/decidim-system.gemspec +1 -1
  329. data/decidim-system/lib/decidim/system/engine.rb +1 -0
  330. data/decidim-system/spec/commands/decidim/system/register_organization_spec.rb +3 -0
  331. data/decidim-system/spec/commands/decidim/system/update_organization_spec.rb +53 -0
  332. data/decidim-system/spec/features/organizations_spec.rb +5 -0
  333. data/docs/analytics.md +23 -0
  334. data/docs/how_to_create_a_plugin.md +3 -1
  335. data/lib/generators/decidim/app_generator.rb +4 -0
  336. data/lib/generators/decidim/demo_generator.rb +1 -1
  337. data/lib/generators/decidim/install_generator.rb +8 -1
  338. data/lib/generators/decidim/review_app_generator.rb +53 -0
  339. data/lib/generators/decidim/templates/Gemfile.erb +1 -5
  340. data/lib/generators/decidim/templates/app.json.erb +1 -1
  341. data/lib/generators/decidim/templates/carrierwave.rb +2 -2
  342. data/lib/generators/decidim/templates/decidim_controller.rb.erb +5 -0
  343. data/lib/generators/decidim/templates/initializer.rb +4 -0
  344. data/package.json +4 -4
  345. data/yarn.lock +106 -165
  346. metadata +100 -54
  347. data/decidim-meetings/app/assets/config/decidim_meetings_manifest.js +0 -2
  348. data/decidim-meetings/app/assets/javascripts/decidim/meetings/map.js.es6.erb +0 -97
  349. data/decidim-meetings/app/assets/stylesheets/decidim/meetings/map.css +0 -3
  350. data/decidim-meetings/app/services/decidim/meetings/static_map_generator.rb +0 -50
  351. data/decidim-meetings/app/views/decidim/meetings/meetings/_address_details.html.erb +0 -5
  352. data/decidim-meetings/spec/controllers/meetings_controller_spec.rb +0 -41
  353. data/decidim-meetings/spec/services/static_map_generator_spec.rb +0 -33
  354. data/decidim-meetings/vendor/assets/javascripts/leaflet-svg-icon.js +0 -179
  355. data/decidim-meetings/vendor/assets/javascripts/leaflet-tilelayer-here.js +0 -166
  356. data/decidim-meetings/vendor/assets/javascripts/leaflet.js +0 -9
  357. data/decidim-meetings/vendor/assets/javascripts/leaflet.markercluster.js +0 -7
  358. data/decidim-meetings/vendor/assets/stylesheets/MarkerCluster.Default.css +0 -60
  359. data/decidim-meetings/vendor/assets/stylesheets/MarkerCluster.css +0 -14
  360. data/decidim-meetings/vendor/assets/stylesheets/leaflet.css +0 -624
@@ -0,0 +1,14 @@
1
+ class CreateProposalReports < ActiveRecord::Migration[5.0]
2
+ def change
3
+ create_table :decidim_proposals_proposal_reports do |t|
4
+ t.references :decidim_proposal, null: false, index: { name: "decidim_proposals_proposal_result_proposal" }
5
+ t.references :decidim_user, null: false, index: { name: "decidim_proposals_proposal_result_user" }
6
+ t.string :reason, null: false
7
+ t.text :details
8
+
9
+ t.timestamps
10
+ end
11
+
12
+ add_index :decidim_proposals_proposal_reports, [:decidim_proposal_id, :decidim_user_id], unique: true, name: "decidim_proposals_proposal_report_proposal_user_unique"
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ class AddReportCountToProposals < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :decidim_proposals_proposals, :report_count, :integer, default: 0
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class AddReferenceToProposals < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :decidim_proposals_proposals, :reference, :string
4
+ Decidim::Proposals::Proposal.find_each(&:save)
5
+ change_column_null :decidim_proposals_proposals, :reference, false
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ class AddHiddenAtToProposals < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :decidim_proposals_proposals, :hidden_at, :datetime
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class AddGeolocalizationFieldsToProposals < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :decidim_proposals_proposals, :address, :text
4
+ add_column :decidim_proposals_proposals, :latitude, :float
5
+ add_column :decidim_proposals_proposals, :longitude, :float
6
+ end
7
+ end
@@ -0,0 +1,26 @@
1
+ class MigrateProposalReportsDataToReports < ActiveRecord::Migration[5.0]
2
+ class Decidim::Proposals::ProposalReport < ApplicationRecord
3
+ belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User"
4
+ belongs_to :proposal, foreign_key: "decidim_proposal_id", class_name: "Decidim::Proposals::Proposal"
5
+ end
6
+
7
+ def change
8
+ Decidim::Proposals::ProposalReport.all.each do |proposal_report|
9
+ moderation = Decidim::Moderation.find_or_create_by!({
10
+ reportable: proposal_report.proposal,
11
+ participatory_process: proposal_report.proposal.feature.participatory_process
12
+ })
13
+ Decidim::Report.create!({
14
+ moderation: moderation,
15
+ user: proposal_report.user,
16
+ reason: proposal_report.reason,
17
+ details: proposal_report.details
18
+ })
19
+ moderation.update_attributes!(report_count: moderation.report_count + 1)
20
+ end
21
+
22
+ drop_table :decidim_proposals_proposal_reports
23
+ remove_column :decidim_proposals_proposals, :report_count
24
+ remove_column :decidim_proposals_proposals, :hidden_at
25
+ end
26
+ end
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_dependency "decidim-comments", Decidim.version
18
18
  s.add_dependency "rectify", "~> 0.8.0"
19
19
  s.add_dependency "kaminari", "~> 1.0.1"
20
- s.add_dependency 'social-share-button', "~> 0.8.8"
20
+ s.add_dependency 'social-share-button', "~> 0.9.0"
21
21
 
22
22
  s.add_development_dependency "decidim-dev", Decidim.version
23
23
  s.add_development_dependency "decidim-meetings", Decidim.version
@@ -19,8 +19,8 @@ Decidim.register_feature(:proposals) do |feature|
19
19
  settings.attribute :vote_limit, type: :integer, default: 0
20
20
  settings.attribute :proposal_answering_enabled, type: :boolean, default: true
21
21
  settings.attribute :official_proposals_enabled, type: :boolean, default: true
22
- settings.attribute :scoped_proposals_enabled, type: :boolean, default: true
23
22
  settings.attribute :comments_enabled, type: :boolean, default: true
23
+ settings.attribute :geocoding_enabled, type: :boolean, default: false
24
24
  end
25
25
 
26
26
  feature.settings(:step) do |settings|
@@ -53,7 +53,8 @@ Decidim.register_feature(:proposals) do |feature|
53
53
  }
54
54
  )
55
55
  categories = feature.participatory_process.categories
56
- scopes = feature.organization.scopes
56
+ # So that we have some with global scope
57
+ scopes = feature.organization.scopes + [nil]
57
58
 
58
59
  20.times do |n|
59
60
  proposal = Decidim::Proposals::Proposal.create!(
@@ -77,7 +78,7 @@ Decidim.register_feature(:proposals) do |feature|
77
78
  end
78
79
 
79
80
  rand(3).times do |m|
80
- email = "vote-author-#{process.id}-#{n}-#{m}@decidim.org"
81
+ email = "vote-author-#{process.id}-#{n}-#{m}@example.org"
81
82
  name = "#{Faker::Name.name} #{process.id} #{n} #{m}"
82
83
 
83
84
  author = Decidim::User.create!(email: email,
@@ -50,6 +50,14 @@ FactoryGirl.define do
50
50
  }
51
51
  end
52
52
  end
53
+
54
+ trait :with_geocoding_enabled do
55
+ settings do
56
+ {
57
+ geocoding_enabled: true
58
+ }
59
+ end
60
+ end
53
61
  end
54
62
 
55
63
  factory :proposal, class: Decidim::Proposals::Proposal do
@@ -5,9 +5,12 @@ require "spec_helper"
5
5
  describe "Admin manages proposals", type: :feature do
6
6
  include_context "admin"
7
7
  it_behaves_like "manage proposals"
8
+ it_behaves_like "manage moderations"
8
9
  include_context "feature"
9
10
  let(:manifest_name) { "proposals" }
10
11
 
12
+ let!(:reportables) { create_list(:proposal, 3, feature: current_feature) }
13
+
11
14
  before do
12
15
  switch_to_host(organization.host)
13
16
  login_as user, scope: :user
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ require "spec_helper"
3
+
4
+ describe "Comments", type: :feature, perform_enqueued: true do
5
+ let!(:feature) { create(:proposal_feature, organization: organization) }
6
+ let!(:author) { create(:user, :confirmed, organization: organization) }
7
+ let!(:commentable) { create(:proposal, feature: feature, author: author) }
8
+
9
+ let(:resource_path) { decidim_proposals.proposal_path(commentable, feature_id: feature, participatory_process_id: feature.participatory_process) }
10
+ include_examples "comments"
11
+ end
@@ -6,9 +6,12 @@ describe "Process admin manages proposals", type: :feature do
6
6
  include_context "admin"
7
7
  let(:user) { process_admin }
8
8
  it_behaves_like "manage proposals"
9
+ it_behaves_like "manage moderations"
9
10
  include_context "feature"
10
11
  let(:manifest_name) { "proposals" }
11
12
 
13
+ let!(:reportables) { create_list(:proposal, 3, feature: current_feature) }
14
+
12
15
  before do
13
16
  switch_to_host(organization.host)
14
17
  login_as user, scope: :user
@@ -3,6 +3,11 @@ require "spec_helper"
3
3
 
4
4
  describe "Proposals", type: :feature do
5
5
  include_context "feature"
6
+ let!(:feature) do
7
+ create(:proposal_feature,
8
+ manifest: manifest,
9
+ participatory_process: participatory_process)
10
+ end
6
11
  let(:manifest_name) { "proposals" }
7
12
 
8
13
  let!(:proposals) { create_list(:proposal, 3, feature: feature) }
@@ -10,6 +15,16 @@ describe "Proposals", type: :feature do
10
15
  let!(:scope) { create :scope, organization: organization }
11
16
  let!(:user) { create :user, :confirmed, organization: organization }
12
17
 
18
+ let(:address) { "Carrer Pare Llaurador 113, baixos, 08224 Terrassa" }
19
+ let(:latitude) { 40.1234 }
20
+ let(:longitude) { 2.1234 }
21
+
22
+ before do
23
+ Geocoder::Lookup::Test.add_stub(address, [
24
+ { 'latitude' => latitude, 'longitude' => longitude }
25
+ ])
26
+ end
27
+
13
28
  context "creating a new proposal" do
14
29
  context "when the user is logged in" do
15
30
  before do
@@ -24,12 +39,12 @@ describe "Proposals", type: :feature do
24
39
  participatory_process: participatory_process)
25
40
  end
26
41
 
27
- context "when scoped_proposals setting is enabled" do
42
+ context "when process is not related to any scope" do
28
43
  before do
29
- feature.update_attributes(settings: { scoped_proposals_enabled: true})
44
+ participatory_process.update_attributes(scope: nil)
30
45
  end
31
46
 
32
- it "cannot be related to a scope" do
47
+ it "can be related to a scope" do
33
48
  visit_feature
34
49
 
35
50
  click_link "New proposal"
@@ -40,9 +55,9 @@ describe "Proposals", type: :feature do
40
55
  end
41
56
  end
42
57
 
43
- context "when scoped_proposals setting is not enabled" do
58
+ context "when process is related to any scope" do
44
59
  before do
45
- feature.update_attributes(settings: { scoped_proposals_enabled: false})
60
+ participatory_process.update_attributes(scope: scope)
46
61
  end
47
62
 
48
63
  it "cannot be related to a scope" do
@@ -78,6 +93,40 @@ describe "Proposals", type: :feature do
78
93
  expect(page).to have_content(user.name)
79
94
  end
80
95
 
96
+ context "when geocoding is enabled" do
97
+ let!(:feature) do
98
+ create(:proposal_feature,
99
+ :with_creation_enabled,
100
+ :with_geocoding_enabled,
101
+ manifest: manifest,
102
+ participatory_process: participatory_process)
103
+ end
104
+
105
+ it "creates a new proposal" do
106
+ visit_feature
107
+
108
+ click_link "New proposal"
109
+
110
+ within ".new_proposal" do
111
+ fill_in :proposal_title, with: "Oriol for president"
112
+ fill_in :proposal_body, with: "He will solve everything"
113
+ fill_in :proposal_address, with: address
114
+ select category.name["en"], from: :proposal_category_id
115
+ select scope.name, from: :proposal_scope_id
116
+
117
+ find("*[type=submit]").click
118
+ end
119
+
120
+ expect(page).to have_content("successfully")
121
+ expect(page).to have_content("Oriol for president")
122
+ expect(page).to have_content("He will solve everything")
123
+ expect(page).to have_content(address)
124
+ expect(page).to have_content(category.name["en"])
125
+ expect(page).to have_content(scope.name)
126
+ expect(page).to have_content(user.name)
127
+ end
128
+ end
129
+
81
130
  context "when the user has verified organizations" do
82
131
  let(:user_group) { create(:user_group, :verified) }
83
132
 
@@ -107,6 +156,41 @@ describe "Proposals", type: :feature do
107
156
  expect(page).to have_content(scope.name)
108
157
  expect(page).to have_content(user_group.name)
109
158
  end
159
+
160
+ context "when geocoding is enabled" do
161
+ let!(:feature) do
162
+ create(:proposal_feature,
163
+ :with_creation_enabled,
164
+ :with_geocoding_enabled,
165
+ manifest: manifest,
166
+ participatory_process: participatory_process)
167
+ end
168
+
169
+ it "creates a new proposal as a user group" do
170
+ visit_feature
171
+
172
+ click_link "New proposal"
173
+
174
+ within ".new_proposal" do
175
+ fill_in :proposal_title, with: "Oriol for president"
176
+ fill_in :proposal_body, with: "He will solve everything"
177
+ fill_in :proposal_address, with: address
178
+ select category.name["en"], from: :proposal_category_id
179
+ select scope.name, from: :proposal_scope_id
180
+ select user_group.name, from: :proposal_user_group_id
181
+
182
+ find("*[type=submit]").click
183
+ end
184
+
185
+ expect(page).to have_content("successfully")
186
+ expect(page).to have_content("Oriol for president")
187
+ expect(page).to have_content("He will solve everything")
188
+ expect(page).to have_content(address)
189
+ expect(page).to have_content(category.name["en"])
190
+ expect(page).to have_content(scope.name)
191
+ expect(page).to have_content(user_group.name)
192
+ end
193
+ end
110
194
  end
111
195
 
112
196
  context "when the user isn't authorized" do
@@ -142,13 +226,14 @@ describe "Proposals", type: :feature do
142
226
  expect(page).to have_content(proposal.title)
143
227
  expect(page).to have_content(proposal.body)
144
228
  expect(page).to have_content(proposal.author.name)
229
+ expect(page).to have_content(proposal.reference)
145
230
  end
146
231
 
147
- context "when scoped_proposals setting is enabled" do
232
+ context "when process is not related to any scope" do
148
233
  let!(:proposal) { create(:proposal, feature: feature, scope: scope) }
149
234
 
150
235
  before do
151
- feature.update_attributes(settings: { scoped_proposals_enabled: true } )
236
+ participatory_process.update_attributes(scope: nil)
152
237
  end
153
238
 
154
239
  it "can be filtered by scope" do
@@ -158,14 +243,14 @@ describe "Proposals", type: :feature do
158
243
  end
159
244
  end
160
245
 
161
- context "when scoped_proposals setting is not enabled" do
246
+ context "when process is related to a scope" do
162
247
  let!(:proposal) { create(:proposal, feature: feature, scope: scope) }
163
248
 
164
249
  before do
165
- feature.update_attributes(settings: { scoped_proposals_enabled: false } )
250
+ participatory_process.update_attributes(scope: scope)
166
251
  end
167
252
 
168
- it "cannot be filtered by scope" do
253
+ it "does not show the scope name" do
169
254
  visit_feature
170
255
  click_link proposal.title
171
256
  expect(page).not_to have_content(scope.name)
@@ -309,9 +394,7 @@ describe "Proposals", type: :feature do
309
394
 
310
395
  find(".pagination-next a").click
311
396
 
312
- within ".pagination .current" do
313
- expect(page).to have_content("2")
314
- end
397
+ expect(page).to have_selector(".pagination .current", text: "2")
315
398
 
316
399
  expect(page).to have_css(".card--proposal", count: 8)
317
400
  end
@@ -387,9 +470,9 @@ describe "Proposals", type: :feature do
387
470
  end
388
471
  end
389
472
 
390
- context "when scoped_proposals setting is not enabled" do
473
+ context "when process is related to a scope" do
391
474
  before do
392
- feature.update_attributes(settings: { scoped_proposals_enabled: false } )
475
+ participatory_process.update_attributes(scope: scope)
393
476
  end
394
477
 
395
478
  it "cannot be filtered by scope" do
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+ require "spec_helper"
3
+
4
+ describe "Report Proposal", type: :feature do
5
+ include_context "feature"
6
+ include_examples "reports"
7
+
8
+ let(:manifest_name) { "proposals" }
9
+ let!(:proposals) { create_list(:proposal, 3, feature: feature) }
10
+ let(:reportable) { proposals.first }
11
+ let(:reportable_path) { decidim_proposals.proposal_path(reportable, feature_id: feature, participatory_process_id: feature.participatory_process) }
12
+ let!(:user) { create :user, :confirmed, organization: organization }
13
+
14
+ let!(:feature) do
15
+ create(:proposal_feature,
16
+ manifest: manifest,
17
+ participatory_process: participatory_process)
18
+ end
19
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+ require "spec_helper"
3
+
4
+ module Decidim
5
+ module Proposals
6
+ describe ProposalOrderHelper do
7
+ before do
8
+ allow(helper).to receive(:current_settings).and_return(current_settings)
9
+ end
10
+
11
+ describe "#order_fields" do
12
+ context "with votes enabled" do
13
+ let(:current_settings) { double(:current_settings, { votes_enabled?: true }) }
14
+
15
+ it "shows most_voted option to sort" do
16
+ expect(helper.order_fields).to include(:most_voted)
17
+ end
18
+ end
19
+
20
+ context "with votes disabled" do
21
+ let(:current_settings) { double(:current_settings, { votes_enabled?: false }) }
22
+
23
+ it "doesn't show most_voted option to sort" do
24
+ expect(helper.order_fields).not_to include(:most_voted)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -11,6 +11,8 @@ module Decidim
11
11
  include_examples "has feature"
12
12
  include_examples "has scope"
13
13
  include_examples "has category"
14
+ include_examples "has reference"
15
+ include_examples "reportable"
14
16
 
15
17
  it { is_expected.to be_valid }
16
18
 
@@ -132,6 +132,15 @@ module Decidim
132
132
  expect(subject).to match_array [proposal, proposal2]
133
133
  end
134
134
  end
135
+
136
+ context "when `global` is being sent" do
137
+ let!(:resource_without_scope) { create(:proposal, feature: feature, scope: nil)}
138
+ let(:scope_id) { ["global"] }
139
+
140
+ it "returns resources without a scope" do
141
+ expect(subject).to eq [resource_without_scope]
142
+ end
143
+ end
135
144
  end
136
145
 
137
146
  describe "when the filter includes related_to" do