decidim 0.0.2 → 0.0.3

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 (439) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +12 -0
  3. data/Dockerfile +2 -0
  4. data/Gemfile.lock +80 -54
  5. data/README.md +15 -2
  6. data/decidim-admin/app/assets/javascripts/decidim/admin/application.js.es6 +3 -2
  7. data/decidim-admin/app/assets/javascripts/decidim/admin/tab_focus.js.es6 +1 -1
  8. data/decidim-admin/app/assets/stylesheets/decidim/admin/_foundation_and_overrides.scss +1 -1
  9. data/decidim-admin/app/commands/decidim/admin/{create_participatory_process_attachment.rb → create_attachment.rb} +6 -7
  10. data/decidim-admin/app/commands/decidim/admin/create_participatory_process.rb +12 -3
  11. data/decidim-admin/app/commands/decidim/admin/{update_participatory_process_attachment.rb → update_attachment.rb} +7 -6
  12. data/decidim-admin/app/commands/decidim/admin/update_feature.rb +2 -1
  13. data/decidim-admin/app/commands/decidim/admin/update_organization.rb +1 -0
  14. data/decidim-admin/app/commands/decidim/admin/update_participatory_process.rb +16 -4
  15. data/decidim-admin/app/constraints/decidim/admin/organization_dashboard_constraint.rb +1 -1
  16. data/decidim-admin/app/controllers/decidim/admin/application_controller.rb +2 -2
  17. data/decidim-admin/app/controllers/decidim/admin/concerns/has_attachments.rb +116 -0
  18. data/decidim-admin/app/controllers/decidim/admin/participatory_process_attachments_controller.rb +5 -67
  19. data/decidim-admin/app/controllers/decidim/admin/users_controller.rb +5 -5
  20. data/decidim-admin/app/forms/decidim/admin/{participatory_process_attachment_form.rb → attachment_form.rb} +2 -2
  21. data/decidim-admin/app/forms/decidim/admin/feature_form.rb +1 -0
  22. data/decidim-admin/app/forms/decidim/admin/organization_form.rb +1 -0
  23. data/decidim-admin/app/forms/decidim/admin/participatory_process_form.rb +8 -1
  24. data/decidim-admin/app/helpers/decidim/admin/application_helper.rb +1 -0
  25. data/decidim-admin/app/helpers/decidim/admin/feature_settings_helper.rb +29 -0
  26. data/decidim-admin/app/models/decidim/admin/abilities/admin_user.rb +4 -4
  27. data/decidim-admin/app/models/decidim/admin/abilities/base.rb +3 -3
  28. data/decidim-admin/app/models/decidim/admin/abilities/participatory_process_admin.rb +15 -7
  29. data/decidim-admin/app/views/decidim/admin/{participatory_process_attachments → attachments}/_form.html.erb +0 -0
  30. data/decidim-admin/app/views/decidim/admin/attachments/edit.html.erb +9 -0
  31. data/decidim-admin/app/views/decidim/admin/attachments/index.html.erb +37 -0
  32. data/decidim-admin/app/views/decidim/admin/attachments/new.html.erb +9 -0
  33. data/decidim-admin/app/views/decidim/admin/attachments/show.html.erb +25 -0
  34. data/decidim-admin/app/views/decidim/admin/features/_form.html.erb +1 -0
  35. data/decidim-admin/app/views/decidim/admin/features/_settings_fields.html.erb +6 -3
  36. data/decidim-admin/app/views/decidim/admin/organization/_form.html.erb +4 -0
  37. data/decidim-admin/app/views/decidim/admin/participatory_processes/_form.html.erb +16 -0
  38. data/decidim-admin/app/views/decidim/admin/participatory_processes/show.html.erb +11 -1
  39. data/decidim-admin/app/views/layouts/decidim/admin/_header.html.erb +2 -2
  40. data/decidim-admin/app/views/layouts/decidim/admin/_sidebar.html.erb +1 -1
  41. data/decidim-admin/app/views/layouts/decidim/admin/participatory_process.html.erb +2 -2
  42. data/decidim-admin/config/locales/ca.yml +29 -27
  43. data/decidim-admin/config/locales/en.yml +29 -27
  44. data/decidim-admin/config/locales/es.yml +29 -27
  45. data/decidim-admin/config/routes.rb +1 -1
  46. data/decidim-admin/db/migrate/20170128112958_change_user_groups_verified_to_timestamp.rb +9 -0
  47. data/decidim-admin/decidim-admin.gemspec +0 -1
  48. data/decidim-admin/lib/decidim/admin/engine.rb +2 -2
  49. data/decidim-admin/lib/decidim/admin/test/manage_attachments_examples.rb +103 -0
  50. data/decidim-admin/spec/commands/create_category_spec.rb +1 -1
  51. data/decidim-admin/spec/commands/create_feature_spec.rb +1 -1
  52. data/decidim-admin/spec/commands/create_participatory_process_spec.rb +32 -2
  53. data/decidim-admin/spec/commands/create_static_page_spec.rb +1 -1
  54. data/decidim-admin/spec/commands/destroy_category_spec.rb +1 -1
  55. data/decidim-admin/spec/commands/destroy_feature_spec.rb +2 -2
  56. data/decidim-admin/spec/commands/destroy_participatory_process_step_spec.rb +1 -1
  57. data/decidim-admin/spec/commands/update_category_spec.rb +1 -1
  58. data/decidim-admin/spec/commands/update_feature_spec.rb +3 -1
  59. data/decidim-admin/spec/commands/update_organization_spec.rb +12 -2
  60. data/decidim-admin/spec/commands/update_static_page_spec.rb +1 -1
  61. data/decidim-admin/spec/features/admin_manages_organization_admins_spec.rb +1 -1
  62. data/decidim-admin/spec/features/admin_manages_organization_scopes_spec.rb +1 -1
  63. data/decidim-admin/spec/features/admin_manages_participatory_processes_spec.rb +1 -1
  64. data/decidim-admin/spec/features/static_pages_spec.rb +1 -1
  65. data/decidim-admin/spec/forms/participatory_process_form_spec.rb +32 -2
  66. data/decidim-admin/spec/forms/participatory_process_step_form_spec.rb +3 -3
  67. data/decidim-admin/spec/forms/scope_form_spec.rb +2 -2
  68. data/decidim-admin/spec/forms/static_page_form_spec.rb +2 -2
  69. data/decidim-admin/spec/helpers/feature_settings_helper_spec.rb +56 -0
  70. data/decidim-admin/spec/models/abilities/admin_user_spec.rb +7 -6
  71. data/decidim-admin/spec/models/abilities/participatory_process_admin_spec.rb +5 -8
  72. data/decidim-admin/spec/shared/manage_process_admins_examples.rb +1 -1
  73. data/decidim-admin/spec/shared/manage_process_attachments_examples.rb +4 -94
  74. data/decidim-admin/spec/shared/manage_process_categories_examples.rb +2 -1
  75. data/decidim-admin/spec/shared/manage_process_steps_examples.rb +1 -1
  76. data/decidim-admin/spec/shared/manage_processes_examples.rb +4 -3
  77. data/decidim-admin/spec/views/decidim/static_pages/_form.html.erb_spec.rb +2 -2
  78. data/decidim-api/app/views/layouts/decidim/api/documentation.html.erb +1 -1
  79. data/decidim-api/decidim-api.gemspec +1 -1
  80. data/decidim-api/lib/decidim/api.rb +1 -0
  81. data/decidim-api/lib/decidim/api/schema.rb +5 -0
  82. data/decidim-api/lib/decidim/api/test/type_context.rb +1 -0
  83. data/decidim-api/lib/decidim/api/types/author_interface.rb +13 -0
  84. data/decidim-api/spec/types/query_type_spec.rb +1 -1
  85. data/decidim-api/spec/types/translated_field_type_spec.rb +1 -1
  86. data/decidim-budgets/.gitignore +7 -0
  87. data/decidim-budgets/README.md +23 -0
  88. data/decidim-budgets/Rakefile +2 -0
  89. data/decidim-budgets/app/assets/config/decidim_budgets_manifest.js +1 -0
  90. data/decidim-budgets/app/assets/images/decidim/budgets/icon.svg +4 -0
  91. data/decidim-budgets/app/assets/javascripts/decidim/budgets/projects.js.es6 +28 -0
  92. data/decidim-budgets/app/assets/stylesheets/decidim/budgets/_budgets.scss +1 -0
  93. data/decidim-budgets/app/assets/stylesheets/decidim/budgets/budget/_budget-list.scss +32 -0
  94. data/decidim-budgets/app/assets/stylesheets/decidim/budgets/budget/_budget-meter.scss +78 -0
  95. data/decidim-budgets/app/assets/stylesheets/decidim/budgets/budget/_progress.scss +17 -0
  96. data/decidim-budgets/app/commands/decidim/budgets/add_line_item.rb +43 -0
  97. data/decidim-budgets/app/commands/decidim/budgets/admin/create_project.rb +52 -0
  98. data/decidim-budgets/app/commands/decidim/budgets/admin/update_project.rb +56 -0
  99. data/decidim-budgets/app/commands/decidim/budgets/cancel_order.rb +36 -0
  100. data/decidim-budgets/app/commands/decidim/budgets/checkout.rb +34 -0
  101. data/decidim-budgets/app/commands/decidim/budgets/remove_line_item.rb +35 -0
  102. data/decidim-budgets/app/controllers/concerns/decidim/budgets/needs_current_order.rb +27 -0
  103. data/decidim-budgets/app/controllers/decidim/budgets/admin/application_controller.rb +14 -0
  104. data/decidim-budgets/app/controllers/decidim/budgets/admin/projects_controller.rb +69 -0
  105. data/decidim-budgets/app/controllers/decidim/budgets/application_controller.rb +13 -0
  106. data/decidim-budgets/app/controllers/decidim/budgets/line_items_controller.rb +43 -0
  107. data/decidim-budgets/app/controllers/decidim/budgets/orders_controller.rb +38 -0
  108. data/decidim-budgets/app/controllers/decidim/budgets/projects_controller.rb +44 -0
  109. data/decidim-budgets/app/forms/decidim/budgets/admin/project_form.rb +44 -0
  110. data/decidim-budgets/app/helpers/decidim/budgets/application_helper.rb +12 -0
  111. data/decidim-budgets/app/helpers/decidim/budgets/projects_helper.rb +29 -0
  112. data/decidim-budgets/app/models/decidim/budgets/application_record.rb +9 -0
  113. data/decidim-budgets/app/models/decidim/budgets/line_item.rb +20 -0
  114. data/decidim-budgets/app/models/decidim/budgets/order.rb +52 -0
  115. data/decidim-budgets/app/models/decidim/budgets/project.rb +15 -0
  116. data/decidim-budgets/app/services/decidim/budgets/project_search.rb +58 -0
  117. data/decidim-budgets/app/views/decidim/budgets/admin/projects/_form.html.erb +31 -0
  118. data/decidim-budgets/app/views/decidim/budgets/admin/projects/edit.html.erb +9 -0
  119. data/decidim-budgets/app/views/decidim/budgets/admin/projects/index.html.erb +27 -0
  120. data/{decidim-admin/app/views/decidim/admin/participatory_process_attachments → decidim-budgets/app/views/decidim/budgets/admin/projects}/new.html.erb +0 -0
  121. data/decidim-budgets/app/views/decidim/budgets/line_items/update_budget.js.erb +21 -0
  122. data/decidim-budgets/app/views/decidim/budgets/projects/_budget_confirm.html.erb +30 -0
  123. data/decidim-budgets/app/views/decidim/budgets/projects/_budget_excess.html.erb +14 -0
  124. data/decidim-budgets/app/views/decidim/budgets/projects/_budget_summary.html.erb +46 -0
  125. data/decidim-budgets/app/views/decidim/budgets/projects/_count.html.erb +1 -0
  126. data/decidim-budgets/app/views/decidim/budgets/projects/_filters.html.erb +24 -0
  127. data/decidim-budgets/app/views/decidim/budgets/projects/_linked_projects.html.erb +12 -0
  128. data/decidim-budgets/app/views/decidim/budgets/projects/_order_progress.html.erb +34 -0
  129. data/decidim-budgets/app/views/decidim/budgets/projects/_order_selected_projects.html.erb +25 -0
  130. data/decidim-budgets/app/views/decidim/budgets/projects/_order_total_budget.html.erb +1 -0
  131. data/decidim-budgets/app/views/decidim/budgets/projects/_project.html.erb +40 -0
  132. data/decidim-budgets/app/views/decidim/budgets/projects/_project_budget_button.html.erb +9 -0
  133. data/decidim-budgets/app/views/decidim/budgets/projects/_projects.html.erb +8 -0
  134. data/decidim-budgets/app/views/decidim/budgets/projects/_tags.html.erb +10 -0
  135. data/decidim-budgets/app/views/decidim/budgets/projects/index.html.erb +26 -0
  136. data/decidim-budgets/app/views/decidim/budgets/projects/index.js.erb +2 -0
  137. data/decidim-budgets/app/views/decidim/budgets/projects/show.html.erb +48 -0
  138. data/decidim-budgets/bin/rails +14 -0
  139. data/decidim-budgets/config/i18n-tasks.yml +4 -0
  140. data/decidim-budgets/config/locales/ca.yml +84 -0
  141. data/decidim-budgets/config/locales/en.yml +95 -0
  142. data/decidim-budgets/config/locales/es.yml +84 -0
  143. data/decidim-budgets/db/migrate/20170127114122_create_projects.rb +15 -0
  144. data/decidim-budgets/db/migrate/20170130095615_create_orders.rb +13 -0
  145. data/decidim-budgets/db/migrate/20170130101825_create_line_items.rb +10 -0
  146. data/decidim-budgets/decidim-budgets.gemspec +24 -0
  147. data/decidim-budgets/lib/decidim/budgets.rb +11 -0
  148. data/decidim-budgets/lib/decidim/budgets/admin.rb +9 -0
  149. data/decidim-budgets/lib/decidim/budgets/admin_engine.rb +22 -0
  150. data/decidim-budgets/lib/decidim/budgets/feature.rb +59 -0
  151. data/decidim-budgets/lib/decidim/budgets/list_engine.rb +30 -0
  152. data/decidim-budgets/lib/decidim/budgets/test/factories.rb +43 -0
  153. data/decidim-budgets/spec/commands/add_line_item_spec.rb +48 -0
  154. data/decidim-budgets/spec/commands/cancel_order_spec.rb +42 -0
  155. data/decidim-budgets/spec/commands/checkout_spec.rb +45 -0
  156. data/decidim-budgets/spec/commands/create_project_spec.rb +72 -0
  157. data/decidim-budgets/spec/commands/remove_line_item_spec.rb +31 -0
  158. data/decidim-budgets/spec/commands/update_project_spec.rb +65 -0
  159. data/decidim-budgets/spec/factories.rb +4 -0
  160. data/decidim-budgets/spec/features/admin_manages_projects_spec.rb +16 -0
  161. data/decidim-budgets/spec/features/orders_spec.rb +149 -0
  162. data/decidim-budgets/spec/features/process_admin_manages_projects_spec.rb +17 -0
  163. data/decidim-budgets/spec/forms/project_form_spec.rb +115 -0
  164. data/decidim-budgets/spec/models/line_item_spec.rb +35 -0
  165. data/decidim-budgets/spec/models/order_spec.rb +45 -0
  166. data/decidim-budgets/spec/models/project_spec.rb +30 -0
  167. data/decidim-budgets/spec/services/project_search_spec.rb +97 -0
  168. data/decidim-budgets/spec/shared/admin_shared_context.rb +11 -0
  169. data/decidim-budgets/spec/shared/manage_projects_examples.rb +104 -0
  170. data/decidim-budgets/spec/spec_helper.rb +2 -0
  171. data/decidim-comments/app/assets/javascripts/decidim/comments/bundle.js +0 -0
  172. data/decidim-comments/app/commands/decidim/comments/create_comment.rb +2 -1
  173. data/decidim-comments/app/forms/decidim/comments/comment_form.rb +1 -0
  174. data/decidim-comments/app/frontend/application/apollo_client.js +1 -1
  175. data/decidim-comments/app/frontend/application/application.component.jsx +1 -1
  176. data/decidim-comments/app/frontend/comments/add_comment_form.component.jsx +76 -20
  177. data/decidim-comments/app/frontend/comments/add_comment_form.component.test.jsx +77 -22
  178. data/decidim-comments/app/frontend/comments/add_comment_form.fragment.graphql +6 -0
  179. data/decidim-comments/app/frontend/comments/add_comment_form.mutation.graphql +2 -2
  180. data/decidim-comments/app/frontend/comments/comment.component.jsx +15 -15
  181. data/decidim-comments/app/frontend/comments/comment.component.test.jsx +42 -41
  182. data/decidim-comments/app/frontend/comments/comment_order_selector.component.jsx +1 -1
  183. data/decidim-comments/app/frontend/comments/comment_thread.component.jsx +7 -7
  184. data/decidim-comments/app/frontend/comments/comment_thread.component.test.jsx +21 -19
  185. data/decidim-comments/app/frontend/comments/comments.component.jsx +21 -17
  186. data/decidim-comments/app/frontend/comments/comments.component.test.jsx +47 -32
  187. data/decidim-comments/app/frontend/comments/comments.query.graphql +6 -3
  188. data/decidim-comments/app/frontend/comments/down_vote_button.component.jsx +21 -10
  189. data/decidim-comments/app/frontend/comments/up_vote_button.component.jsx +23 -12
  190. data/decidim-comments/app/frontend/comments/vote_button.component.jsx +15 -7
  191. data/decidim-comments/app/frontend/comments/vote_button_component.test.jsx +7 -2
  192. data/decidim-comments/app/frontend/entry.js +1 -8
  193. data/decidim-comments/app/frontend/support/generate_user_data.js +13 -0
  194. data/decidim-comments/app/frontend/support/generate_user_group_data.js +14 -0
  195. data/decidim-comments/app/helpers/decidim/comments/comments_helper.rb +10 -15
  196. data/decidim-comments/app/models/decidim/comments/comment.rb +5 -7
  197. data/decidim-comments/app/types/decidim/comments/comment_type.rb +5 -1
  198. data/decidim-comments/config/locales/ca.yml +5 -1
  199. data/decidim-comments/config/locales/en.yml +4 -1
  200. data/decidim-comments/config/locales/es.yml +5 -1
  201. data/decidim-comments/db/migrate/20170123102043_add_user_group_id_to_comments.rb +5 -0
  202. data/decidim-comments/decidim-comments.gemspec +0 -1
  203. data/decidim-comments/lib/decidim/comments/engine.rb +0 -1
  204. data/decidim-comments/lib/decidim/comments/mutation_extensions.rb +2 -1
  205. data/decidim-comments/spec/commands/create_comment_spec.rb +6 -3
  206. data/decidim-comments/spec/commands/vote_comment_spec.rb +4 -4
  207. data/decidim-comments/spec/features/comments_spec.rb +27 -3
  208. data/decidim-comments/spec/forms/comment_form_spec.rb +6 -3
  209. data/decidim-comments/spec/models/comment_spec.rb +25 -32
  210. data/decidim-comments/spec/queries/comments_with_replies_spec.rb +2 -2
  211. data/decidim-comments/spec/types/comment_type_spec.rb +2 -2
  212. data/decidim-comments/spec/types/query_type_spec.rb +5 -5
  213. data/decidim-dev/app/views/decidim/dummy_resource/_linked_dummys.html.erb +5 -0
  214. data/decidim-dev/config/locales/en.yml +5 -0
  215. data/decidim-dev/decidim-dev.gemspec +3 -3
  216. data/decidim-dev/lib/decidim/dev/assets/avatar.jpg +0 -0
  217. data/decidim-dev/lib/decidim/dev/assets/icon.png +0 -0
  218. data/decidim-dev/lib/decidim/dev/test/base_spec_helper.rb +1 -0
  219. data/decidim-dev/lib/decidim/dev/test/rspec_support/action_mailer.rb +1 -1
  220. data/decidim-dev/lib/decidim/dev/test/rspec_support/engine_routes.rb +9 -5
  221. data/decidim-dev/lib/decidim/dev/test/rspec_support/feature.rb +24 -0
  222. data/decidim-meetings/app/assets/config/decidim_meetings_manifest.js +2 -0
  223. data/decidim-meetings/app/assets/javascripts/decidim/meetings/map.js.es6.erb +92 -0
  224. data/decidim-meetings/app/assets/stylesheets/decidim/meetings/map.css +1 -0
  225. data/decidim-meetings/app/commands/decidim/meetings/admin/close_meeting.rb +53 -0
  226. data/decidim-meetings/app/commands/decidim/meetings/admin/create_meeting.rb +15 -3
  227. data/decidim-meetings/app/commands/decidim/meetings/admin/update_meeting.rb +15 -3
  228. data/decidim-meetings/app/controllers/decidim/meetings/admin/application_controller.rb +9 -0
  229. data/decidim-meetings/app/controllers/decidim/meetings/admin/attachments_controller.rb +29 -0
  230. data/decidim-meetings/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +38 -0
  231. data/decidim-meetings/app/controllers/decidim/meetings/admin/meetings_controller.rb +0 -12
  232. data/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb +11 -9
  233. data/decidim-meetings/app/forms/decidim/meetings/admin/close_meeting_form.rb +31 -0
  234. data/decidim-meetings/app/forms/decidim/meetings/admin/meeting_form.rb +0 -2
  235. data/decidim-meetings/app/helpers/decidim/meetings/admin/application_helper.rb +12 -0
  236. data/decidim-meetings/app/helpers/decidim/meetings/application_helper.rb +1 -0
  237. data/decidim-meetings/app/helpers/decidim/meetings/map_helper.rb +46 -0
  238. data/decidim-meetings/app/models/decidim/meetings/meeting.rb +11 -15
  239. data/decidim-meetings/app/services/decidim/meetings/meeting_search.rb +0 -1
  240. data/decidim-meetings/app/services/decidim/meetings/static_map_generator.rb +50 -0
  241. data/decidim-meetings/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +23 -0
  242. data/decidim-meetings/app/views/decidim/meetings/admin/meeting_closes/edit.html.erb +9 -0
  243. data/decidim-meetings/app/views/decidim/meetings/admin/meetings/_form.html.erb +2 -6
  244. data/decidim-meetings/app/views/decidim/meetings/admin/meetings/index.html.erb +14 -0
  245. data/decidim-meetings/app/views/decidim/meetings/meetings/_datetime.html.erb +8 -0
  246. data/decidim-meetings/app/views/decidim/meetings/meetings/_filters.html.erb +2 -2
  247. data/decidim-meetings/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +18 -0
  248. data/decidim-meetings/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +22 -0
  249. data/decidim-meetings/app/views/decidim/meetings/meetings/_meetings.html.erb +3 -10
  250. data/decidim-meetings/app/views/decidim/meetings/meetings/index.html.erb +42 -0
  251. data/decidim-meetings/app/views/decidim/meetings/meetings/index.js.erb +6 -0
  252. data/decidim-meetings/app/views/decidim/meetings/meetings/show.html.erb +33 -7
  253. data/decidim-meetings/bin/rails +1 -1
  254. data/decidim-meetings/config/i18n-tasks.yml +2 -0
  255. data/decidim-meetings/config/locales/ca.yml +37 -4
  256. data/decidim-meetings/config/locales/en.yml +34 -1
  257. data/decidim-meetings/config/locales/es.yml +36 -3
  258. data/decidim-meetings/db/migrate/20170110142105_close_a_meeting.rb +9 -0
  259. data/decidim-meetings/db/migrate/20170123151650_add_latitude_and_longitude_to_meetings.rb +6 -0
  260. data/decidim-meetings/db/migrate/20170129153716_remove_short_description_from_meetings.rb +5 -0
  261. data/decidim-meetings/decidim-meetings.gemspec +7 -0
  262. data/decidim-meetings/lib/decidim/meetings/admin_engine.rb +31 -1
  263. data/decidim-meetings/lib/decidim/meetings/feature.rb +20 -6
  264. data/decidim-meetings/lib/decidim/meetings/list_engine.rb +10 -1
  265. data/decidim-meetings/lib/decidim/meetings/seeds/Exampledocument.pdf +0 -0
  266. data/decidim-meetings/lib/decidim/meetings/seeds/city.jpeg +0 -0
  267. data/decidim-meetings/lib/decidim/meetings/test/factories.rb +23 -0
  268. data/decidim-meetings/spec/commands/close_meeting_spec.rb +78 -0
  269. data/decidim-meetings/spec/commands/create_meeting_spec.rb +22 -3
  270. data/decidim-meetings/spec/commands/update_meeting_spec.rb +32 -3
  271. data/decidim-meetings/spec/controllers/meetings_controller_spec.rb +41 -0
  272. data/decidim-meetings/spec/factories.rb +3 -13
  273. data/decidim-meetings/spec/features/admin_manages_meetings_attachments_spec.rb +10 -0
  274. data/decidim-meetings/spec/features/explore_meetings_spec.rb +55 -1
  275. data/decidim-meetings/spec/features/process_admin_manages_meetings_attachments_spec.rb +12 -0
  276. data/decidim-meetings/spec/forms/close_meeting_form_spec.rb +90 -0
  277. data/decidim-meetings/spec/forms/meeting_form_spec.rb +1 -7
  278. data/decidim-meetings/spec/models/meeting_spec.rb +42 -24
  279. data/decidim-meetings/spec/services/meeting_search_spec.rb +1 -17
  280. data/decidim-meetings/spec/services/static_map_generator_spec.rb +33 -0
  281. data/decidim-meetings/spec/shared/manage_attachments_examples.rb +17 -0
  282. data/decidim-meetings/spec/shared/manage_meetings_examples.rb +58 -8
  283. data/decidim-meetings/spec/spec_helper.rb +5 -0
  284. data/decidim-meetings/spec/support/geocoder.rb +7 -0
  285. data/decidim-meetings/vendor/assets/javascripts/leaflet-svg-icon.js +179 -0
  286. data/decidim-meetings/vendor/assets/javascripts/leaflet-tilelayer-here.js +166 -0
  287. data/decidim-meetings/vendor/assets/javascripts/leaflet.js +9 -0
  288. data/decidim-meetings/vendor/assets/stylesheets/leaflet.css +624 -0
  289. data/decidim-pages/app/models/decidim/pages/page.rb +10 -1
  290. data/decidim-pages/app/views/decidim/pages/application/show.html.erb +2 -1
  291. data/decidim-pages/spec/commands/create_page_spec.rb +2 -2
  292. data/decidim-pages/spec/commands/destroy_page_spec.rb +1 -1
  293. data/decidim-pages/spec/commands/update_page_spec.rb +1 -1
  294. data/decidim-pages/spec/factories.rb +1 -1
  295. data/decidim-pages/spec/features/admin_spec.rb +1 -0
  296. data/decidim-pages/spec/models/page_spec.rb +15 -0
  297. data/decidim-proposals/app/assets/stylesheets/decidim/proposals/social_share.css.scss +5 -0
  298. data/decidim-proposals/app/commands/decidim/proposals/admin/answer_proposal.rb +43 -0
  299. data/decidim-proposals/app/commands/decidim/proposals/create_proposal.rb +1 -0
  300. data/decidim-proposals/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb +37 -0
  301. data/decidim-proposals/app/controllers/decidim/proposals/admin/proposals_controller.rb +1 -0
  302. data/decidim-proposals/app/controllers/decidim/proposals/proposal_votes_controller.rb +18 -7
  303. data/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb +8 -7
  304. data/decidim-proposals/app/forms/decidim/proposals/admin/proposal_answer_form.rb +18 -0
  305. data/decidim-proposals/app/forms/decidim/proposals/proposal_form.rb +1 -0
  306. data/decidim-proposals/app/helpers/decidim/proposals/application_helper.rb +17 -0
  307. data/decidim-proposals/app/helpers/decidim/proposals/proposal_votes_helper.rb +19 -0
  308. data/decidim-proposals/app/models/decidim/proposals/abilities/current_user.rb +59 -0
  309. data/decidim-proposals/app/models/decidim/proposals/proposal.rb +30 -33
  310. data/decidim-proposals/app/models/decidim/proposals/proposal_vote.rb +2 -0
  311. data/decidim-proposals/app/services/decidim/proposals/proposal_search.rb +11 -0
  312. data/decidim-proposals/app/views/decidim/proposals/admin/proposal_answers/edit.html.erb +15 -0
  313. data/decidim-proposals/app/views/decidim/proposals/admin/proposals/index.html.erb +8 -0
  314. data/decidim-proposals/app/views/decidim/proposals/proposal_votes/update_buttons_and_counters.js.erb +20 -0
  315. data/decidim-proposals/app/views/decidim/proposals/proposals/_filters.html.erb +3 -1
  316. data/decidim-proposals/app/views/decidim/proposals/proposals/_filters_small_view.html.erb +18 -0
  317. data/decidim-proposals/app/views/decidim/proposals/proposals/_linked_proposals.html.erb +27 -0
  318. data/decidim-proposals/app/views/decidim/proposals/proposals/_proposal.html.erb +3 -2
  319. data/decidim-proposals/app/views/decidim/proposals/proposals/_proposal_badge.html.erb +3 -0
  320. data/decidim-proposals/app/views/decidim/proposals/proposals/_remaining_votes_count.html.erb +1 -0
  321. data/decidim-proposals/app/views/decidim/proposals/proposals/_share.html.erb +1 -1
  322. data/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb +16 -4
  323. data/decidim-proposals/app/views/decidim/proposals/proposals/_votes_limit.html.erb +23 -0
  324. data/decidim-proposals/app/views/decidim/proposals/proposals/index.html.erb +13 -3
  325. data/decidim-proposals/app/views/decidim/proposals/proposals/new.html.erb +6 -0
  326. data/decidim-proposals/app/views/decidim/proposals/proposals/show.html.erb +15 -2
  327. data/decidim-proposals/config/i18n-tasks.yml +3 -0
  328. data/decidim-proposals/config/locales/ca.yml +54 -1
  329. data/decidim-proposals/config/locales/en.yml +54 -0
  330. data/decidim-proposals/config/locales/es.yml +54 -1
  331. data/decidim-proposals/db/migrate/20170120151202_add_user_group_id_to_proposals.rb +5 -0
  332. data/decidim-proposals/db/migrate/20170131092413_add_answers_to_proposals.rb +7 -0
  333. data/decidim-proposals/decidim-proposals.gemspec +3 -0
  334. data/decidim-proposals/lib/decidim/proposals/admin_engine.rb +3 -1
  335. data/decidim-proposals/lib/decidim/proposals/engine.rb +7 -1
  336. data/decidim-proposals/lib/decidim/proposals/feature.rb +28 -1
  337. data/decidim-proposals/lib/decidim/proposals/test/factories.rb +83 -0
  338. data/decidim-proposals/spec/commands/decidim/proposals/admin_create_proposal_spec.rb +14 -0
  339. data/decidim-proposals/spec/commands/decidim/proposals/answer_proposal_spec.rb +53 -0
  340. data/decidim-proposals/spec/commands/decidim/proposals/create_proposal_spec.rb +3 -56
  341. data/decidim-proposals/spec/controllers/decidim/admin/proposal_answers_controller_spec.rb +45 -0
  342. data/decidim-proposals/spec/controllers/decidim/proposal_votes_controller_spec.rb +113 -0
  343. data/decidim-proposals/spec/controllers/decidim/proposals_controller_spec.rb +53 -0
  344. data/decidim-proposals/spec/factories.rb +1 -23
  345. data/decidim-proposals/spec/features/proposals_spec.rb +201 -38
  346. data/decidim-proposals/spec/features/vote_proposal_spec.rb +83 -11
  347. data/decidim-proposals/spec/forms/decidim/proposals/admin_proposal_form_spec.rb +13 -0
  348. data/decidim-proposals/spec/forms/decidim/proposals/proposal_answer_form_spec.rb +50 -0
  349. data/decidim-proposals/spec/forms/decidim/proposals/proposal_form_spec.rb +5 -93
  350. data/decidim-proposals/spec/helpers/application_helper_spec.rb +33 -0
  351. data/decidim-proposals/spec/helpers/proposal_votes_helper_spec.rb +53 -0
  352. data/decidim-proposals/spec/lib/decidim/proposals/feature_spec.rb +1 -1
  353. data/decidim-proposals/spec/models/decidim/proposals/proposal_spec.rb +21 -19
  354. data/decidim-proposals/spec/models/decidim/proposals/proposal_vote_spec.rb +19 -1
  355. data/decidim-proposals/spec/services/decidim/proposals/proposal_search_spec.rb +66 -25
  356. data/decidim-proposals/spec/shared/create_proposal_examples.rb +69 -0
  357. data/decidim-proposals/spec/shared/manage_proposals_examples.rb +49 -0
  358. data/decidim-proposals/spec/shared/proposal_form_examples.rb +100 -0
  359. data/decidim-results/.gitignore +7 -0
  360. data/decidim-results/README.md +23 -0
  361. data/decidim-results/Rakefile +2 -0
  362. data/decidim-results/app/assets/images/decidim/results/icon.svg +1 -0
  363. data/decidim-results/app/commands/decidim/results/admin/create_result.rb +65 -0
  364. data/decidim-results/app/commands/decidim/results/admin/update_result.rb +69 -0
  365. data/decidim-results/app/controllers/decidim/results/admin/application_controller.rb +14 -0
  366. data/decidim-results/app/controllers/decidim/results/admin/results_controller.rb +69 -0
  367. data/decidim-results/app/controllers/decidim/results/application_controller.rb +13 -0
  368. data/decidim-results/app/controllers/decidim/results/results_controller.rb +42 -0
  369. data/decidim-results/app/forms/decidim/results/admin/result_form.rb +40 -0
  370. data/decidim-results/app/helpers/decidim/results/application_helper.rb +11 -0
  371. data/decidim-results/app/models/decidim/results/application_record.rb +9 -0
  372. data/decidim-results/app/models/decidim/results/result.rb +15 -0
  373. data/decidim-results/app/services/decidim/results/result_search.rb +44 -0
  374. data/decidim-results/app/services/decidim/results/result_stats_calculator.rb +51 -0
  375. data/decidim-results/app/views/decidim/results/admin/results/_form.html.erb +23 -0
  376. data/decidim-results/app/views/decidim/results/admin/results/edit.html.erb +9 -0
  377. data/decidim-results/app/views/decidim/results/admin/results/index.html.erb +27 -0
  378. data/decidim-results/app/views/decidim/results/admin/results/new.html.erb +9 -0
  379. data/decidim-results/app/views/decidim/results/results/_count.html.erb +1 -0
  380. data/decidim-results/app/views/decidim/results/results/_filters.html.erb +22 -0
  381. data/decidim-results/app/views/decidim/results/results/_linked_results.html.erb +12 -0
  382. data/decidim-results/app/views/decidim/results/results/_results.html.erb +16 -0
  383. data/decidim-results/app/views/decidim/results/results/_tags.html.erb +10 -0
  384. data/decidim-results/app/views/decidim/results/results/index.html.erb +22 -0
  385. data/decidim-results/app/views/decidim/results/results/index.js.erb +2 -0
  386. data/decidim-results/app/views/decidim/results/results/show.html.erb +52 -0
  387. data/decidim-results/bin/rails +14 -0
  388. data/decidim-results/config/i18n-tasks.yml +5 -0
  389. data/decidim-results/config/locales/ca.yml +61 -0
  390. data/decidim-results/config/locales/en.yml +62 -0
  391. data/decidim-results/config/locales/es.yml +61 -0
  392. data/decidim-results/db/migrate/20170116104125_create_results.rb +14 -0
  393. data/decidim-results/db/migrate/20170129164553_remove_short_description_from_results.rb +5 -0
  394. data/decidim-results/decidim-results.gemspec +26 -0
  395. data/decidim-results/lib/decidim/results.rb +11 -0
  396. data/decidim-results/lib/decidim/results/admin.rb +9 -0
  397. data/decidim-results/lib/decidim/results/admin_engine.rb +22 -0
  398. data/decidim-results/lib/decidim/results/feature.rb +52 -0
  399. data/decidim-results/lib/decidim/results/list_engine.rb +19 -0
  400. data/decidim-results/lib/decidim/results/test/factories.rb +11 -0
  401. data/decidim-results/spec/commands/create_result_spec.rb +90 -0
  402. data/decidim-results/spec/commands/update_result_spec.rb +83 -0
  403. data/decidim-results/spec/factories.rb +6 -0
  404. data/decidim-results/spec/features/admin_manages_results_spec.rb +16 -0
  405. data/decidim-results/spec/features/explore_results_spec.rb +186 -0
  406. data/decidim-results/spec/features/process_admin_manages_results_spec.rb +17 -0
  407. data/decidim-results/spec/forms/result_form_spec.rb +91 -0
  408. data/decidim-results/spec/models/result_spec.rb +18 -0
  409. data/decidim-results/spec/services/result_search_spec.rb +97 -0
  410. data/decidim-results/spec/services/result_stats_calculator_spec.rb +93 -0
  411. data/decidim-results/spec/shared/admin_shared_context.rb +11 -0
  412. data/decidim-results/spec/shared/manage_results_examples.rb +96 -0
  413. data/decidim-results/spec/spec_helper.rb +2 -0
  414. data/decidim-system/app/assets/javascripts/decidim/system/application.js.es6 +1 -3
  415. data/decidim-system/app/views/layouts/decidim/system/_header.html.erb +2 -2
  416. data/decidim-system/decidim-system.gemspec +0 -1
  417. data/decidim-system/lib/decidim/system/engine.rb +0 -1
  418. data/decidim-system/spec/features/manage_admins_spec.rb +1 -1
  419. data/decidim-system/spec/features/organizations_spec.rb +1 -1
  420. data/decidim.gemspec +2 -0
  421. data/docs/how_to_create_a_plugin.md +0 -2
  422. data/lib/decidim.rb +2 -0
  423. data/lib/generators/decidim/install_generator.rb +1 -0
  424. data/lib/generators/decidim/templates/Gemfile.erb +10 -1
  425. data/lib/generators/decidim/templates/initializer.rb +9 -0
  426. data/lib/generators/decidim/templates/secrets.yml.erb +3 -0
  427. data/lib/generators/decidim/templates/social_share_button.rb +1 -1
  428. data/package.json +2 -3
  429. data/yarn.lock +10 -8
  430. metadata +265 -32
  431. data/decidim-admin/app/helpers/decidim/admin/aria_selected_link_to_helper.rb +0 -28
  432. data/decidim-admin/app/views/decidim/admin/participatory_process_attachments/edit.html.erb +0 -9
  433. data/decidim-admin/app/views/decidim/admin/participatory_process_attachments/index.html.erb +0 -37
  434. data/decidim-admin/app/views/decidim/admin/participatory_process_attachments/show.html.erb +0 -25
  435. data/decidim-comments/app/frontend/support/generate_current_user_data.js +0 -13
  436. data/decidim-comments/app/types/decidim/comments/author_type.rb +0 -15
  437. data/decidim-comments/spec/types/author_type_spec.rb +0 -21
  438. data/decidim-dev/lib/decidim/dev/assets/avatar.svg +0 -14
  439. data/decidim-proposals/app/views/decidim/proposals/proposal_votes/create.js.erb +0 -5
@@ -6,12 +6,15 @@ module Decidim
6
6
  describe CommentForm do
7
7
  let(:body) { "This is a new comment" }
8
8
  let(:alignment) { 1 }
9
+ let(:user_group) { create(:user_group, :verified) }
10
+ let(:user_group_id) { user_group.id }
9
11
 
10
12
  let(:attributes) do
11
13
  {
12
14
  "comment" => {
13
15
  "body" => body,
14
- "alignment" => alignment
16
+ "alignment" => alignment,
17
+ "user_group_id" => user_group_id
15
18
  }
16
19
  }
17
20
  end
@@ -34,14 +37,14 @@ module Decidim
34
37
 
35
38
  context "when alignment is not present" do
36
39
  let(:alignment) { nil }
37
-
40
+
38
41
  it { is_expected.to be_valid }
39
42
  end
40
43
 
41
44
  context "when alignment is present and it is different from 0, 1 and -1" do
42
45
  let(:alignment) { 2 }
43
46
 
44
- it { is_expected.not_to be_valid }
47
+ it { is_expected.not_to be_valid }
45
48
  end
46
49
  end
47
50
  end
@@ -10,87 +10,80 @@ module Decidim
10
10
  let!(:up_vote) { create(:comment_vote, :up_vote, comment: comment) }
11
11
  let!(:down_vote) { create(:comment_vote, :down_vote, comment: comment) }
12
12
 
13
- it "is valid" do
14
- expect(comment).to be_valid
15
- end
13
+ subject { comment }
16
14
 
17
- it "has an associated author" do
18
- expect(comment.author).to be_a(Decidim::User)
15
+ include_examples "authorable"
16
+
17
+ it "is valid" do
18
+ expect(subject).to be_valid
19
19
  end
20
20
 
21
21
  it "has an associated commentable" do
22
- expect(comment.commentable).to be_a(Decidim::ParticipatoryProcess)
22
+ expect(subject.commentable).to eq(commentable)
23
23
  end
24
24
 
25
25
  it "has a replies association" do
26
- expect(comment.replies).to match_array(replies)
26
+ expect(subject.replies).to match_array(replies)
27
27
  end
28
28
 
29
29
  it "has a up_votes association returning comment votes with weight 1" do
30
- expect(comment.up_votes.count).to eq(1)
30
+ expect(subject.up_votes.count).to eq(1)
31
31
  end
32
32
 
33
33
  it "has a down_votes association returning comment votes with weight -1" do
34
- expect(comment.down_votes.count).to eq(1)
34
+ expect(subject.down_votes.count).to eq(1)
35
35
  end
36
36
 
37
37
  it "is not valid if its parent is a comment and cannot have replies" do
38
- expect(comment).to receive(:can_have_replies?).and_return false
38
+ expect(subject).to receive(:can_have_replies?).and_return false
39
39
  expect(replies[0]).not_to be_valid
40
40
  end
41
41
 
42
42
  it "should compute its depth before saving the model" do
43
- expect(comment.depth).to eq(0)
43
+ expect(subject.depth).to eq(0)
44
44
  comment.replies.each do |reply|
45
45
  expect(reply.depth).to eq(1)
46
46
  end
47
47
  end
48
48
 
49
- it "is not valid if the author organization is different" do
50
- foreign_user = build(:user)
51
- comment = build(:comment, author: foreign_user)
52
-
53
- expect(comment).to_not be_valid
54
- end
55
-
56
49
  describe "#can_have_replies?" do
57
50
  it "should return true if the comment's depth is below MAX_DEPTH" do
58
- comment.depth = Comment::MAX_DEPTH - 1
59
- expect(comment.can_have_replies?).to be_truthy
51
+ subject.depth = Comment::MAX_DEPTH - 1
52
+ expect(subject.can_have_replies?).to be_truthy
60
53
  end
61
54
 
62
55
  it "should return false if the comment's depth is equal or greater than MAX_DEPTH" do
63
- comment.depth = Comment::MAX_DEPTH
64
- expect(comment.can_have_replies?).to be_falsy
56
+ subject.depth = Comment::MAX_DEPTH
57
+ expect(subject.can_have_replies?).to be_falsy
65
58
  end
66
59
  end
67
60
 
68
61
  it "is not valid if alignment is not 0, 1 or -1" do
69
- comment.alignment = 2
70
- expect(comment).not_to be_valid
62
+ subject.alignment = 2
63
+ expect(subject).not_to be_valid
71
64
  end
72
65
 
73
66
  describe "#up_voted_by?" do
74
- let(:user) { create(:user, organization: comment.organization) }
67
+ let(:user) { create(:user, organization: subject.organization) }
75
68
  it "should return true if the given user has upvoted the comment" do
76
- create(:comment_vote, comment: comment, author: user, weight: 1)
77
- expect(comment.up_voted_by?(user)).to be_truthy
69
+ create(:comment_vote, comment: subject, author: user, weight: 1)
70
+ expect(subject.up_voted_by?(user)).to be_truthy
78
71
  end
79
72
 
80
73
  it "should return false if the given user has not upvoted the comment" do
81
- expect(comment.up_voted_by?(user)).to be_falsy
74
+ expect(subject.up_voted_by?(user)).to be_falsy
82
75
  end
83
76
  end
84
77
 
85
78
  describe "#down_voted_by?" do
86
- let(:user) { create(:user, organization: comment.organization) }
79
+ let(:user) { create(:user, organization: subject.organization) }
87
80
  it "should return true if the given user has downvoted the comment" do
88
- create(:comment_vote, comment: comment, author: user, weight: -1)
89
- expect(comment.down_voted_by?(user)).to be_truthy
81
+ create(:comment_vote, comment: subject, author: user, weight: -1)
82
+ expect(subject.down_voted_by?(user)).to be_truthy
90
83
  end
91
84
 
92
85
  it "should return false if the given user has not downvoted the comment" do
93
- expect(comment.down_voted_by?(user)).to be_falsy
86
+ expect(subject.down_voted_by?(user)).to be_falsy
94
87
  end
95
88
  end
96
89
  end
@@ -20,7 +20,7 @@ describe Decidim::Comments::CommentsWithReplies do
20
20
  expect(comment.author.name).to be_present
21
21
  expect(comment.up_votes.size).to eq(0)
22
22
  expect(comment.down_votes.size).to eq(0)
23
- }.to_not make_database_queries
23
+ }.not_to make_database_queries
24
24
  end
25
25
 
26
26
  it "eager loads a comment tree based on the MAX_DEPTH" do
@@ -39,7 +39,7 @@ describe Decidim::Comments::CommentsWithReplies do
39
39
  expect(comment.author.name).to be_present
40
40
  expect(comment.up_votes.size).to eq(0)
41
41
  expect(comment.down_votes.size).to eq(0)
42
- }.to_not make_database_queries
42
+ }.not_to make_database_queries
43
43
  end
44
44
 
45
45
  it "return the comments ordered by created_at asc by default" do
@@ -32,7 +32,7 @@ module Decidim
32
32
 
33
33
  describe "canHaveReplies" do
34
34
  let (:query) { "{ canHaveReplies }" }
35
-
35
+
36
36
  it "returns the return value of can_have_replies? method" do
37
37
  expect(response).to include("canHaveReplies" => model.can_have_replies?)
38
38
  end
@@ -49,7 +49,7 @@ module Decidim
49
49
  replies.each do |reply|
50
50
  expect(response["replies"]).to include("id" => reply.id.to_s)
51
51
  end
52
- expect(response["replies"]).to_not include("id" => random_comment.id.to_s)
52
+ expect(response["replies"]).not_to include("id" => random_comment.id.to_s)
53
53
  end
54
54
 
55
55
  it "return comment's replies ordered by date" do
@@ -5,12 +5,12 @@ require "decidim/api/test/type_context"
5
5
  describe Decidim::Api::QueryType do
6
6
  include_context "graphql type"
7
7
 
8
- describe "currentUser" do
9
- let(:query) { "{ currentUser { name } } " }
8
+ describe "session" do
9
+ let(:query) { "{ session { user { name } } }" }
10
10
 
11
11
  context "When the user is logged in" do
12
12
  it "return current user data" do
13
- expect(response["currentUser"]).to include("name" => current_user.name)
13
+ expect(response["session"]).to include({ "user" => { "name" => current_user.name } })
14
14
  end
15
15
  end
16
16
 
@@ -18,7 +18,7 @@ describe Decidim::Api::QueryType do
18
18
  let!(:current_user) { nil }
19
19
 
20
20
  it "return a nil object" do
21
- expect(response["currentUser"]).to be_nil
21
+ expect(response["session"]).to be_nil
22
22
  end
23
23
  end
24
24
  end
@@ -35,7 +35,7 @@ describe Decidim::Api::QueryType do
35
35
  it "returns comments from a commentable resource" do
36
36
  expect(response["comments"]).to include("id" => comment_1.id.to_s)
37
37
  expect(response["comments"]).to include("id" => comment_2.id.to_s)
38
- expect(response["comments"]).to_not include("id" => comment_3.id.to_s)
38
+ expect(response["comments"]).not_to include("id" => comment_3.id.to_s)
39
39
  end
40
40
 
41
41
  it "returns comments ordered by creation date" do
@@ -0,0 +1,5 @@
1
+ <ul>
2
+ <% resources.each do |dummy| %>
3
+ <li><%= dummy.title %></li>
4
+ <% end %>
5
+ </ul>
@@ -0,0 +1,5 @@
1
+ en:
2
+ decidim:
3
+ resource_links:
4
+ test_link:
5
+ dummy: Related dummy
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_dependency "decidim", Decidim.version
18
18
  s.add_dependency "factory_girl_rails"
19
19
  s.add_dependency "database_cleaner", "~> 1.5.0"
20
- s.add_dependency "capybara", "~> 2.11.0"
20
+ s.add_dependency "capybara", "~> 2.12.0"
21
21
  s.add_dependency "capybara-screenshot", "~> 1.0.14"
22
22
  s.add_dependency "rspec-rails", "~> 3.5"
23
23
  s.add_dependency "rspec-repeat", "~> 1.0.2"
@@ -27,9 +27,9 @@ Gem::Specification.new do |s|
27
27
  s.add_dependency "launchy"
28
28
  s.add_dependency "i18n-tasks", "0.9.8"
29
29
  s.add_dependency "faker", "~> 1.7.2"
30
- s.add_dependency "poltergeist", "~> 1.12.0"
30
+ s.add_dependency "poltergeist", "~> 1.13.0"
31
31
  s.add_dependency "rails-controller-testing", "~> 1.0.1"
32
- s.add_dependency "simplecov", "~> 0.12"
32
+ s.add_dependency "simplecov", "~> 0.13"
33
33
  s.add_dependency "codecov", "~> 0.1.9"
34
34
  s.add_dependency "rubocop", "~> 0.47"
35
35
  s.add_dependency "db-query-matchers", "~> 0.7.0"
@@ -27,6 +27,7 @@ end
27
27
  require "rails"
28
28
  require "active_support/core_ext/string"
29
29
  require "decidim/core"
30
+ require "decidim/core/test"
30
31
 
31
32
  require "#{File.dirname(__FILE__)}/rspec_support/feature.rb"
32
33
 
@@ -20,7 +20,7 @@ module MailerHelpers
20
20
  end
21
21
 
22
22
  def last_email_body
23
- (last_email.body || last_email.html_part.body).encoded
23
+ (last_email.try(:html_part).try(:body) || last_email.body).encoded
24
24
  end
25
25
 
26
26
  def last_email_link
@@ -9,15 +9,19 @@ module Decidim
9
9
  begin
10
10
  engine = (ENV["ENGINE_NAME"].to_s.split("-").map(&:capitalize).join("::") + "::Engine").constantize
11
11
 
12
- if engine.respond_to?(:routes)
13
- routes do
14
- engine.routes
15
- end
16
- end
12
+ load_routes engine if engine.respond_to?(:routes)
17
13
  rescue NameError => _exception
18
14
  puts "Failed to automatically inject routes for engine #{ENV["ENGINE_NAME"]}"
19
15
  end
20
16
  end
17
+
18
+ class_methods do
19
+ def load_routes(klass)
20
+ routes do
21
+ klass.routes
22
+ end
23
+ end
24
+ end
21
25
  end
22
26
  end
23
27
 
@@ -7,8 +7,15 @@ module Decidim
7
7
 
8
8
  routes do
9
9
  root to: proc { [200, {}, ["DUMMY ENGINE"]] }
10
+ resources :dummy_resource
10
11
  end
11
12
  end
13
+
14
+ class DummyResource < ActiveRecord::Base
15
+ include Resourceable
16
+ belongs_to :feature, foreign_key: "decidim_feature_id", class_name: "Decidim::Feature"
17
+ has_one :organization, through: :feature
18
+ end
12
19
  end
13
20
 
14
21
  Decidim.register_feature(:dummy) do |feature|
@@ -23,9 +30,26 @@ Decidim.register_feature(:dummy) do |feature|
23
30
  settings.attribute :dummy_step_attribute_1, type: :boolean
24
31
  settings.attribute :dummy_step_attribute_2, type: :boolean
25
32
  end
33
+
34
+ feature.register_resource do |resource|
35
+ resource.name = :dummy
36
+ resource.model_class_name = "Decidim::DummyResource"
37
+ resource.template = "decidim/dummy_resource/linked_dummys"
38
+ end
26
39
  end
27
40
 
28
41
  RSpec.configure do |config|
42
+ config.before(:suite) do
43
+ unless ActiveRecord::Base.connection.data_source_exists?("decidim_dummy_resources")
44
+ ActiveRecord::Migration.create_table :decidim_dummy_resources do |t|
45
+ t.string :title
46
+ t.references :decidim_feature, index: true
47
+
48
+ t.timestamps
49
+ end
50
+ end
51
+ end
52
+
29
53
  config.before(:each) do
30
54
  Decidim.find_feature_manifest(:dummy).reset_hooks!
31
55
  end
@@ -0,0 +1,2 @@
1
+ //= link decidim/meetings/map.js
2
+ //= link decidim/meetings/map.css
@@ -0,0 +1,92 @@
1
+ // = require leaflet
2
+ // = require leaflet-tilelayer-here
3
+ // = require leaflet-svg-icon
4
+ // = require jquery-tmpl
5
+ // = require_self
6
+
7
+ /* globals L */
8
+
9
+ L.DivIcon.SVGIcon.DecidimIcon = L.DivIcon.SVGIcon.extend({
10
+ options: {
11
+ fillColor: '#ef604d',
12
+ opacity: 0
13
+ },
14
+ _createPathDescription: function() {
15
+ return 'M14 1.17a11.685 11.685 0 0 0-11.685 11.685c0 11.25 10.23 20.61 10.665 21a1.5 1.5 0 0 0 2.025 0c0.435-.435 10.665-9.81 10.665-21A11.685 11.685 0 0 0 14 1.17Zm0 17.415A5.085 5.085 0 1 1 19.085 13.5 5.085 5.085 0 0 1 14 18.585Z';
16
+ },
17
+ _createCircle: function() {
18
+ return ""
19
+ }
20
+ });
21
+
22
+ const popupTemplateId = 'meeting-popup';
23
+ $.template('meeting-popup', $(`#${popupTemplateId}`).html());
24
+
25
+ const addMarkers = (meetingsData, map) => {
26
+ const bounds = new L.LatLngBounds(meetingsData.map((meeting) => [meeting.latitude, meeting.longitude]));
27
+
28
+ meetingsData.forEach((meeting) => {
29
+ let marker = L.marker([meeting.latitude, meeting.longitude], {
30
+ icon: new L.DivIcon.SVGIcon.DecidimIcon()
31
+ }).addTo(map);
32
+ let node = document.createElement('div');
33
+
34
+ $.tmpl('meeting-popup', meeting).appendTo(node);
35
+
36
+ marker.bindPopup(node, {
37
+ maxwidth: 640,
38
+ minWidth: 500,
39
+ keepInView: true,
40
+ className: 'map-info'
41
+ }).openPopup();
42
+ });
43
+
44
+ map.fitBounds(bounds, { padding: [100, 100] });
45
+ };
46
+
47
+ const loadMap = (mapId, meetingsData) => {
48
+ const { hereAppId, hereAppCode } = window.DecidimMeetings.mapConfiguration;
49
+
50
+ if (window.DecidimMeetings.currentMap) {
51
+ window.DecidimMeetings.currentMap.remove();
52
+ window.DecidimMeetings.currentMap = null;
53
+ }
54
+
55
+ const map = L.map(mapId);
56
+
57
+ L.tileLayer.here({
58
+ appId: hereAppId,
59
+ appCode: hereAppCode,
60
+ }).addTo(map);
61
+
62
+ if (meetingsData.length > 0) {
63
+ addMarkers(meetingsData, map);
64
+ } else {
65
+ map.fitWorld();
66
+ }
67
+
68
+ map.scrollWheelZoom.disable();
69
+
70
+ return map;
71
+ };
72
+
73
+ window.DecidimMeetings = {
74
+ loadMap,
75
+ currentMap: null,
76
+ mapConfiguration: {}
77
+ };
78
+
79
+ $(() => {
80
+ const mapId = 'meetings-map';
81
+ const $map = $(`#${mapId}`);
82
+
83
+ const meetingsData = $map.data('meetings');
84
+ const hereAppId = $map.data('here-app-id');
85
+ const hereAppCode = $map.data('here-app-code');
86
+
87
+ window.DecidimMeetings.mapConfiguration = { hereAppId, hereAppCode };
88
+
89
+ if ($map.length > 0) {
90
+ window.DecidimMeetings.currentMap = loadMap(mapId, meetingsData);
91
+ }
92
+ });
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+ module Decidim
3
+ module Meetings
4
+ module Admin
5
+ # This command is executed when the user closes a Meeting from the admin
6
+ # panel.
7
+ class CloseMeeting < Rectify::Command
8
+ # Initializes a CloseMeeting Command.
9
+ #
10
+ # form - The form from which to get the data.
11
+ # meeting - The current instance of the page to be closed.
12
+ def initialize(form, meeting)
13
+ @form = form
14
+ @meeting = meeting
15
+ end
16
+
17
+ # Closes the meeting if valid.
18
+ #
19
+ # Broadcasts :ok if successful, :invalid otherwise.
20
+ def call
21
+ return broadcast(:invalid) if @form.invalid?
22
+
23
+ transaction do
24
+ close_meeting
25
+ link_proposals
26
+ end
27
+
28
+ broadcast(:ok)
29
+ end
30
+
31
+ private
32
+
33
+ def close_meeting
34
+ @meeting.update_attributes!(
35
+ closing_report: @form.closing_report,
36
+ attendees_count: @form.attendees_count,
37
+ contributions_count: @form.contributions_count,
38
+ attending_organizations: @form.attending_organizations,
39
+ closed_at: @form.closed_at
40
+ )
41
+ end
42
+
43
+ def proposals
44
+ @meeting.sibling_scope(:proposals).where(id: @form.proposal_ids)
45
+ end
46
+
47
+ def link_proposals
48
+ @meeting.link_resources(proposals, "proposals_from_meeting")
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end