decidim 0.0.1 → 0.0.2

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 (313) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +4 -5
  3. data/.eslintignore +2 -0
  4. data/.eslintrc.json +2 -0
  5. data/.gitignore +1 -0
  6. data/.inch.yml +5 -0
  7. data/.mention-bot +8 -0
  8. data/.rubocop.yml +8 -31
  9. data/.ruby-version +1 -1
  10. data/.travis.yml +24 -14
  11. data/Dockerfile +1 -3
  12. data/Gemfile +1 -3
  13. data/Gemfile.lock +175 -138
  14. data/README.md +63 -5
  15. data/Rakefile +1 -1
  16. data/codecov.yml +1 -0
  17. data/decidim-admin/Rakefile +1 -1
  18. data/decidim-admin/app/assets/javascripts/decidim/admin/application.js.es6 +0 -1
  19. data/decidim-admin/app/assets/stylesheets/decidim/admin/_foundation_and_overrides.scss +1 -0
  20. data/decidim-admin/app/assets/stylesheets/decidim/admin/_icons.scss +9 -0
  21. data/decidim-admin/app/assets/stylesheets/decidim/admin/application.scss +1 -0
  22. data/decidim-admin/app/commands/decidim/admin/create_feature.rb +3 -1
  23. data/decidim-admin/app/commands/decidim/admin/create_participatory_process.rb +26 -14
  24. data/decidim-admin/app/commands/decidim/admin/destroy_feature.rb +5 -0
  25. data/decidim-admin/app/commands/decidim/admin/destroy_participatory_process_step.rb +29 -0
  26. data/decidim-admin/app/commands/decidim/admin/update_feature.rb +47 -0
  27. data/decidim-admin/app/commands/decidim/admin/update_organization.rb +3 -1
  28. data/decidim-admin/app/controllers/decidim/admin/features_controller.rb +37 -2
  29. data/decidim-admin/app/controllers/decidim/admin/participatory_process_step_activations_controller.rb +0 -16
  30. data/decidim-admin/app/controllers/decidim/admin/participatory_process_steps_controller.rb +10 -3
  31. data/decidim-admin/app/controllers/decidim/admin/static_pages_controller.rb +4 -4
  32. data/decidim-admin/app/controllers/decidim/admin/user_groups_controller.rb +32 -0
  33. data/decidim-admin/app/controllers/decidim/admin/users_controller.rb +87 -0
  34. data/decidim-admin/app/forms/decidim/admin/category_form.rb +1 -7
  35. data/decidim-admin/app/forms/decidim/admin/feature_form.rb +26 -0
  36. data/decidim-admin/app/forms/decidim/admin/organization_form.rb +2 -0
  37. data/decidim-admin/app/forms/decidim/admin/participatory_process_step_form.rb +1 -1
  38. data/decidim-admin/app/forms/decidim/admin/static_page_form.rb +2 -3
  39. data/decidim-admin/app/models/decidim/admin/abilities/admin_user.rb +6 -0
  40. data/decidim-admin/app/views/decidim/admin/features/_feature.html.erb +4 -1
  41. data/decidim-admin/app/views/decidim/admin/features/_form.html.erb +49 -0
  42. data/decidim-admin/app/views/decidim/admin/features/_settings_fields.html.erb +5 -0
  43. data/decidim-admin/app/views/decidim/admin/features/edit.html.erb +9 -0
  44. data/decidim-admin/app/views/decidim/admin/features/index.html.erb +6 -0
  45. data/decidim-admin/app/views/decidim/admin/features/new.html.erb +1 -1
  46. data/decidim-admin/app/views/decidim/admin/organization/_form.html.erb +8 -0
  47. data/decidim-admin/app/views/decidim/admin/participatory_process_attachments/_form.html.erb +1 -1
  48. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/index.html.erb +2 -6
  49. data/decidim-admin/app/views/decidim/admin/user_groups/index.html.erb +32 -0
  50. data/decidim-admin/app/views/decidim/admin/users/_form.html.erb +6 -0
  51. data/decidim-admin/app/views/decidim/admin/users/index.html.erb +54 -0
  52. data/decidim-admin/app/views/decidim/admin/users/new.html.erb +11 -0
  53. data/decidim-admin/app/views/layouts/decidim/admin/_sidebar.html.erb +2 -0
  54. data/decidim-admin/app/views/layouts/decidim/admin/participatory_process.html.erb +1 -1
  55. data/decidim-admin/config/i18n-tasks.yml +1 -0
  56. data/decidim-admin/config/locales/ca.yml +103 -5
  57. data/decidim-admin/config/locales/en.yml +57 -4
  58. data/decidim-admin/config/locales/es.yml +103 -5
  59. data/decidim-admin/config/routes.rb +11 -0
  60. data/decidim-admin/decidim-admin.gemspec +2 -3
  61. data/decidim-admin/lib/decidim/admin/features/base_controller.rb +7 -3
  62. data/decidim-admin/lib/decidim/admin/test/factories.rb +8 -0
  63. data/decidim-admin/spec/commands/create_category_spec.rb +2 -1
  64. data/decidim-admin/spec/commands/create_feature_spec.rb +21 -2
  65. data/decidim-admin/spec/commands/create_participatory_process_spec.rb +13 -1
  66. data/decidim-admin/spec/commands/create_static_page_spec.rb +1 -1
  67. data/decidim-admin/spec/commands/destroy_participatory_process_step_spec.rb +45 -0
  68. data/decidim-admin/spec/commands/update_category_spec.rb +2 -1
  69. data/decidim-admin/spec/commands/update_feature_spec.rb +79 -0
  70. data/decidim-admin/spec/commands/update_organization_spec.rb +3 -2
  71. data/decidim-admin/spec/commands/update_static_page_spec.rb +3 -2
  72. data/decidim-admin/spec/factories.rb +2 -9
  73. data/decidim-admin/spec/features/admin_manages_features_spec.rb +84 -2
  74. data/decidim-admin/spec/features/admin_manages_organization_admins_spec.rb +71 -0
  75. data/decidim-admin/spec/features/admin_manages_user_groups_spec.rb +24 -0
  76. data/decidim-admin/spec/forms/category_form_spec.rb +3 -7
  77. data/decidim-admin/spec/forms/organization_form_spec.rb +8 -2
  78. data/decidim-admin/spec/forms/participatory_process_form_spec.rb +2 -1
  79. data/decidim-admin/spec/forms/participatory_process_step_form_spec.rb +2 -21
  80. data/decidim-admin/spec/forms/scope_form_spec.rb +1 -1
  81. data/decidim-admin/spec/forms/static_page_form_spec.rb +2 -7
  82. data/decidim-admin/spec/models/abilities/admin_user_spec.rb +22 -0
  83. data/decidim-admin/spec/shared/manage_process_attachments_examples.rb +2 -1
  84. data/decidim-admin/spec/shared/manage_process_steps_examples.rb +2 -15
  85. data/decidim-admin/spec/spec_helper.rb +3 -1
  86. data/decidim-api/Rakefile +1 -1
  87. data/decidim-api/decidim-api.gemspec +3 -3
  88. data/decidim-api/spec/factories.rb +2 -2
  89. data/decidim-api/spec/spec_helper.rb +3 -1
  90. data/decidim-comments/Rakefile +1 -1
  91. data/decidim-comments/app/assets/javascripts/decidim/comments/bundle.js +0 -0
  92. data/decidim-comments/app/commands/decidim/comments/vote_comment.rb +38 -0
  93. data/decidim-comments/app/frontend/application/icon.component.jsx +9 -4
  94. data/decidim-comments/app/frontend/application/icon.component.test.jsx +12 -2
  95. data/decidim-comments/app/frontend/comments/add_comment_form.component.jsx +43 -11
  96. data/decidim-comments/app/frontend/comments/add_comment_form.mutation.graphql +1 -4
  97. data/decidim-comments/app/frontend/comments/comment.component.jsx +67 -7
  98. data/decidim-comments/app/frontend/comments/comment.component.test.jsx +49 -1
  99. data/decidim-comments/app/frontend/comments/comment_data.fragment.graphql +3 -0
  100. data/decidim-comments/app/frontend/comments/comment_order_selector.component.jsx +51 -6
  101. data/decidim-comments/app/frontend/comments/comment_order_selector.component.test.jsx +12 -1
  102. data/decidim-comments/app/frontend/comments/comment_thread.component.jsx +11 -5
  103. data/decidim-comments/app/frontend/comments/comment_thread.component.test.jsx +13 -3
  104. data/decidim-comments/app/frontend/comments/comment_thread.fragment.graphql +1 -3
  105. data/decidim-comments/app/frontend/comments/comments.component.jsx +37 -11
  106. data/decidim-comments/app/frontend/comments/comments.component.test.jsx +44 -7
  107. data/decidim-comments/app/frontend/comments/comments.query.graphql +2 -2
  108. data/decidim-comments/app/frontend/comments/down_vote.fragment.graphql +6 -0
  109. data/decidim-comments/app/frontend/comments/down_vote.mutation.graphql +7 -0
  110. data/decidim-comments/app/frontend/comments/down_vote_button.component.jsx +84 -0
  111. data/decidim-comments/app/frontend/comments/down_vote_button.component.test.jsx +48 -0
  112. data/decidim-comments/app/frontend/comments/up_vote.fragment.graphql +6 -0
  113. data/decidim-comments/app/frontend/comments/up_vote.mutation.graphql +7 -0
  114. data/decidim-comments/app/frontend/comments/up_vote_button.component.jsx +84 -0
  115. data/decidim-comments/app/frontend/comments/up_vote_button.component.test.jsx +48 -0
  116. data/decidim-comments/app/frontend/comments/vote_button.component.jsx +19 -0
  117. data/decidim-comments/app/frontend/comments/vote_button_component.test.jsx +38 -0
  118. data/decidim-comments/app/frontend/support/generate_comments_data.js +7 -2
  119. data/decidim-comments/app/helpers/decidim/comments/comments_helper.rb +1 -1
  120. data/decidim-comments/app/models/decidim/comments/application_record.rb +9 -0
  121. data/decidim-comments/app/models/decidim/comments/comment.rb +19 -4
  122. data/decidim-comments/app/models/decidim/comments/comment_vote.rb +22 -0
  123. data/decidim-comments/app/models/decidim/comments/seed.rb +27 -0
  124. data/decidim-comments/app/queries/decidim/comments/comments_with_replies.rb +88 -0
  125. data/decidim-comments/app/resolvers/decidim/comments/vote_comment_resolver.rb +20 -0
  126. data/decidim-comments/app/types/decidim/comments/comment_mutation_type.rb +19 -0
  127. data/decidim-comments/app/types/decidim/comments/comment_type.rb +38 -2
  128. data/decidim-comments/config/locales/en.yml +1 -0
  129. data/decidim-comments/db/migrate/20161130143508_create_comments.rb +4 -2
  130. data/decidim-comments/db/migrate/20161219150806_create_comment_votes.rb +13 -0
  131. data/decidim-comments/decidim-comments.gemspec +0 -3
  132. data/decidim-comments/lib/decidim/comments/mutation_extensions.rb +9 -0
  133. data/decidim-comments/lib/decidim/comments/query_extensions.rb +3 -5
  134. data/decidim-comments/lib/decidim/comments/test/factories.rb +22 -0
  135. data/decidim-comments/spec/commands/vote_comment_spec.rb +124 -0
  136. data/decidim-comments/spec/factories.rb +2 -9
  137. data/decidim-comments/spec/features/comments_spec.rb +37 -0
  138. data/decidim-comments/spec/models/comment_spec.rb +34 -0
  139. data/decidim-comments/spec/models/comment_vote_spec.rb +44 -0
  140. data/decidim-comments/spec/models/seed_spec.rb +19 -0
  141. data/decidim-comments/spec/queries/comments_with_replies_spec.rb +86 -0
  142. data/decidim-comments/spec/spec_helper.rb +3 -1
  143. data/decidim-comments/spec/support/dummy.rb +1 -1
  144. data/decidim-comments/spec/types/comment_mutation_type_spec.rb +46 -0
  145. data/decidim-comments/spec/types/comment_type_spec.rb +57 -3
  146. data/{decidim-api → decidim-comments}/spec/types/mutation_type_spec.rb +11 -0
  147. data/decidim-dev/README.md +7 -11
  148. data/decidim-dev/decidim-dev.gemspec +5 -4
  149. data/decidim-dev/lib/decidim/dev.rb +20 -0
  150. data/decidim-dev/lib/decidim/dev/assets/Exampledocument.docx +0 -0
  151. data/decidim-dev/lib/decidim/dev/assets/Exampledocument.odt +0 -0
  152. data/decidim-dev/lib/decidim/dev/assets/Exampledocument.pdf +0 -0
  153. data/decidim-dev/lib/decidim/dev/assets/avatar.svg +14 -0
  154. data/decidim-dev/lib/decidim/dev/assets/city.jpeg +0 -0
  155. data/decidim-dev/lib/decidim/dev/assets/city2.jpeg +0 -0
  156. data/decidim-dev/lib/decidim/dev/assets/city3.jpeg +0 -0
  157. data/decidim-dev/lib/decidim/dev/assets/malicious.jpg +0 -0
  158. data/decidim-dev/lib/decidim/{common_rake.rb → dev/common_rake.rb} +1 -1
  159. data/decidim-dev/lib/decidim/{dummy_authorization_handler.rb → dev/dummy_authorization_handler.rb} +4 -4
  160. data/decidim-dev/lib/decidim/{test → dev/test}/authorization_shared_examples.rb +0 -8
  161. data/decidim-dev/lib/decidim/{test → dev/test}/base_spec_helper.rb +4 -1
  162. data/decidim-dev/lib/decidim/{test → dev/test}/i18n_spec.rb +1 -1
  163. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/action_mailer.rb +0 -0
  164. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/active_job.rb +0 -0
  165. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/authenticated_controller_context.rb +0 -0
  166. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/authorization_handlers.rb +1 -1
  167. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/capybara.rb +3 -10
  168. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/database_cleaner.rb +0 -0
  169. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/engine_routes.rb +0 -0
  170. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/factory_girl.rb +0 -0
  171. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/feature.rb +10 -0
  172. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/feature_context.rb +2 -2
  173. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/helpers.rb +4 -0
  174. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/i18n.rb +1 -0
  175. data/decidim-dev/lib/decidim/dev/test/rspec_support/phantomjs_polyfills/bind-polyfill.js +18 -0
  176. data/decidim-dev/lib/decidim/dev/test/rspec_support/phantomjs_polyfills/object-assign-polyfill.js +24 -0
  177. data/decidim-dev/lib/decidim/dev/test/rspec_support/phantomjs_polyfills/promise.js +233 -0
  178. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/translation_helpers.rb +0 -0
  179. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/warden.rb +0 -0
  180. data/decidim-dev/lib/decidim/{test → dev/test}/rspec_support/wisper.rb +0 -0
  181. data/decidim-dev/lib/generators/decidim/dummy_generator.rb +2 -2
  182. data/decidim-dev/lib/generators/decidim/templates/decidim_dev.rb +2 -0
  183. data/decidim-meetings/Rakefile +1 -1
  184. data/decidim-meetings/app/assets/images/decidim/meetings/icon.svg +1 -0
  185. data/decidim-meetings/app/commands/decidim/meetings/admin/create_meeting.rb +2 -0
  186. data/decidim-meetings/app/commands/decidim/meetings/admin/update_meeting.rb +2 -0
  187. data/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb +30 -6
  188. data/decidim-meetings/app/forms/decidim/meetings/admin/meeting_form.rb +14 -0
  189. data/decidim-meetings/app/helpers/decidim/meetings/application_helper.rb +10 -0
  190. data/decidim-meetings/app/models/decidim/meetings/meeting.rb +18 -1
  191. data/decidim-meetings/app/services/decidim/meetings/meeting_search.rb +48 -0
  192. data/decidim-meetings/app/views/decidim/meetings/admin/meetings/_form.html.erb +9 -2
  193. data/decidim-meetings/app/views/decidim/meetings/meetings/_filters.html.erb +24 -0
  194. data/decidim-meetings/app/views/decidim/meetings/meetings/_meetings.html.erb +30 -0
  195. data/decidim-meetings/app/views/decidim/meetings/meetings/_tags.html.erb +10 -0
  196. data/decidim-meetings/app/views/decidim/meetings/meetings/index.html.erb +8 -26
  197. data/decidim-meetings/app/views/decidim/meetings/meetings/index.js.erb +2 -0
  198. data/decidim-meetings/app/views/decidim/meetings/meetings/show.html.erb +1 -0
  199. data/decidim-meetings/config/locales/ca.yml +7 -0
  200. data/decidim-meetings/config/locales/en.yml +7 -0
  201. data/decidim-meetings/config/locales/es.yml +7 -0
  202. data/decidim-meetings/db/migrate/20161130121354_create_meetings.rb +2 -0
  203. data/decidim-meetings/decidim-meetings.gemspec +2 -0
  204. data/decidim-meetings/lib/decidim/meetings/feature.rb +7 -2
  205. data/decidim-meetings/lib/decidim/meetings/list_engine.rb +3 -0
  206. data/decidim-meetings/spec/commands/create_meeting_spec.rb +21 -0
  207. data/decidim-meetings/spec/commands/update_meeting_spec.rb +17 -2
  208. data/decidim-meetings/spec/factories.rb +3 -3
  209. data/decidim-meetings/spec/features/explore_meetings_spec.rb +53 -0
  210. data/decidim-meetings/spec/forms/meeting_form_spec.rb +19 -1
  211. data/decidim-meetings/spec/models/meeting_spec.rb +20 -0
  212. data/decidim-meetings/spec/services/meeting_search_spec.rb +146 -0
  213. data/decidim-meetings/spec/shared/admin_shared_context.rb +4 -2
  214. data/decidim-meetings/spec/shared/manage_meetings_examples.rb +5 -2
  215. data/decidim-meetings/spec/spec_helper.rb +1 -1
  216. data/decidim-pages/Rakefile +1 -1
  217. data/decidim-pages/app/assets/images/decidim/pages/icon.svg +3 -0
  218. data/decidim-pages/app/commands/decidim/pages/admin/update_page.rb +1 -2
  219. data/decidim-pages/app/forms/decidim/pages/admin/page_form.rb +0 -1
  220. data/decidim-pages/app/views/decidim/pages/admin/pages/_form.html.erb +0 -1
  221. data/decidim-pages/app/views/decidim/pages/application/show.html.erb +3 -3
  222. data/decidim-pages/config/i18n-tasks.yml +1 -0
  223. data/decidim-pages/config/locales/ca.yml +5 -1
  224. data/decidim-pages/config/locales/en.yml +5 -1
  225. data/decidim-pages/config/locales/es.yml +5 -1
  226. data/decidim-pages/db/migrate/20170110145040_remove_commentable_flag_from_pages.rb +5 -0
  227. data/decidim-pages/lib/decidim/pages/feature.rb +13 -3
  228. data/decidim-pages/spec/commands/update_page_spec.rb +2 -1
  229. data/decidim-pages/spec/factories.rb +2 -2
  230. data/decidim-pages/spec/features/admin_spec.rb +0 -11
  231. data/decidim-pages/spec/features/page_show_spec.rb +13 -10
  232. data/decidim-pages/spec/forms/page_form_spec.rb +4 -4
  233. data/decidim-pages/spec/spec_helper.rb +3 -1
  234. data/decidim-proposals/Rakefile +1 -1
  235. data/decidim-proposals/app/assets/config/decidim_proposals_manifest.css +1 -0
  236. data/decidim-proposals/app/assets/config/decidim_proposals_manifest.js +1 -0
  237. data/decidim-proposals/app/assets/images/decidim/proposals/icon.svg +1 -0
  238. data/decidim-proposals/app/assets/javascripts/decidim/proposals/social_share.js +2 -0
  239. data/decidim-proposals/app/assets/stylesheets/decidim/proposals/social_share.css.scss +14 -0
  240. data/decidim-proposals/app/commands/decidim/proposals/create_proposal.rb +5 -3
  241. data/decidim-proposals/app/controllers/decidim/proposals/admin/proposals_controller.rb +3 -3
  242. data/decidim-proposals/app/controllers/decidim/proposals/proposal_votes_controller.rb +25 -0
  243. data/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb +33 -6
  244. data/decidim-proposals/app/forms/decidim/proposals/admin/proposal_form.rb +7 -6
  245. data/decidim-proposals/app/forms/decidim/proposals/proposal_form.rb +6 -6
  246. data/decidim-proposals/app/helpers/decidim/proposals/application_helper.rb +3 -1
  247. data/decidim-proposals/app/helpers/decidim/proposals/proposal_votes_helper.rb +27 -0
  248. data/decidim-proposals/app/models/decidim/proposals/proposal.rb +8 -0
  249. data/decidim-proposals/app/models/decidim/proposals/proposal_vote.rb +20 -0
  250. data/decidim-proposals/app/services/decidim/proposals/proposal_search.rb +39 -11
  251. data/decidim-proposals/app/views/decidim/proposals/admin/proposals/_form.html.erb +2 -2
  252. data/decidim-proposals/app/views/decidim/proposals/proposal_votes/create.js.erb +5 -0
  253. data/decidim-proposals/app/views/decidim/proposals/proposals/_count.html.erb +1 -0
  254. data/decidim-proposals/app/views/decidim/proposals/proposals/_filters.html.erb +26 -0
  255. data/decidim-proposals/app/views/decidim/proposals/proposals/_proposal.html.erb +11 -2
  256. data/decidim-proposals/app/views/decidim/proposals/proposals/_proposals.html.erb +4 -0
  257. data/decidim-proposals/app/views/decidim/proposals/proposals/_share.html.erb +33 -0
  258. data/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb +13 -0
  259. data/decidim-proposals/app/views/decidim/proposals/proposals/_votes_count.html.erb +6 -0
  260. data/decidim-proposals/app/views/decidim/proposals/proposals/index.html.erb +11 -11
  261. data/decidim-proposals/app/views/decidim/proposals/proposals/index.js.erb +5 -0
  262. data/decidim-proposals/app/views/decidim/proposals/proposals/show.html.erb +31 -4
  263. data/decidim-proposals/config/i18n-tasks.yml +1 -0
  264. data/decidim-proposals/config/initializers/social_share_button.rb +4 -0
  265. data/decidim-proposals/config/locales/ca.yml +28 -2
  266. data/decidim-proposals/config/locales/en.yml +27 -1
  267. data/decidim-proposals/config/locales/es.yml +28 -2
  268. data/decidim-proposals/db/migrate/20170112115253_create_proposal_votes.rb +12 -0
  269. data/decidim-proposals/db/migrate/20170113114245_add_text_search_indexes.rb +6 -0
  270. data/decidim-proposals/db/migrate/20170118120151_add_counter_cache_votes_to_proposals.rb +5 -0
  271. data/decidim-proposals/decidim-proposals.gemspec +2 -1
  272. data/decidim-proposals/lib/decidim/proposals/engine.rb +8 -1
  273. data/decidim-proposals/lib/decidim/proposals/feature.rb +30 -4
  274. data/decidim-proposals/spec/commands/decidim/proposals/create_proposal_spec.rb +10 -3
  275. data/decidim-proposals/spec/factories.rb +9 -4
  276. data/decidim-proposals/spec/features/admin_manages_proposals_spec.rb +2 -0
  277. data/decidim-proposals/spec/features/process_admin_manages_proposals_spec.rb +2 -0
  278. data/decidim-proposals/spec/features/proposals_spec.rb +41 -31
  279. data/decidim-proposals/spec/features/vote_proposal_spec.rb +78 -0
  280. data/decidim-proposals/spec/forms/decidim/proposals/proposal_form_spec.rb +11 -10
  281. data/decidim-proposals/spec/helpers/proposal_votes_helper_spec.rb +28 -0
  282. data/decidim-proposals/spec/lib/decidim/proposals/feature_spec.rb +1 -1
  283. data/decidim-proposals/spec/models/decidim/proposals/proposal_spec.rb +20 -3
  284. data/decidim-proposals/spec/models/decidim/proposals/proposal_vote_spec.rb +43 -0
  285. data/decidim-proposals/spec/services/decidim/proposals/proposal_search_spec.rb +50 -4
  286. data/decidim-proposals/spec/shared/manage_proposals_examples.rb +1 -1
  287. data/decidim-proposals/spec/spec_helper.rb +1 -1
  288. data/decidim-system/Rakefile +1 -1
  289. data/decidim-system/app/commands/decidim/system/register_organization.rb +13 -12
  290. data/decidim-system/decidim-system.gemspec +2 -3
  291. data/decidim-system/spec/factories.rb +1 -1
  292. data/decidim-system/spec/spec_helper.rb +3 -1
  293. data/docs/social_providers.md +41 -0
  294. data/karma.conf.js +4 -2
  295. data/lib/generators/decidim/app_generator.rb +6 -0
  296. data/lib/generators/decidim/demo_generator.rb +2 -2
  297. data/lib/generators/decidim/install_generator.rb +5 -4
  298. data/lib/generators/decidim/templates/Gemfile.erb +3 -5
  299. data/lib/generators/decidim/templates/initializer.rb +1 -1
  300. data/lib/generators/decidim/templates/secrets.yml.erb +26 -0
  301. data/lib/generators/decidim/templates/social_share_button.rb +7 -0
  302. data/package.json +16 -6
  303. data/webpack.config.js +23 -8
  304. data/yarn.lock +401 -345
  305. metadata +130 -48
  306. data/Gemfile.common +0 -1
  307. data/decidim-admin/Gemfile +0 -6
  308. data/decidim-comments/Gemfile +0 -6
  309. data/decidim-comments/package.json +0 -21
  310. data/decidim-dev/Gemfile +0 -6
  311. data/decidim-dev/lib/decidim/test/rspec_support/bullet.rb +0 -15
  312. data/decidim-dev/lib/generators/decidim/templates/bullet.rb +0 -6
  313. data/decidim-system/Gemfile +0 -6
@@ -12,8 +12,21 @@ module Decidim
12
12
  describe "createdAt" do
13
13
  let(:query) { "{ createdAt }" }
14
14
 
15
- it "returns its created_at field" do
16
- expect(response).to include("createdAt" => model.created_at.to_s)
15
+ it "returns its created_at field to iso format" do
16
+ expect(response).to include("createdAt" => model.created_at.iso8601)
17
+ end
18
+ end
19
+
20
+ describe "hasReplies" do
21
+ let (:query) { "{ hasReplies }" }
22
+
23
+ it "returns false if the comment has not replies" do
24
+ expect(response).to include("hasReplies" => false)
25
+ end
26
+
27
+ it "returns true if the comment has replies" do
28
+ FactoryGirl.create(:comment, commentable: model)
29
+ expect(response).to include("hasReplies" => true)
17
30
  end
18
31
  end
19
32
 
@@ -27,7 +40,8 @@ module Decidim
27
40
 
28
41
  describe "replies" do
29
42
  let!(:random_comment) { FactoryGirl.create(:comment) }
30
- let!(:replies) { 3.times.map { FactoryGirl.create(:comment, commentable: model) } }
43
+ let!(:replies) { 3.times.map { |n| FactoryGirl.create(:comment, commentable: model, created_at: Time.now - n.days) } }
44
+
31
45
 
32
46
  let(:query) { "{ replies { id } }" }
33
47
 
@@ -37,6 +51,12 @@ module Decidim
37
51
  end
38
52
  expect(response["replies"]).to_not include("id" => random_comment.id.to_s)
39
53
  end
54
+
55
+ it "return comment's replies ordered by date" do
56
+ response_ids = response["replies"].map{|reply| reply["id"].to_i }
57
+ replies_ids = replies.sort_by(&:created_at).map(&:id)
58
+ expect(response_ids).to eq(replies_ids)
59
+ end
40
60
  end
41
61
 
42
62
  describe "alignment" do
@@ -46,6 +66,40 @@ module Decidim
46
66
  expect(response).to include("alignment" => model.alignment)
47
67
  end
48
68
  end
69
+
70
+ describe "upVotes" do
71
+ let(:query) { "{ upVotes }" }
72
+
73
+ it "returns the up_votes count" do
74
+ expect(response).to include("upVotes" => model.up_votes.count)
75
+ end
76
+ end
77
+
78
+ describe "downVotes" do
79
+ let(:query) { "{ downVotes }" }
80
+
81
+ it "returns the down_votes count" do
82
+ expect(response).to include("downVotes" => model.down_votes.count)
83
+ end
84
+ end
85
+
86
+ describe "upVoted" do
87
+ let(:query) { "{ upVoted }" }
88
+
89
+ it "returns the up_voted_by? method evaluation with the current user" do
90
+ expect(model).to receive(:up_voted_by?).with(current_user).and_return(true)
91
+ expect(response).to include("upVoted" => true)
92
+ end
93
+ end
94
+
95
+ describe "downVoted" do
96
+ let(:query) { "{ downVoted }" }
97
+
98
+ it "returns the down_voted_by? method evaluation with the current user" do
99
+ expect(model).to receive(:down_voted_by?).with(current_user).and_return(true)
100
+ expect(response).to include("downVoted" => true)
101
+ end
102
+ end
49
103
  end
50
104
  end
51
105
  end
@@ -33,6 +33,17 @@ module Decidim
33
33
  end
34
34
  end
35
35
  end
36
+
37
+ describe "comment" do
38
+ let!(:comment) { create(:comment) }
39
+ let(:query) {
40
+ "{ comment(id: \"#{comment.id}\") { id } }"
41
+ }
42
+
43
+ it "should fetch the comment given its id" do
44
+ expect(response["comment"]).to include("id" => comment.id.to_s)
45
+ end
46
+ end
36
47
  end
37
48
  end
38
49
  end
@@ -1,14 +1,15 @@
1
- # Decidim::System
2
- Short description and motivation.
1
+ # Decidim::Dev
2
+
3
+ This gem allows local development of decidim's features and other features.
3
4
 
4
5
  ## Usage
5
- How to use my plugin.
6
+ TODO: Write docs.
6
7
 
7
8
  ## Installation
8
9
  Add this line to your application's Gemfile:
9
10
 
10
11
  ```ruby
11
- gem 'decidim-system'
12
+ gem 'decidim-dev'
12
13
  ```
13
14
 
14
15
  And then execute:
@@ -16,13 +17,8 @@ And then execute:
16
17
  $ bundle
17
18
  ```
18
19
 
19
- Or install it yourself as:
20
- ```bash
21
- $ gem install decidim-system
22
- ```
23
-
24
20
  ## Contributing
25
- Contribution directions go here.
21
+ See [Decidim](https://github.com/AjuntamentdeBarcelona/decidim).
26
22
 
27
23
  ## License
28
- The gem is available as open source under the terms of the [AGPLv3 License](https://opensource.org/licenses/AGPL-3.0).
24
+ See [Decidim](https://github.com/AjuntamentdeBarcelona/decidim).
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.files = Dir["{app,config,db,lib,vendor}/**/*", "LICENSE.txt", "Rakefile", "README.md"]
16
16
 
17
+ s.add_dependency "decidim", Decidim.version
17
18
  s.add_dependency "factory_girl_rails"
18
19
  s.add_dependency "database_cleaner", "~> 1.5.0"
19
20
  s.add_dependency "capybara", "~> 2.11.0"
@@ -24,12 +25,12 @@ Gem::Specification.new do |s|
24
25
  s.add_dependency "wisper-rspec"
25
26
  s.add_dependency "listen", "~> 3.1.0"
26
27
  s.add_dependency "launchy"
27
- s.add_dependency "i18n-tasks", "~> 0.9.6"
28
- s.add_dependency "bullet", "~> 5.4.3"
29
- s.add_dependency "faker", "~> 1.6.6"
28
+ s.add_dependency "i18n-tasks", "0.9.8"
29
+ s.add_dependency "faker", "~> 1.7.2"
30
30
  s.add_dependency "poltergeist", "~> 1.12.0"
31
31
  s.add_dependency "rails-controller-testing", "~> 1.0.1"
32
32
  s.add_dependency "simplecov", "~> 0.12"
33
33
  s.add_dependency "codecov", "~> 0.1.9"
34
- s.add_dependency "rubocop", "~> 0.46"
34
+ s.add_dependency "rubocop", "~> 0.47"
35
+ s.add_dependency "db-query-matchers", "~> 0.7.0"
35
36
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ # Decidim::Dev holds all the convenience logic and libraries to be able to
5
+ # create external libraries that create test apps and test themselves against
6
+ # them.
7
+ module Dev
8
+ # Public: Finds an asset.
9
+ #
10
+ # Returns a String with the path for a particular asset.
11
+ def self.asset(name)
12
+ File.join(
13
+ File.dirname(__FILE__),
14
+ "dev",
15
+ "assets",
16
+ name
17
+ )
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="200px" height="200px" viewBox="0 0 200 200" enable-background="new 0 0 200 200" xml:space="preserve">
6
+ <g>
7
+ <path fill="#C5C5C5" d="M200-0.5H0v200h26.099c2.885-35.293,24.07-64.381,52.419-74.319C64.372,117.596,54.75,102.674,54.75,85.5
8
+ c0-24.853,20.146-45,45-45c24.853,0,45,20.147,45,45c0,17.095-9.533,31.963-23.572,39.58c28.5,9.837,49.828,39.002,52.724,74.42
9
+ H200V-0.5z"/>
10
+ <path fill="#FFFFFF" d="M121.178,125.08c14.039-7.617,23.572-22.485,23.572-39.58c0-24.853-20.147-45-45-45
11
+ c-24.854,0-45,20.147-45,45c0,17.174,9.622,32.096,23.768,39.681c-28.349,9.938-49.534,39.026-52.419,74.319h147.803
12
+ C171.006,164.082,149.678,134.917,121.178,125.08z"/>
13
+ </g>
14
+ </svg>
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require "bundler/gem_tasks"
3
3
  require "rspec/core/rake_task"
4
- require_relative "../generators/decidim/dummy_generator"
4
+ require_relative "../../generators/decidim/dummy_generator"
5
5
 
6
6
  engine_path = Dir.pwd
7
7
  engine_name = engine_path.split("/").last
@@ -8,14 +8,14 @@ module Decidim
8
8
  validates :document_number, presence: true
9
9
  validate :valid_document_number
10
10
 
11
- def authorized?
12
- valid?
13
- end
14
-
15
11
  def metadata
16
12
  super.merge(document_number: document_number)
17
13
  end
18
14
 
15
+ def unique_id
16
+ document_number
17
+ end
18
+
19
19
  private
20
20
 
21
21
  def valid_document_number
@@ -6,14 +6,6 @@ RSpec.shared_examples "an authorization handler" do
6
6
  end
7
7
  end
8
8
 
9
- describe "authorized?" do
10
- it "is implemented" do
11
- expect do
12
- handler.authorized?
13
- end.to_not raise_error
14
- end
15
- end
16
-
17
9
  describe "to_partial_path" do
18
10
  subject { handler.to_partial_path }
19
11
  it { is_expected.to be_kind_of(String) }
@@ -6,6 +6,8 @@ dummy_app_path = File.expand_path(File.join(Dir.pwd, "spec", "#{engine_name}_dum
6
6
 
7
7
  if ENV["CI"]
8
8
  require "simplecov"
9
+ SimpleCov.root(ENV["TRAVIS_BUILD_DIR"])
10
+
9
11
  SimpleCov.start do
10
12
  filters.clear
11
13
  add_filter "/test/"
@@ -43,11 +45,12 @@ require "database_cleaner"
43
45
  require "byebug"
44
46
  require "cancan/matchers"
45
47
  require "rectify/rspec"
48
+ require "wisper/rspec/stub_wisper_publisher"
49
+ require "db-query-matchers"
46
50
 
47
51
  # Requires supporting files with custom matchers and macros, etc,
48
52
  # in ./support/ and its subdirectories.
49
53
  Dir["#{File.dirname(__FILE__)}/rspec_support/**/*.rb"].each { |f| require f }
50
- Dir[File.join(File.dirname(__FILE__), "..", "..", "..", "..", engine_name, "spec", "support", "**", "*.rb")].each { |f| require f }
51
54
 
52
55
  RSpec.configure do |config|
53
56
  config.color = true
@@ -2,7 +2,7 @@
2
2
  require "i18n/tasks"
3
3
 
4
4
  RSpec.describe "I18n" do
5
- let(:i18n) { I18n::Tasks::BaseTask.new(locales: ["en"]) }
5
+ let(:i18n) { I18n::Tasks::BaseTask.new(locales: [I18n.default_locale]) }
6
6
  let(:missing_keys) { i18n.missing_keys }
7
7
  let(:unused_keys) { i18n.unused_keys }
8
8
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require "decidim/dummy_authorization_handler"
2
+ require "decidim/dev/dummy_authorization_handler"
3
3
  RSpec.configure do |config|
4
4
  config.before(:each) do
5
5
  Decidim.config.authorization_handlers = [Decidim::DummyAuthorizationHandler]
@@ -21,23 +21,16 @@ module Decidim
21
21
  end
22
22
  end
23
23
 
24
- node_modules_path = File.join(
25
- File.dirname(__FILE__), "..", "..", "..", "..", "..", "node_modules"
26
- )
27
-
28
24
  capybara_options = {
29
- phantomjs: File.expand_path(
30
- File.join(node_modules_path, ".bin", "phantomjs")
31
- ),
32
25
  extensions: [
33
26
  File.expand_path(
34
- File.join(node_modules_path, "promise-polyfill", "promise.js")
27
+ File.join(File.dirname(__FILE__), "phantomjs_polyfills", "promise.js")
35
28
  ),
36
29
  File.expand_path(
37
- File.join(node_modules_path, "phantomjs-polyfill", "bind-polyfill.js")
30
+ File.join(File.dirname(__FILE__), "phantomjs_polyfills", "bind-polyfill.js")
38
31
  ),
39
32
  File.expand_path(
40
- File.join(node_modules_path, "phantomjs-polyfill-object-assign", "object-assign-polyfill.js")
33
+ File.join(File.dirname(__FILE__), "phantomjs_polyfills", "object-assign-polyfill.js")
41
34
  )
42
35
  ],
43
36
  js_errors: true,
@@ -13,6 +13,16 @@ end
13
13
 
14
14
  Decidim.register_feature(:dummy) do |feature|
15
15
  feature.engine = Decidim::DummyEngine
16
+
17
+ feature.settings(:global) do |settings|
18
+ settings.attribute :dummy_global_attribute_1, type: :boolean
19
+ settings.attribute :dummy_global_attribute_2, type: :boolean
20
+ end
21
+
22
+ feature.settings(:step) do |settings|
23
+ settings.attribute :dummy_step_attribute_1, type: :boolean
24
+ settings.attribute :dummy_step_attribute_2, type: :boolean
25
+ end
16
26
  end
17
27
 
18
28
  RSpec.configure do |config|
@@ -6,7 +6,7 @@ RSpec.shared_context "feature" do
6
6
  let!(:organization) { create(:organization) }
7
7
 
8
8
  let(:participatory_process) do
9
- create(:participatory_process, organization: organization)
9
+ create(:participatory_process, :with_steps, organization: organization)
10
10
  end
11
11
 
12
12
  let!(:feature) do
@@ -20,7 +20,7 @@ RSpec.shared_context "feature" do
20
20
  end
21
21
 
22
22
  def visit_feature
23
- visit decidim.feature_path(participatory_process, feature)
23
+ page.visit decidim.feature_path(participatory_process, feature)
24
24
  end
25
25
  end
26
26
 
@@ -31,6 +31,10 @@ module Decidim::FeatureTestHelpers
31
31
  yield
32
32
  end
33
33
  end
34
+
35
+ def expect_user_logged
36
+ expect(page).to have_css(".topbar__user__logged")
37
+ end
34
38
  end
35
39
 
36
40
  def stripped(text)
@@ -2,6 +2,7 @@
2
2
  RSpec.configure do |config|
3
3
  config.before(:suite) do
4
4
  I18n.config.enforce_available_locales = false
5
+ Rails.application.config.action_view.raise_on_missing_translations = true
5
6
  end
6
7
 
7
8
  config.around(:each) do |example|
@@ -0,0 +1,18 @@
1
+ if (typeof Function.prototype.bind != 'function') {
2
+ Function.prototype.bind = function bind(obj) {
3
+ var args = Array.prototype.slice.call(arguments, 1),
4
+ self = this,
5
+ nop = function() {
6
+ },
7
+ bound = function() {
8
+ return self.apply(
9
+ this instanceof nop ? this : (obj || {}), args.concat(
10
+ Array.prototype.slice.call(arguments)
11
+ )
12
+ );
13
+ };
14
+ nop.prototype = this.prototype || {};
15
+ bound.prototype = new nop();
16
+ return bound;
17
+ };
18
+ }
@@ -0,0 +1,24 @@
1
+ //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
2
+ if (typeof Object.assign != 'function') {
3
+ (function () {
4
+ Object.assign = function (target) {
5
+ 'use strict';
6
+ if (target === undefined || target === null) {
7
+ throw new TypeError('Cannot convert undefined or null to object');
8
+ }
9
+
10
+ var output = Object(target);
11
+ for (var index = 1; index < arguments.length; index++) {
12
+ var source = arguments[index];
13
+ if (source !== undefined && source !== null) {
14
+ for (var nextKey in source) {
15
+ if (source.hasOwnProperty(nextKey)) {
16
+ output[nextKey] = source[nextKey];
17
+ }
18
+ }
19
+ }
20
+ }
21
+ return output;
22
+ };
23
+ })();
24
+ }