decidim 0.0.8.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim might be problematic. Click here for more details.

Files changed (292) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +21 -21
  3. data/.codeclimate.yml +10 -6
  4. data/.eslintignore +1 -0
  5. data/.gitignore +1 -1
  6. data/.rubocop.yml +38 -20
  7. data/.travis.yml +0 -1
  8. data/Gemfile +6 -9
  9. data/Gemfile.lock +165 -205
  10. data/Rakefile +1 -1
  11. data/codecov.yml +5 -71
  12. data/crowdin.yaml +1 -1
  13. data/decidim-admin/app/assets/stylesheets/decidim/admin/_decidim.scss +9 -2
  14. data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_action-icon.scss +7 -0
  15. data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_cards.scss +6 -0
  16. data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_editor.scss +1 -0
  17. data/decidim-admin/app/assets/stylesheets/decidim/admin/{_sidebar.scss → extra/_sidebar.scss} +0 -0
  18. data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_action-icon.scss +23 -0
  19. data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_cards.scss +0 -7
  20. data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_icons.scss +4 -2
  21. data/decidim-admin/app/assets/stylesheets/decidim/admin/modules/_modules.scss +0 -1
  22. data/decidim-admin/app/assets/stylesheets/decidim/admin/{modules/_datepicker.scss → plugins/_foundation-datepicker.scss} +1 -1
  23. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/_constants.scss +5 -0
  24. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/_math.scss +45 -0
  25. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_acos.scss +12 -0
  26. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_asin.scss +12 -0
  27. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_atan.scss +28 -0
  28. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_atan2.scss +37 -0
  29. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_cos.scss +13 -0
  30. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_cot.scss +9 -0
  31. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_csc.scss +9 -0
  32. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_exp.scss +12 -0
  33. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_fact.scss +18 -0
  34. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_frexp.scss +21 -0
  35. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_ldexp.scss +17 -0
  36. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_log.scss +34 -0
  37. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_pow.scss +28 -0
  38. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_sec.scss +9 -0
  39. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_sin.scss +9 -0
  40. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_sqrt.scss +16 -0
  41. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/functions/_tan.scss +9 -0
  42. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_deg-to-rad.scss +4 -0
  43. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_rad-to-deg.scss +4 -0
  44. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_strip-unit.scss +8 -0
  45. data/decidim-admin/app/assets/stylesheets/decidim/admin/vendor/mathsass/helpers/_unitless-rad.scss +13 -0
  46. data/decidim-admin/app/commands/decidim/admin/create_participatory_process.rb +23 -17
  47. data/decidim-admin/app/commands/decidim/admin/create_participatory_process_group.rb +1 -1
  48. data/decidim-admin/app/controllers/decidim/admin/moderations_controller.rb +4 -4
  49. data/decidim-admin/app/controllers/decidim/admin/participatory_processes_controller.rb +1 -1
  50. data/decidim-admin/app/forms/decidim/admin/organization_form.rb +6 -2
  51. data/decidim-admin/app/forms/decidim/admin/participatory_process_form.rb +5 -0
  52. data/decidim-admin/app/helpers/decidim/admin/application_helper.rb +1 -1
  53. data/decidim-admin/app/helpers/decidim/admin/attributes_display_helper.rb +1 -1
  54. data/decidim-admin/app/views/decidim/admin/features/_feature.html.erb +5 -1
  55. data/decidim-admin/app/views/decidim/admin/moderations/_report.html.erb +11 -0
  56. data/decidim-admin/app/views/decidim/admin/moderations/index.html.erb +22 -24
  57. data/decidim-admin/app/views/layouts/decidim/admin/participatory_process.html.erb +3 -0
  58. data/decidim-admin/config/i18n-tasks.yml +1 -0
  59. data/decidim-admin/config/locales/ca.yml +7 -3
  60. data/decidim-admin/config/locales/en.yml +6 -2
  61. data/decidim-admin/config/locales/es.yml +7 -3
  62. data/decidim-admin/config/locales/eu.yml +4 -3
  63. data/decidim-admin/config/locales/fi.yml +4 -3
  64. data/decidim-admin/config/locales/fr.yml +389 -2
  65. data/decidim-admin/config/locales/nl.yml +4 -1
  66. data/decidim-admin/decidim-admin.gemspec +3 -3
  67. data/decidim-admin/lib/decidim/admin/test/manage_attachments_examples.rb +2 -2
  68. data/decidim-admin/spec/commands/activate_participatory_process_step_spec.rb +1 -0
  69. data/decidim-admin/spec/commands/create_category_spec.rb +1 -1
  70. data/decidim-admin/spec/commands/create_feature_spec.rb +7 -5
  71. data/decidim-admin/spec/commands/create_participatory_process_admin_spec.rb +2 -1
  72. data/decidim-admin/spec/commands/create_participatory_process_spec.rb +14 -6
  73. data/decidim-admin/spec/commands/create_scope_spec.rb +3 -2
  74. data/decidim-admin/spec/commands/deactivate_participatory_process_step_spec.rb +1 -0
  75. data/decidim-admin/spec/commands/destroy_feature_spec.rb +1 -0
  76. data/decidim-admin/spec/commands/destroy_participatory_process_step_spec.rb +1 -0
  77. data/decidim-admin/spec/commands/publish_participatory_process_spec.rb +1 -0
  78. data/decidim-admin/spec/commands/reorder_participatory_process_steps_spec.rb +1 -0
  79. data/decidim-admin/spec/commands/unpublish_participatory_process_spec.rb +1 -0
  80. data/decidim-admin/spec/commands/update_feature_spec.rb +7 -5
  81. data/decidim-admin/spec/commands/update_participatory_process_spec.rb +5 -5
  82. data/decidim-admin/spec/commands/update_scope_spec.rb +3 -2
  83. data/decidim-admin/spec/factories.rb +1 -0
  84. data/decidim-admin/spec/features/admin_invite_spec.rb +5 -5
  85. data/decidim-admin/spec/features/admin_manages_newsletters_spec.rb +5 -5
  86. data/decidim-admin/spec/features/admin_manages_organization_admins_spec.rb +2 -2
  87. data/decidim-admin/spec/features/admin_manages_organization_scopes_spec.rb +3 -3
  88. data/decidim-admin/spec/features/admin_manages_organization_spec.rb +7 -11
  89. data/decidim-admin/spec/features/admin_manages_participatory_process_groups_spec.rb +2 -2
  90. data/decidim-admin/spec/features/admin_manages_participatory_processes_spec.rb +3 -3
  91. data/decidim-admin/spec/features/static_pages_spec.rb +8 -7
  92. data/decidim-admin/spec/forms/newsletter_form_spec.rb +2 -2
  93. data/decidim-admin/spec/forms/organization_form_spec.rb +3 -3
  94. data/decidim-admin/spec/forms/participatory_process_form_spec.rb +4 -4
  95. data/decidim-admin/spec/forms/participatory_process_step_form_spec.rb +1 -1
  96. data/decidim-admin/spec/forms/participatory_process_user_role_form_spec.rb +1 -1
  97. data/decidim-admin/spec/forms/scope_form_spec.rb +1 -1
  98. data/decidim-admin/spec/helpers/aria_selected_link_to_helper_spec.rb +1 -0
  99. data/decidim-admin/spec/helpers/feature_settings_helper_spec.rb +1 -0
  100. data/decidim-admin/spec/jobs/newsletter_delivery_job_spec.rb +2 -2
  101. data/decidim-admin/spec/queries/process_admins_spec.rb +1 -1
  102. data/decidim-admin/spec/shared/manage_process_admins_examples.rb +2 -2
  103. data/decidim-admin/spec/shared/manage_process_categories_examples.rb +3 -3
  104. data/decidim-admin/spec/shared/manage_process_steps_examples.rb +5 -5
  105. data/decidim-admin/spec/shared/manage_processes_examples.rb +4 -4
  106. data/decidim-admin/spec/shared/participatory_admin_shared_context.rb +1 -0
  107. data/decidim-admin/spec/spec_helper.rb +1 -0
  108. data/decidim-admin/spec/views/decidim/static_pages/_form.html.erb_spec.rb +1 -0
  109. data/decidim-api/app/controllers/decidim/api/application_controller.rb +1 -1
  110. data/decidim-api/decidim-api.gemspec +1 -1
  111. data/decidim-api/spec/factories.rb +1 -0
  112. data/decidim-api/spec/spec_helper.rb +1 -0
  113. data/decidim-budgets/app/queries/decidim/budgets/filtered_projects.rb +36 -0
  114. data/decidim-budgets/config/locales/ca.yml +1 -0
  115. data/decidim-budgets/config/locales/en.yml +1 -0
  116. data/decidim-budgets/config/locales/es.yml +1 -0
  117. data/decidim-budgets/config/locales/fr.yml +35 -3
  118. data/decidim-budgets/decidim-budgets.gemspec +2 -2
  119. data/decidim-budgets/lib/decidim/budgets/feature.rb +9 -0
  120. data/decidim-budgets/spec/commands/add_line_item_spec.rb +6 -9
  121. data/decidim-budgets/spec/commands/cancel_order_spec.rb +3 -1
  122. data/decidim-budgets/spec/commands/checkout_spec.rb +3 -1
  123. data/decidim-budgets/spec/commands/create_project_spec.rb +4 -3
  124. data/decidim-budgets/spec/commands/remove_line_item_spec.rb +2 -1
  125. data/decidim-budgets/spec/commands/update_project_spec.rb +4 -3
  126. data/decidim-budgets/spec/factories.rb +1 -0
  127. data/decidim-budgets/spec/features/orders_spec.rb +24 -24
  128. data/decidim-budgets/spec/forms/project_form_spec.rb +1 -0
  129. data/decidim-budgets/spec/models/project_spec.rb +1 -1
  130. data/decidim-budgets/spec/queries/decidim/budgets/filtered_projects_spec.rb +21 -0
  131. data/decidim-budgets/spec/services/project_search_spec.rb +4 -3
  132. data/decidim-budgets/spec/shared/admin_shared_context.rb +1 -0
  133. data/decidim-budgets/spec/shared/manage_attachments_examples.rb +1 -0
  134. data/decidim-budgets/spec/spec_helper.rb +1 -0
  135. data/decidim-comments/app/assets/javascripts/decidim/comments/bundle.js +0 -0
  136. data/decidim-comments/app/commands/decidim/comments/create_comment.rb +8 -2
  137. data/decidim-comments/app/frontend/application/application.component.tsx +3 -3
  138. data/decidim-comments/app/frontend/application/icon.component.tsx +1 -1
  139. data/decidim-comments/app/frontend/comments/add_comment_form.component.tsx +7 -7
  140. data/decidim-comments/app/frontend/comments/comment.component.test.tsx +7 -7
  141. data/decidim-comments/app/frontend/comments/comment.component.tsx +6 -6
  142. data/decidim-comments/app/frontend/comments/comment_thread.component.tsx +2 -2
  143. data/decidim-comments/app/frontend/comments/comments.component.test.tsx +5 -5
  144. data/decidim-comments/app/frontend/comments/comments.component.tsx +6 -6
  145. data/decidim-comments/app/frontend/comments/down_vote_button.component.test.tsx +4 -4
  146. data/decidim-comments/app/frontend/comments/down_vote_button.component.tsx +3 -3
  147. data/decidim-comments/app/frontend/comments/up_vote_button.component.test.tsx +4 -4
  148. data/decidim-comments/app/frontend/comments/up_vote_button.component.tsx +3 -3
  149. data/decidim-comments/app/frontend/comments/vote_button.component.tsx +1 -1
  150. data/decidim-comments/app/frontend/comments/vote_button_component.test.tsx +2 -2
  151. data/decidim-comments/app/frontend/entry.ts +2 -2
  152. data/decidim-comments/app/frontend/support/generate_comments_data.ts +2 -2
  153. data/decidim-comments/app/frontend/support/load_translations.ts +2 -2
  154. data/decidim-comments/app/frontend/support/resolve_graphql_query.ts +1 -1
  155. data/decidim-comments/app/mailers/decidim/comments/comment_notification_mailer.rb +1 -1
  156. data/decidim-comments/app/models/decidim/comments/comment.rb +3 -8
  157. data/decidim-comments/app/models/decidim/comments/seed.rb +1 -0
  158. data/decidim-comments/config/locales/fr.yml +62 -1
  159. data/decidim-comments/db/migrate/20170504085413_add_root_commentable_to_comments.rb +7 -0
  160. data/decidim-comments/db/migrate/20170510091348_update_root_commentable_for_comments.rb +22 -0
  161. data/decidim-comments/db/migrate/20170510091409_set_root_commentable_null_constraints.rb +6 -0
  162. data/decidim-comments/db/seeds.rb +4 -2
  163. data/decidim-comments/lib/decidim/comments/engine.rb +8 -0
  164. data/decidim-comments/lib/decidim/comments/test/factories.rb +1 -0
  165. data/decidim-comments/spec/commands/create_comment_spec.rb +13 -6
  166. data/decidim-comments/spec/commands/vote_comment_spec.rb +2 -6
  167. data/decidim-comments/spec/factories.rb +1 -0
  168. data/decidim-comments/spec/features/notifications_spec.rb +4 -4
  169. data/decidim-comments/spec/features/process_admin_manages_comments_spec.rb +1 -1
  170. data/decidim-comments/spec/features/report_comment_spec.rb +4 -2
  171. data/decidim-comments/spec/helpers/comments_helper_spec.rb +3 -3
  172. data/decidim-comments/spec/mailers/comment_notification_mailer_spec.rb +2 -1
  173. data/decidim-comments/spec/models/comment_spec.rb +5 -9
  174. data/decidim-comments/spec/models/comment_vote_spec.rb +3 -3
  175. data/decidim-comments/spec/models/seed_spec.rb +1 -1
  176. data/decidim-comments/spec/queries/sorted_comments_spec.rb +5 -5
  177. data/decidim-comments/spec/shared/admin_shared_context.rb +1 -0
  178. data/decidim-comments/spec/spec_helper.rb +1 -0
  179. data/decidim-comments/spec/types/comment_mutation_type_spec.rb +4 -12
  180. data/decidim-comments/spec/types/comment_type_spec.rb +4 -5
  181. data/decidim-comments/spec/types/commentable_mutation_type_spec.rb +2 -2
  182. data/decidim-comments/spec/types/mutation_type_spec.rb +4 -6
  183. data/decidim-comments/spec/types/query_type_spec.rb +1 -1
  184. data/decidim-dev/decidim-dev.gemspec +6 -6
  185. data/decidim-dev/lib/decidim/dev/common_rake.rb +5 -1
  186. data/decidim-dev/lib/decidim/dev/railtie.rb +1 -0
  187. data/decidim-dev/lib/decidim/dev/test/base_spec_helper.rb +0 -2
  188. data/decidim-dev/lib/decidim/dev/test/rspec_support/geocoder.rb +4 -3
  189. data/decidim-dev/lib/decidim/dev/test/rspec_support/i18n.rb +2 -2
  190. data/decidim-dev/lib/decidim/dev/test/rspec_support/webmock.rb +1 -0
  191. data/decidim-dev/lib/generators/decidim/dummy_generator.rb +1 -1
  192. data/decidim-dev/lib/generators/decidim/templates/autoprefixer_initializer.rb +4 -3
  193. data/decidim-dev/lib/tasks/test_app.rake +1 -0
  194. data/decidim-meetings/app/controllers/decidim/meetings/meeting_widgets_controller.rb +1 -0
  195. data/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb +8 -8
  196. data/decidim-meetings/app/helpers/decidim/meetings/map_helper.rb +9 -9
  197. data/decidim-meetings/app/models/decidim/meetings/meeting.rb +1 -1
  198. data/decidim-meetings/app/views/decidim/meetings/meeting_widgets/show.html.erb +8 -17
  199. data/decidim-meetings/config/locales/fr.yml +95 -1
  200. data/decidim-meetings/lib/decidim/meetings/feature.rb +7 -0
  201. data/decidim-meetings/spec/commands/close_meeting_spec.rb +2 -1
  202. data/decidim-meetings/spec/commands/create_meeting_spec.rb +6 -5
  203. data/decidim-meetings/spec/commands/update_meeting_spec.rb +6 -5
  204. data/decidim-meetings/spec/factories.rb +1 -0
  205. data/decidim-meetings/spec/features/explore_meetings_spec.rb +2 -1
  206. data/decidim-meetings/spec/forms/close_meeting_form_spec.rb +1 -0
  207. data/decidim-meetings/spec/forms/meeting_form_spec.rb +5 -3
  208. data/decidim-meetings/spec/services/meeting_search_spec.rb +3 -2
  209. data/decidim-meetings/spec/shared/admin_shared_context.rb +1 -0
  210. data/decidim-meetings/spec/shared/manage_attachments_examples.rb +1 -1
  211. data/decidim-meetings/spec/shared/manage_meetings_examples.rb +21 -20
  212. data/decidim-meetings/spec/spec_helper.rb +1 -0
  213. data/decidim-pages/config/locales/fr.yml +18 -1
  214. data/decidim-pages/decidim-pages.gemspec +1 -1
  215. data/decidim-pages/lib/decidim/pages/feature.rb +7 -0
  216. data/decidim-pages/spec/commands/create_page_spec.rb +1 -3
  217. data/decidim-pages/spec/factories.rb +1 -0
  218. data/decidim-pages/spec/spec_helper.rb +1 -0
  219. data/decidim-proposals/app/commands/decidim/proposals/create_proposal_export.rb +36 -0
  220. data/decidim-proposals/app/controllers/decidim/proposals/admin/exports_controller.rb +24 -0
  221. data/decidim-proposals/app/controllers/decidim/proposals/proposal_votes_controller.rb +3 -1
  222. data/decidim-proposals/app/controllers/decidim/proposals/proposal_widgets_controller.rb +0 -5
  223. data/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb +0 -1
  224. data/decidim-proposals/app/jobs/decidim/proposals/export_job.rb +21 -0
  225. data/decidim-proposals/app/models/decidim/proposals/proposal.rb +1 -1
  226. data/decidim-proposals/app/queries/decidim/proposals/filtered_proposals.rb +36 -0
  227. data/decidim-proposals/app/services/decidim/proposals/proposal_serializer.rb +72 -0
  228. data/decidim-proposals/app/views/decidim/proposals/admin/proposals/index.html.erb +15 -3
  229. data/decidim-proposals/app/views/decidim/proposals/proposal_widgets/show.html.erb +4 -25
  230. data/decidim-proposals/config/locales/ca.yml +4 -0
  231. data/decidim-proposals/config/locales/en.yml +6 -1
  232. data/decidim-proposals/config/locales/es.yml +4 -0
  233. data/decidim-proposals/config/locales/fr.yml +146 -1
  234. data/decidim-proposals/decidim-proposals.gemspec +2 -2
  235. data/decidim-proposals/lib/decidim/proposals/admin_engine.rb +5 -0
  236. data/decidim-proposals/lib/decidim/proposals/feature.rb +14 -0
  237. data/decidim-proposals/spec/factories.rb +1 -0
  238. data/decidim-proposals/spec/features/admin_manages_proposals_spec.rb +1 -0
  239. data/decidim-proposals/spec/features/process_admin_manages_proposals_spec.rb +1 -0
  240. data/decidim-proposals/spec/features/proposals_spec.rb +29 -28
  241. data/decidim-proposals/spec/features/report_proposal_spec.rb +2 -2
  242. data/decidim-proposals/spec/features/vote_proposal_spec.rb +36 -32
  243. data/decidim-proposals/spec/helpers/proposal_order_helper_spec.rb +3 -3
  244. data/decidim-proposals/spec/jobs/export_job_spec.rb +57 -0
  245. data/decidim-proposals/spec/lib/decidim/proposals/feature_spec.rb +1 -0
  246. data/decidim-proposals/spec/models/decidim/proposals/proposal_vote_spec.rb +3 -3
  247. data/decidim-proposals/spec/queries/decidim/proposals/filtered_proposals_spec.rb +21 -0
  248. data/decidim-proposals/spec/services/decidim/proposals/proposal_search_spec.rb +12 -12
  249. data/decidim-proposals/spec/services/decidim/proposals/proposal_serializer_spec.rb +71 -0
  250. data/decidim-proposals/spec/shared/admin_shared_context.rb +1 -0
  251. data/decidim-proposals/spec/shared/create_proposal_examples.rb +4 -3
  252. data/decidim-proposals/spec/shared/export_proposals_examples.rb +37 -0
  253. data/decidim-proposals/spec/shared/manage_proposals_examples.rb +12 -11
  254. data/decidim-proposals/spec/shared/proposal_form_examples.rb +9 -8
  255. data/decidim-proposals/spec/spec_helper.rb +1 -0
  256. data/decidim-results/app/controllers/decidim/results/result_widgets_controller.rb +1 -0
  257. data/decidim-results/app/controllers/decidim/results/results_controller.rb +1 -1
  258. data/decidim-results/app/queries/decidim/results/filtered_results.rb +36 -0
  259. data/decidim-results/app/services/decidim/results/result_stats_calculator.rb +1 -1
  260. data/decidim-results/app/views/decidim/results/result_widgets/show.html.erb +2 -10
  261. data/decidim-results/config/locales/fr.yml +75 -1
  262. data/decidim-results/decidim-results.gemspec +2 -2
  263. data/decidim-results/lib/decidim/results/feature.rb +9 -0
  264. data/decidim-results/spec/commands/create_result_spec.rb +4 -3
  265. data/decidim-results/spec/commands/update_result_spec.rb +5 -4
  266. data/decidim-results/spec/controllers/results_controller_spec.rb +31 -0
  267. data/decidim-results/spec/factories.rb +1 -0
  268. data/decidim-results/spec/features/explore_results_spec.rb +75 -74
  269. data/decidim-results/spec/forms/result_form_spec.rb +2 -1
  270. data/decidim-results/spec/queries/decidim/results/filtered_results_spec.rb +21 -0
  271. data/decidim-results/spec/services/result_search_spec.rb +4 -3
  272. data/decidim-results/spec/services/result_stats_calculator_spec.rb +1 -0
  273. data/decidim-results/spec/shared/admin_shared_context.rb +1 -0
  274. data/decidim-results/spec/spec_helper.rb +1 -0
  275. data/decidim-system/config/locales/fr.yml +64 -1
  276. data/decidim-system/decidim-system.gemspec +3 -3
  277. data/decidim-system/spec/factories.rb +1 -0
  278. data/decidim-system/spec/spec_helper.rb +1 -0
  279. data/docs/how_to_create_a_plugin.md +117 -139
  280. data/lib/generators/decidim/install_generator.rb +1 -1
  281. data/package.json +30 -31
  282. data/tslint.json +1 -2
  283. data/webpack.config.js +2 -3
  284. data/yarn.lock +976 -1326
  285. metadata +68 -31
  286. data/decidim-admin/yarn.lock +0 -4
  287. data/decidim-api/.gitignore +0 -7
  288. data/decidim-budgets/.gitignore +0 -7
  289. data/decidim-meetings/.gitignore +0 -7
  290. data/decidim-pages/.gitignore +0 -3
  291. data/decidim-proposals/.gitignore +0 -3
  292. data/decidim-results/.gitignore +0 -7
@@ -6,8 +6,8 @@ module Decidim
6
6
  describe CreateComment, :db do
7
7
  describe "call" do
8
8
  let(:organization) { create(:organization) }
9
- let(:participatory_process) { create(:participatory_process, organization: organization)}
10
- let(:feature) { create(:feature, participatory_process: participatory_process)}
9
+ let(:participatory_process) { create(:participatory_process, organization: organization) }
10
+ let(:feature) { create(:feature, participatory_process: participatory_process) }
11
11
  let(:author) { create(:user, organization: organization) }
12
12
  let(:dummy_resource) { create :dummy_resource, feature: feature }
13
13
  let(:commentable) { dummy_resource }
@@ -52,13 +52,15 @@ module Decidim
52
52
  end
53
53
 
54
54
  it "creates a new comment" do
55
- expect(Comment).to receive(:create!).with({
55
+ expect(Comment).to receive(:create!).with(
56
56
  author: author,
57
57
  commentable: commentable,
58
+ root_commentable: commentable,
58
59
  body: body,
59
60
  alignment: alignment,
60
61
  decidim_user_group_id: user_group_id
61
- }).and_call_original
62
+ ).and_call_original
63
+
62
64
  expect do
63
65
  command.call
64
66
  end.to change { Comment.count }.by(1)
@@ -107,7 +109,12 @@ module Decidim
107
109
  end
108
110
 
109
111
  context "and the comment is a reply" do
110
- let (:commentable) { create(:comment, commentable: dummy_resource) }
112
+ let(:commentable) { create(:comment, commentable: dummy_resource) }
113
+
114
+ it "stores the root commentable" do
115
+ command.call
116
+ expect(Comment.last.root_commentable).to eq(dummy_resource)
117
+ end
111
118
 
112
119
  it "sends an email to the author of the parent comment" do
113
120
  expect(CommentNotificationMailer)
@@ -119,7 +126,7 @@ module Decidim
119
126
  end
120
127
 
121
128
  context "and I am the author of the parent comment" do
122
- let (:commentable) { create(:comment, author: author, commentable: dummy_resource) }
129
+ let(:commentable) { create(:comment, author: author, commentable: dummy_resource) }
123
130
 
124
131
  it "doesn't send an email" do
125
132
  expect(CommentNotificationMailer).not_to receive(:reply_created)
@@ -51,9 +51,7 @@ module Decidim
51
51
  end
52
52
 
53
53
  it "creates a new comment vote" do
54
- expect(comment.up_votes).to receive(:create!).with({
55
- author: author
56
- }).and_call_original
54
+ expect(comment.up_votes).to receive(:create!).with(author: author).and_call_original
57
55
  expect do
58
56
  command.call
59
57
  end.to change { CommentVote.count }.by(1)
@@ -102,9 +100,7 @@ module Decidim
102
100
  end
103
101
 
104
102
  it "creates a new comment vote" do
105
- expect(comment.down_votes).to receive(:create!).with({
106
- author: author
107
- }).and_call_original
103
+ expect(comment.down_votes).to receive(:create!).with(author: author).and_call_original
108
104
  expect do
109
105
  command.call
110
106
  end.to change { CommentVote.count }.by(1)
@@ -1,2 +1,3 @@
1
+ # frozen_string_literal: true
1
2
  require "decidim/core/test/factories"
2
3
  require "decidim/comments/test/factories"
@@ -6,18 +6,18 @@ describe "Comment notifications", type: :feature do
6
6
  let!(:feature) { create(:feature, manifest_name: :dummy, organization: organization) }
7
7
  let!(:user) { create(:user, :confirmed, organization: organization) }
8
8
  let!(:commentable) { create(:dummy_resource, feature: feature) }
9
- let!(:comments) {
10
- 3.times.map do
9
+ let!(:comments) do
10
+ Array.new(3) do
11
11
  create(:comment, commentable: commentable)
12
12
  end
13
- }
13
+ end
14
14
 
15
15
  before do
16
16
  switch_to_host(organization.host)
17
17
  login_as user, scope: :user
18
18
  end
19
19
 
20
- it "commentable author receives an email with a link to the comment", perform_enqueued: true do
20
+ it "commentable author receives an email with a link to the comment", perform_enqueued: true do
21
21
  visit decidim_dummy.dummy_resource_path(commentable, feature_id: commentable.feature, participatory_process_id: commentable.feature.participatory_process)
22
22
  expect(page).to have_selector(".add-comment form")
23
23
 
@@ -15,7 +15,7 @@ describe "Process admin manages comments", type: :feature do
15
15
  create(:comment, commentable: resource)
16
16
  end
17
17
  end
18
-
18
+
19
19
  before do
20
20
  switch_to_host(organization.host)
21
21
  login_as user, scope: :user
@@ -13,8 +13,10 @@ describe "Report Comment", type: :feature do
13
13
  let!(:user) { create :user, :confirmed, organization: organization }
14
14
 
15
15
  let!(:feature) do
16
- create(:feature,
16
+ create(
17
+ :feature,
17
18
  manifest: manifest,
18
- participatory_process: participatory_process)
19
+ participatory_process: participatory_process
20
+ )
19
21
  end
20
22
  end
@@ -10,12 +10,12 @@ module Decidim
10
10
  it "should render the react component `Comments` with the correct data" do
11
11
  expect(helper)
12
12
  .to receive(:react_comments_component)
13
- .with("comments-for-DummyResource-1", {
13
+ .with(
14
+ "comments-for-DummyResource-1",
14
15
  commentableType: "Decidim::DummyResource",
15
16
  commentableId: "1",
16
17
  locale: I18n.locale
17
- })
18
- .and_call_original
18
+ ).and_call_original
19
19
 
20
20
  helper.comments_for(dummy_resource)
21
21
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
2
3
  require "spec_helper"
3
4
 
4
5
  module Decidim
@@ -6,7 +7,7 @@ module Decidim
6
7
  describe CommentNotificationMailer, type: :mailer do
7
8
  let(:commentable) { create(:dummy_resource) }
8
9
  let(:comment) { create(:comment, commentable: commentable) }
9
- let(:reply) { create(:comment, commentable: comment)}
10
+ let(:reply) { create(:comment, commentable: comment) }
10
11
 
11
12
  describe "comment_created" do
12
13
  let(:mail) { described_class.comment_created(user, comment, commentable) }
@@ -6,7 +6,7 @@ module Decidim
6
6
  describe Comment do
7
7
  let!(:commentable) { create(:dummy_resource) }
8
8
  let!(:comment) { create(:comment, commentable: commentable) }
9
- let!(:replies) { 3.times.map { create(:comment, commentable: comment) } }
9
+ let!(:replies) { Array.new(3) { create(:comment, commentable: comment, root_commentable: commentable) } }
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
 
@@ -23,6 +23,10 @@ module Decidim
23
23
  expect(subject.commentable).to eq(commentable)
24
24
  end
25
25
 
26
+ it "has an associated commentable" do
27
+ expect(subject.root_commentable).to eq(commentable)
28
+ end
29
+
26
30
  it "has a up_votes association returning comment votes with weight 1" do
27
31
  expect(subject.up_votes.count).to eq(1)
28
32
  end
@@ -83,14 +87,6 @@ module Decidim
83
87
  expect(subject.down_voted_by?(user)).to be_falsy
84
88
  end
85
89
  end
86
-
87
- describe "#root_commentable" do
88
- let(:reply) { create(:comment, commentable: subject) }
89
-
90
- it "returns the commentable object from the parent comment" do
91
- expect(reply.root_commentable).to eq(subject.commentable)
92
- end
93
- end
94
90
  end
95
91
  end
96
92
  end
@@ -9,7 +9,7 @@ module Decidim
9
9
  let!(:feature) { create(:feature, participatory_process: participatory_process) }
10
10
  let!(:commentable) { create(:dummy_resource, feature: feature) }
11
11
  let!(:author) { create(:user, organization: organization) }
12
- let!(:comment) { create(:comment, commentable: commentable, author: author)}
12
+ let!(:comment) { create(:comment, commentable: commentable, author: author) }
13
13
  let!(:comment_vote) { create(:comment_vote, comment: comment, author: author) }
14
14
 
15
15
  it "is valid" do
@@ -25,9 +25,9 @@ module Decidim
25
25
  end
26
26
 
27
27
  it "validates uniqueness for author and comment combination" do
28
- expect {
28
+ expect do
29
29
  create(:comment_vote, comment: comment, author: author)
30
- }.to raise_error(ActiveRecord::RecordInvalid)
30
+ end.to raise_error(ActiveRecord::RecordInvalid)
31
31
  end
32
32
 
33
33
  it "is invalid with a weight different from 1 and -1" do
@@ -7,7 +7,7 @@ module Decidim
7
7
  let(:subject) { Decidim::Comments::Seed }
8
8
 
9
9
  describe "#comments_for(resource)" do
10
- it 'creates comments for a page if one is given' do
10
+ it "creates comments for a page if one is given" do
11
11
  dummy_resource = create(:dummy_resource)
12
12
  subject.comments_for(dummy_resource)
13
13
  expect(Decidim::Comments::SortedComments.for(dummy_resource).length).to be_between(1, 5).inclusive
@@ -18,11 +18,11 @@ describe Decidim::Comments::SortedComments do
18
18
 
19
19
  it "eager loads comment's author, up_votes and down_votes" do
20
20
  comment = subject.query[0]
21
- expect {
21
+ expect do
22
22
  expect(comment.author.name).to be_present
23
23
  expect(comment.up_votes.size).to eq(0)
24
24
  expect(comment.down_votes.size).to eq(0)
25
- }.not_to make_database_queries
25
+ end.not_to make_database_queries
26
26
  end
27
27
 
28
28
  it "return the comments ordered by created_at asc by default" do
@@ -44,7 +44,7 @@ describe Decidim::Comments::SortedComments do
44
44
 
45
45
  context "When order_by is not default" do
46
46
  context "When order by recent" do
47
- let!(:order_by) {"recent"}
47
+ let!(:order_by) { "recent" }
48
48
 
49
49
  it "return the comments ordered by recent" do
50
50
  previous_comment = create(:comment, commentable: commentable, author: author, created_at: 1.week.ago, updated_at: 1.week.ago)
@@ -54,7 +54,7 @@ describe Decidim::Comments::SortedComments do
54
54
  end
55
55
 
56
56
  context "When order by best_rated" do
57
- let!(:order_by) {"best_rated"}
57
+ let!(:order_by) { "best_rated" }
58
58
 
59
59
  it "return the comments ordered by best_rated" do
60
60
  most_voted_comment = create(:comment, commentable: commentable, author: author, created_at: 1.week.ago, updated_at: 1.week.ago)
@@ -66,7 +66,7 @@ describe Decidim::Comments::SortedComments do
66
66
  end
67
67
 
68
68
  context "When order by most_discussed" do
69
- let!(:order_by) {"most_discussed"}
69
+ let!(:order_by) { "most_discussed" }
70
70
 
71
71
  it "return the comments ordered by most_discussed" do
72
72
  most_commented = create(:comment, commentable: commentable, author: author, created_at: 1.week.ago, updated_at: 1.week.ago)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  RSpec.shared_context "admin" do
2
3
  let(:organization) { create(:organization) }
3
4
  let!(:user) { create(:user, :admin, :confirmed, organization: organization) }
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  ENV["ENGINE_NAME"] = File.dirname(File.dirname(__FILE__)).split("/").last
2
3
 
3
4
  require "decidim/dev/test/base_spec_helper"
@@ -9,14 +9,10 @@ module Decidim
9
9
  let(:model) { create(:comment) }
10
10
 
11
11
  describe "upVote" do
12
- let(:query) {
13
- "{ upVote { upVoted } }"
14
- }
12
+ let(:query) { "{ upVote { upVoted } }" }
15
13
 
16
14
  before do
17
- allow(Decidim::Comments::VoteComment).to receive(:call).with(model, current_user, weight: 1).and_return (
18
- model
19
- )
15
+ allow(Decidim::Comments::VoteComment).to receive(:call).with(model, current_user, weight: 1).and_return(model)
20
16
  end
21
17
 
22
18
  it "should call UpVoteComment command" do
@@ -26,14 +22,10 @@ module Decidim
26
22
  end
27
23
 
28
24
  describe "downVote" do
29
- let(:query) {
30
- "{ downVote { downVoted } }"
31
- }
25
+ let(:query) { "{ downVote { downVoted } }" }
32
26
 
33
27
  before do
34
- allow(Decidim::Comments::VoteComment).to receive(:call).with(model, current_user, weight: -1).and_return (
35
- model
36
- )
28
+ allow(Decidim::Comments::VoteComment).to receive(:call).with(model, current_user, weight: -1).and_return(model)
37
29
  end
38
30
 
39
31
  it "should call UpVoteComment command" do
@@ -28,7 +28,7 @@ module Decidim
28
28
  end
29
29
 
30
30
  describe "hasComments" do
31
- let (:query) { "{ hasComments }" }
31
+ let(:query) { "{ hasComments }" }
32
32
 
33
33
  it "returns false if the comment has not comments" do
34
34
  expect(response).to include("hasComments" => false)
@@ -47,7 +47,7 @@ module Decidim
47
47
  end
48
48
 
49
49
  describe "acceptsNewComments" do
50
- let (:query) { "{ acceptsNewComments }" }
50
+ let(:query) { "{ acceptsNewComments }" }
51
51
 
52
52
  it "returns the return value of accepts_new_comments? method" do
53
53
  expect(response).to include("acceptsNewComments" => model.accepts_new_comments?)
@@ -56,8 +56,7 @@ module Decidim
56
56
 
57
57
  describe "comments" do
58
58
  let!(:random_comment) { FactoryGirl.create(:comment) }
59
- let!(:replies) { 3.times.map { |n| FactoryGirl.create(:comment, commentable: model, created_at: Time.now - n.days) } }
60
-
59
+ let!(:replies) { Array.new(3) { |n| FactoryGirl.create(:comment, commentable: model, created_at: Time.now - n.days) } }
61
60
 
62
61
  let(:query) { "{ comments { id } }" }
63
62
 
@@ -69,7 +68,7 @@ module Decidim
69
68
  end
70
69
 
71
70
  it "return comment's comments ordered by date" do
72
- response_ids = response["comments"].map{|reply| reply["id"].to_i }
71
+ response_ids = response["comments"].map { |reply| reply["id"].to_i }
73
72
  replies_ids = replies.sort_by(&:created_at).map(&:id)
74
73
  expect(response_ids).to eq(replies_ids)
75
74
  end
@@ -14,9 +14,9 @@ module Decidim
14
14
  let(:alignment) { 1 }
15
15
 
16
16
  describe "addComment" do
17
- let(:query) {
17
+ let(:query) do
18
18
  "{ addComment(body: \"#{body}\", alignment: #{alignment}) { body } }"
19
- }
19
+ end
20
20
 
21
21
  it "calls CreateComment command" do
22
22
  params = { "comment" => { "body" => body, "alignment" => alignment, "user_group_id" => nil } }
@@ -7,11 +7,11 @@ module Decidim
7
7
  describe MutationType do
8
8
  include_context "graphql type"
9
9
 
10
- describe "commentable" do
10
+ describe "commentable" do
11
11
  let!(:commentable) { create(:dummy_resource) }
12
- let(:query) {
12
+ let(:query) do
13
13
  "{ commentable(id: \"#{commentable.id}\", type: \"#{commentable.commentable_type}\") { id } }"
14
- }
14
+ end
15
15
 
16
16
  it "should fetch the commentable given its id and commentable_type" do
17
17
  expect(response["commentable"]).to include("id" => commentable.id.to_s)
@@ -20,9 +20,7 @@ module Decidim
20
20
 
21
21
  describe "comment" do
22
22
  let!(:comment) { create(:comment) }
23
- let(:query) {
24
- "{ comment(id: \"#{comment.id}\") { id } }"
25
- }
23
+ let(:query) { "{ comment(id: \"#{comment.id}\") { id } }" }
26
24
 
27
25
  it "should fetch the comment given its id" do
28
26
  expect(response["comment"]).to include("id" => comment.id.to_s)
@@ -10,7 +10,7 @@ describe Decidim::Api::QueryType do
10
10
 
11
11
  context "When the user is logged in" do
12
12
  it "return current user data" do
13
- expect(response["session"]).to include({ "user" => { "name" => current_user.name } })
13
+ expect(response["session"]).to include("user" => { "name" => current_user.name })
14
14
  end
15
15
  end
16
16
 
@@ -12,12 +12,12 @@ Gem::Specification.new do |s|
12
12
  s.summary = "Decidim Dev tools"
13
13
  s.description = "Utilities and tools we need to develop Decidim"
14
14
 
15
- s.files = Dir["{app,config,db,lib,vendor}/**/*", "LICENSE.txt", "Rakefile", "README.md"]
15
+ s.files = Dir["{app,config,db,lib,vendor}/**/*", "Rakefile", "README.md"]
16
16
 
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.12.0"
20
+ s.add_dependency "capybara", "~> 2.13.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"
@@ -25,15 +25,15 @@ Gem::Specification.new do |s|
25
25
  s.add_dependency "wisper-rspec", "~> 0.0.3"
26
26
  s.add_dependency "listen", "~> 3.1.0"
27
27
  s.add_dependency "launchy"
28
- s.add_dependency "i18n-tasks", "0.9.12"
28
+ s.add_dependency "i18n-tasks", "0.9.13"
29
29
  s.add_dependency "faker", "~> 1.7.3"
30
30
  s.add_dependency "poltergeist", "~> 1.14.0"
31
31
  s.add_dependency "rails-controller-testing", "~> 1.0.1"
32
32
  s.add_dependency "simplecov", "~> 0.13"
33
33
  s.add_dependency "codecov", "~> 0.1.9"
34
- s.add_dependency "rubocop", "~> 0.47"
35
- s.add_dependency "db-query-matchers", "~> 0.7.0"
34
+ s.add_dependency "rubocop", "~> 0.46.0"
35
+ s.add_dependency "db-query-matchers", "~> 0.8.0"
36
36
  s.add_dependency "letter_opener_web", "~> 1.3.0"
37
37
  s.add_dependency "rspec-html-matchers", "~> 0.9.1"
38
- s.add_dependency "webmock", "~> 2.3.2"
38
+ s.add_dependency "webmock", "~> 3.0.1"
39
39
  end
@@ -2,5 +2,9 @@
2
2
  require "bundler/gem_tasks"
3
3
  require "rspec/core/rake_task"
4
4
 
5
- RSpec::Core::RakeTask.new(:spec)
5
+ RSpec::Core::RakeTask.new(:spec) do |t|
6
+ # The i18n_spec part needs to go first or it won't be include. It seems like a
7
+ # bug in RSpec to me... https://github.com/rspec/rspec-core/issues/2418
8
+ t.rspec_opts = "--pattern #{__dir__}/test/i18n_spec.rb,**/*_spec.rb"
9
+ end
6
10
  task default: [:spec]
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Decidim
2
3
  module Dev
3
4
  class Railtie < Rails::Railtie