decidim-dev 0.23.4 → 0.24.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/app/forms/decidim/dummy_resources/dummy_resource_form.rb +5 -3
  3. data/lib/decidim/dev/assets/assemblies.json +2 -1
  4. data/lib/decidim/dev/assets/import_proposals.csv +6 -0
  5. data/lib/decidim/dev/assets/import_proposals.json +14 -0
  6. data/lib/decidim/dev/assets/import_proposals.xls +0 -0
  7. data/lib/decidim/dev/assets/import_proposals_broken.csv +6 -0
  8. data/lib/decidim/dev/assets/invalid.jpeg +0 -0
  9. data/lib/decidim/dev/assets/participatory_processes.json +1 -1
  10. data/lib/decidim/dev/assets/participatory_processes_with_null.json +1 -1
  11. data/lib/decidim/dev/assets/private_key.jwk +1 -0
  12. data/lib/decidim/dev/assets/private_key2.jwk +1 -0
  13. data/lib/decidim/dev/assets/public_key.jwk +1 -0
  14. data/lib/decidim/dev/assets/public_key2.jwk +1 -0
  15. data/lib/decidim/dev/test/base_spec_helper.rb +4 -4
  16. data/lib/decidim/dev/test/promoted_participatory_processes_shared_examples.rb +38 -4
  17. data/lib/decidim/dev/test/rspec_support/action_mailer.rb +1 -1
  18. data/lib/decidim/dev/test/rspec_support/capybara.rb +9 -1
  19. data/lib/decidim/dev/test/rspec_support/component.rb +18 -0
  20. data/lib/decidim/dev/test/rspec_support/component_context.rb +17 -5
  21. data/lib/decidim/dev/test/rspec_support/puffing_billy.rb +55 -0
  22. data/lib/decidim/dev/test/rspec_support/translation_helpers.rb +41 -1
  23. data/lib/decidim/dev/test/rspec_support/vcr.rb +27 -0
  24. data/lib/decidim/dev/test/rspec_support/{download_helper.rb → z_download_helper.rb} +13 -15
  25. data/lib/decidim/dev/test/spec_helper.rb +1 -1
  26. data/lib/decidim/dev/version.rb +1 -1
  27. metadata +71 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ecb3261f5bfbdf2b3ae8f2eeccff8ce069700f93a3b89cf9b98f9359ae2df57d
4
- data.tar.gz: 3c516f95733314f61cfb17c944097bfe1efb09ba46015b6b14b9cb77fb47386a
3
+ metadata.gz: b3d589abc0caa434bd34dbcc819a8745206c227c8e5902d8e969b9d0aaa2527f
4
+ data.tar.gz: 95ffca5e36acf9d9311143fbdb99fee9e7b581108b20b7d37c7ba410209369b4
5
5
  SHA512:
6
- metadata.gz: 99d70a8dbbdaf600c39d490ad65c22e119677de01e7f5d97739c1118fc7624d2ea5d984e430c4892dba336bc05c1e3f1a1abe7fe25ddfdc03614bb8d91641a46
7
- data.tar.gz: 2c54dd86c62a9e9acc749fa844b1b319ea141f481411c9c30c2f990d7b144917db791dec782dfa244990d0ed25f0172363acbbb7f448868b81552a17859f9919
6
+ metadata.gz: 934d4c04e7ab16f387da50fe981b2a801b2b5f3df1c8a9c808ef4de0a95f03b100946d55d6e08d7a9bc0bca5908891575cb71259139b61eea02f67a23bd7e4ca
7
+ data.tar.gz: 26edfc1d17d06c24cf45a7f59e81162d0b33c46763dbc405c34ecd42ecee1a831670d01286d0caa638fb5ae0cd82898e3f0d8937dca22b8dada1bc55ce6bfc33
@@ -3,16 +3,18 @@
3
3
  module Decidim
4
4
  module DummyResources
5
5
  class DummyResourceForm < Decidim::Form
6
+ include Decidim::AttachmentAttributes
7
+
6
8
  mimic :dummy_resource
7
9
 
8
10
  attribute :title, String
9
11
  attribute :body, String
10
12
  attribute :attachment, AttachmentForm
11
- attribute :photos, Array[String]
12
- attribute :add_photos, Array
13
+
14
+ attachments_attribute :photos
13
15
 
14
16
  validates :title, :body, presence: true, etiquette: true
15
- validates :title, length: { maximum: 150 }
17
+ validates :title, length: { in: 15..150 }
16
18
  end
17
19
  end
18
20
  end
@@ -486,6 +486,7 @@
486
486
  "default_registration_terms_es": null,
487
487
  "comments_enabled": true,
488
488
  "resources_permissions_enabled": true,
489
+ "registration_code_enabled": true,
489
490
  "enable_pads_creation": false
490
491
  },
491
492
  "weight": 0,
@@ -813,4 +814,4 @@
813
814
  }
814
815
  ]
815
816
  }
816
- ]
817
+ ]
@@ -0,0 +1,6 @@
1
+ title/en;body/en
2
+ Esse qui. Ut.;"Aliquid in ut. Laboriosam consequatur consequatur. Unde dolorem omnis.
3
+ Et earum aut. Quis enim quis. Dolore corporis et. Quia vel ex."
4
+ Nihil id.;"Atque qui aut. Quia et incidunt. Qui nihil dolore.
5
+ Delectus asperiores nihil. Sapiente omnis culpa. Eos at voluptatem."
6
+ Suspendisse lobortis;Lorem ipsum dolor sit amet, consectetur adipiscing elit.
@@ -0,0 +1,14 @@
1
+ [
2
+ {
3
+ "title/en": "Esse qui. Ut.",
4
+ "body/en": "Aliquid in ut. Laboriosam consequatur consequatur. Unde dolorem omnis.\nEt earum aut. Quis enim quis. Dolore corporis et. Quia vel ex."
5
+ },
6
+ {
7
+ "title/en": "Nihil id.",
8
+ "body/en": "Atque qui aut. Quia et incidunt. Qui nihil dolore.\nDelectus asperiores nihil. Sapiente omnis culpa. Eos at voluptatem."
9
+ },
10
+ {
11
+ "title/en": "Suspendisse lobortis",
12
+ "body/en": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
13
+ }
14
+ ]
@@ -0,0 +1,6 @@
1
+ title/en;body/en
2
+ Esse qui. Ut.;"Aliquid in ut. Laboriosam consequatur consequatur. Unde dolorem omnis.
3
+ Et earum aut. Quis enim quis. Dolore corporis et. Quia vel ex."
4
+ Nihil id.;"Atque qui aut. Quia et incidunt. Qui nihil dolore.
5
+ Delectus asperiores nihil. Sapiente omnis culpa. Eos at voluptatem."
6
+ ;Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Binary file
@@ -68,7 +68,7 @@
68
68
  },
69
69
  "participatory_process_group": {
70
70
  "id": 1,
71
- "name": {
71
+ "title": {
72
72
  "ca": "Molestias pariatur eaque.",
73
73
  "en": "Iure iusto ut.",
74
74
  "es": "Pariatur culpa reprehenderit."
@@ -68,7 +68,7 @@
68
68
  },
69
69
  "participatory_process_group": {
70
70
  "id": 1,
71
- "name": {
71
+ "title": {
72
72
  "ca": "Molestias pariatur eaque.",
73
73
  "en": "Iure iusto ut.",
74
74
  "es": "Pariatur culpa reprehenderit."
@@ -0,0 +1 @@
1
+ {"alg":"RS256","d":"QYEpgYkfRGjE_LAK02dCBZyhwFdO29VCgxhsw4UFzzJiIQbi7tCbec3cQghf1AHpfL8IRrXVBREKGNEY81Ihazz288d_dF8sICtZC6srtxMqD1iuvak_oVIhw5LUEVUehHujL3j95NBfaipJId_lW0hEOq8w5k6ObaL-_kHnQybYUdq8i-PVeLrVwGMKNSl_kU0hERgs6wf38WJwGWNTO3FOdvVOlMRKqjvUXschoVlJlqA39oX6Fa8ksVogP5Gqv_V1UbZnvaky0Amnuic4l0RRBz_l2bSHs2Xf6HqSY8ccxEtfkJQyq9fmP-WToheJOirumge6R2JyLL4H9Z8AuTSRBDSr6-ltEh6NBbTP1y5w8b3HgXrVHH21XbuFv2FzVu9s9KvkR4GEAKTYMt9CxCVIuoBUu_tZKmZw2gocgsRm9lG0-8Qf_FZR4QLrPN3-tHpJuDQk4CI29Luu-te2EY3494dj0LfK8GB2_o1bTZcsTKGiKAe6sXQ8E3WRYxVFhAgIarclJ3AKWbDUgxQOEx5awgoggMhkggNq0FlBqVC293LHMLdOnYLSmrWXdl5FjBVkCF9njv5U_N2EHwmyv14XRFidBIK_N5FridGXukrgnUlzm_uD5OTKQFVqHFjw4tluOQF0SbJw0JAeiFGkjkMtGBTOnVNsCCn6TUDtlhE","dp":"qP4EmXYhpsPh1-OJiQ9gg_CjJ5TE05hbbIuI9qnjn4s0sYoo6jFq34joU6JmCOvu3Wdik7qT3r67K2dNLLj5WpMumzOyfXNynTzAjnC51DzM7H8DtL397pnJJBMyv00wM02rzbjsGAx10mySSU4DIl6gR2lbigUflxYvfJRvTXmcDOejMMm1yAlWBI0M7z82LPY_bcPfs4awGDKNQhCNbABwmGJGJOHuFBKn_VvItfJpmoR8u89X2yxa3-DIBM2w1blKpwkg5Lu0vv7Md6z8lFlBq9kNf6B2E8YsRD4_qXwFtFnc0bq4LW5buGasY1fpAsodwKjtPS_YwMxCrrUYzQ","dq":"baJf8oZGb9SuEN9v4XrLgLHZA69J8gj9Tzh4K24AWD7mF9zvmRj-if7DGUbwfR55ioUarrkB51EUMQisMY4QJcG-_4Afp5KXMpO6R9ckMUc99fNtMURIwVwpXBwD4Qb6hFE4QYHHxH47mUq69FAFSzNL9lfgAtV4YCgK3rIK1OB7kqTSs2AW-7E-eQLACYmmb3fAq5-1DGxABVTm7aNa1uwgt1kuDfF-PaZB5WlXPCVZxpCHQ3TGacvx5hDda_9C0vxjimbRLOh_CtAmmm_P4TpLf4baYWl3AeEYNEPCGutwPDyrv-OA3cBWJn_rAOYMMeDenUDcaq8x-VUUOoS0_Q","e":"AQAB","ext":true,"key_ops":["sign"],"kty":"RSA","n":"rHpNVOvpLrdMMAWsJh42UKnn5sAURhB7A-sEQe0hQ8gk5b3tVufabAJIsfEArsjyt91UIXgmSnyGd8tbkErs53FYcLXgZwDEJ1NNcBdHi_iGJULF1IOKhxWHJS1QKjkPoSamCTeoQ8hWq0mdWHF1gsiOtRjIft-RX7Am2Zqk53CePE2TVRqnHuEmMQHQ-lcP2Pbe17cT4i6PoyDIuanbabenDktNzGXG7BfD4O7zhMWB0dE1SQZSR09danCzo53xk4NloV9xCR9VcSnGus-AnKIZQZFXi0QqIK6i8VFNuA9PYCCfleUWCAyHRQMkd9XSzbTs8OeWAvg4Rcb8Wv5GkL8acazy7G0diiAvotIr058CNoFGqvtuKnxilP2apaYwCBTa-SQp4DqCiYcAtPj_WeRTbap6WyDcfyxL5LyUQysVmGn4fB4nLVoDWx4zVmVw0SbGQT8K4FmkIhjtdDmELPaientG8Tep4IBjPtFSa-RMLAu45jHdlsXBZjmrbeTbwTBWV4aSKp6T2lcEOc-mxrorrWgTGYy2MvpJHLaneexefEMVB8iXJJX2L4JAqKCwq7V8Cwum0ZsTWaKLsGRNqPeAwayAJeXuiT5hDs3i-cuyuqrc2gmWxu5FEGZHJQWG_MLnYATY_nlIDq-ovuGGJa-lszu6pyVvCKryC70mksM","p":"34DGgLl2I8n2_9OJbcVKDcIiqo5Z52JSrIjusGtYMGQKDAK4Qk32l5XIUleoezae-G7N43pxEu_qzxq_kpdeoG75zCIQcdoh15Dvr6l_r_ANhX0e8wlWulJ7Y3IW0QNhm3ch_tta9Km_9ut9HoSo2oShMg2kxbP47wnK-mzfIIlDWq4xpjS9RwPWuLpHmDOmBs-sHzM9monCcb35LGmn-zxulM-xl_a3Vm3NbFF4mmxP2naEzbJ-wpx-jVWw5KoJuECuviU_cfltCTV-OlVwkAWm45WlQRlRZPwW42sMTJ-MXK3byG4ckd1nIEu9iC1R0gwksbsKjhtRh-l-UCWmDQ","q":"xY5Dv1frxXWaXwF7wxdcjmPD9L13iquZvgRcGDNTOmcB-eljPzK_ON5KwIK1Ua9FHRa3LPm9amB0sIKeuc-rcvTXgfjCGVPESpNBzzee3jIjikPnbO2knsXdZjoHC82SMLTYFMrzY3GXoDRl-I9SFKROntmK7BADwY4T5ZGdXXvtfvfUlhYP4L_dKO6X7UK2l_CvQszyDNHXxwx9FSyzFREaBpLPd_OVvJmqzOhBeJQGVZRZDexGxZSrtCtwjlQlr_MYOAuRmh5Zz1BvV-cu--sy0ZMjRB6_j__1Vrs_d1_R4TRpG1ju4GBRXCbrv4hDoMJGAioMGn2-xLZ76Fs4Dw","qi":"U2tMM1A8RFqBlbO1KP3B4ulb7Hf4Lr0L_l0XPOHXQdS_LqCHNUoZ9ss15paEWa_zy9k_1nop8SOPV1ZXtGSv0ZkK27q4Br_3VblG-rAaDWPP8ns4Flh-o6XeR0s2mr96427jpATDO3wzkk7tMqlRGPEL7INYRASLJ1gKTkjgb8oeJsavw3CM5v4e3000Te-Tb0nstwT4CXWEbgq5d54d1tgCcY2Ew6H3n0yfGnrSDvlQO3Kb2bWDb5k0pgO7vybAo0mI0lUK36nZqdd4J60iGijaonaE903OErGzSpQPQ5WOqQi95IDe2NGi_RbpcMMfe4zDd4NJvRVQeifboRs8oQ"}
@@ -0,0 +1 @@
1
+ {"alg":"RS256","d":"KqRpb0pp5AsfoNfBOGU71eetkXqJJNCZJAX70dDdSzjKDRyfa1GAgYYSJ69J2LCckYEWUeRxlEi81-G5zU8JJbfJkYnIGS2yDxGTx6RuH7ouzZ15sHE6tycjKoyrbxw8FS4Ba7JfX2RiG6UthznqXTaGLddOnHgbUoLCD6deG6oGGsr9UbSQrXksBSzFn00jQ4LgfWDxD0FZKf39HLV_OWdrSEaPw0Gdd6t-a3PbdEBAyYv9ufEaNdg_ckf_o166pgcgi82tyT-jTYnDqvNZIfbWkzQapG7Q6VuAT3l-23E8Dy3r9UdckqO7jPKbuNbggoDr1Qz2NoSacMLmyJBwbdy3SQh3PCTgaa9niUGumnPWuIEX8qckAJ6I5urTTF1AxnUfd83tw-ykgdX7spSnx125flVG5oEptjpj6tZraUyuXJmpCcqHiGeo2iVAC3RXNcIS-Yw0UGXZbaUPVOM7YpcSavBkfcSiohjSRL6VeH5GY6mnD88O_eFmdQB2DZS1EcE62SxMj4pZg5xsUXK3BliCcOCEsjfdJCCf9NluI_E0IBKbQbew-ijGgy2GiYB7Y23sxPMkMFUaLteyrU6hXqEEJNiWjofTWwUS5BEn9sozOBcZ4EgVTxmucHS_dFomsZvC81p9-aIyC1xOHJg4hf3lbSl-EAnoZp3aYM3JcDE","dp":"fCu-Y2pje9uAF_v1q6UgTQWLppQN1TTa9guHQgMQkVTi3bGHCGlejbxIjEM0p34WCnKp629YUQGiR36ytdTxQEaEUsoNOQj0Hyel3GVwvZcGo3KXAB1NxF1YRAd9BbPFHBHrRXRDPpFc7ggVcDsIzQyjTBLvEicpXKZy5fkdu3cTkZAWGH-i0liGhW4Ed0Y57n-VnPfE9zITnZCoIj_fX5xFR_oIIC3vHe1YTMIxeh5tjCl4Ws7j_o2HgOxA2pipgtvjZYTQsR2Wh-taYtYCOYrwG2fTNU9TMgbcJICvCmbuFPDy1H-9a7XBvUICDssPffDU1V0zW2c03IAlfnNCOQ","dq":"Evd2u7OlVQhuAuESlkORxGujK_2cTHZQ6LVVw77pKZFWg3jY_oHbGrgF_gM0adZHqdsw4G8v_dVE0jbg2e0JIdsQ3AvDmhiFg0tFm-anp_6P7yAPhmY4_lYEh_EKSps1G3b7tt_NKMCroBStf0YIzOtiNnUf7IlBXivuzcKT4KRm07sbmZa7W5EUfEhRMExdMTFw-3d-D0ChqD05UvBGkVWyH9CL1txyV4tGuwN42Noc_Gsb0eIQF-PVREOyNXXd_H-Ps3833ALi_dq_V-7PBZzUWm46RElmY2ar9ARMV_andR1yt9cKZHeaTfsOA3IbgcY9wWpFeOPrqsQ-6j_u0Q","e":"AQAB","ext":true,"key_ops":["sign"],"kty":"RSA","n":"mYW4py55eHVzlAOLeWSlkX-UzFcWmPZNgt38YgfDsrWsMiF99NxeS1hHBBBAIMYVj4DdraunxwxibFZJm4B7JfLedO02pGHXWpx-VUSwRU7TKBO8KGcLIuyIsLAn4VZmcUCfOD4z4D3mOPXJFrmy_db4EQJgQnkRQdop9Nb-zExjYdw9IOnSFYdYLJ6k-g4Onu43kUIVDjBBwBlNHIkr-zpApPWhABUpSV_Vy6WAdku3ix4MyFQLQ48ljJp4KVKrw85km3x5k1p7yXpRXaeAUwdl1ucZUHgeb23ED-q2gwASAbrBLOMlrrRrexObRXlHd7gkQS4fwvLtehENY0EepaS6R9ZDGD5l8AJOlS3jGCBfQdpL9aJT05ZqmB8Vi0Fj8PgDkzselqp9eSwUBb82bp8padX9NsZPaokXLtJls8acSOPpBDwmEPAiUML7LWUwiRylimK4CVDNxulNGnBuPlYl5b4vZQHtpjBEFfKUZxI8qY1Y2qpEehaYD0oXa64yr2Hi5IVdlCOS88hqPskPttoe28cm6YVYflJP9bv4slqeu1cafDSCxX7A4PX83wDpW5gyWC3cXAPTXh2Plxlnn3p9KTae6_YPkI8Id26zkm61LpKi-CkQCvo2fHvfZI23JiSj3Y9KYZR25Ym8O9aaNBdhgvNKhB8VFlizKet3VU8","p":"0quw5Amx8fF_xXD-U8muoXrtjOURvjjIscLaDIcbuzfUb5SCfdDOgFLbSczX2zkqBU54SVVAjWnR_MW4gg1axpscFPwM2ddQ4WgimEqGbAzbxzmsg4O15CID_El9m9ptsbz67r1H4qiEHkD4f_1or4cDlV41UT07spd4kSNqGAycrIvp5ShXtK7Oz89J3QaOR7DscJgR6dT3s0HpzfNW3hDW2_gnaE0Vk98rdm70wxuKeZ418r2IiESKQxfliT-fegFCyUJ_-Rif8L4-68aq4DJTVYuCU7uplrgD5IPvAGJaQ2FQYrzPzXD9-pBdbIlOgCXfpZBZBanYvOKdS_Q7_w","q":"uo4lizbd3qQs2W2r_GT40JqXScKdONk1e6_fJy1VWgo5H_ryQkVL-wxv9ecelbciZGOJ9LTnLkTgNLPGZjIkTcWgmsjGemoaqDzkzfKJHI4nytMwAXNHSuvwZkK1Qd98FnEA4NJlOPjUa76XTPCE5ZycD38mck9MKsY2sywhx9bKyrUXbNwc08tJyFH4apAi8jss31JlJy18tcQL1wcWxM2b7rx7FBrw5m9ujHm2eXKaoIbxtP9YjxPU0YJN4rncNJ6cLyO-zuNWg7KWymiKyxag9MPSJRodJ2whc-0cU5DdJKZvFijjln7Rw2x2buNWBTcxb06a9WkuF-UEIU4msQ","qi":"vNoH-M6QspeJDglwZfymEnf9TaBtJVqpfZVVAALXtyEY4g78PoYhsgHonVKO6VVxnl5yT8Vm3O-Ma5I2IKORP2hDZm6CtsvZVQGUmHbnJGuXBT_skex9VOVNHR5DZ9BObkB4Df4BzseTzoesMsdFX9mn-YToIJ3bXOUqlzLV3CKDWUYGtJeztpFeof3r1qv1lk3X-EYWy_qbGpNycoQiwgmiznewCieYLELTdrQViZl0cnhmw5upHAg1zbjvlAn0WiuhYe5Tit8gcm5fY9VA-rONpPkxz75mbuhvK0OMjAlY5mBcvd3uqTze1t3-FPVHcTk40eeHvBsZ4Pn4nDll4Q"}
@@ -0,0 +1 @@
1
+ {"alg":"RS256","e":"AQAB","kty":"RSA","n":"rHpNVOvpLrdMMAWsJh42UKnn5sAURhB7A-sEQe0hQ8gk5b3tVufabAJIsfEArsjyt91UIXgmSnyGd8tbkErs53FYcLXgZwDEJ1NNcBdHi_iGJULF1IOKhxWHJS1QKjkPoSamCTeoQ8hWq0mdWHF1gsiOtRjIft-RX7Am2Zqk53CePE2TVRqnHuEmMQHQ-lcP2Pbe17cT4i6PoyDIuanbabenDktNzGXG7BfD4O7zhMWB0dE1SQZSR09danCzo53xk4NloV9xCR9VcSnGus-AnKIZQZFXi0QqIK6i8VFNuA9PYCCfleUWCAyHRQMkd9XSzbTs8OeWAvg4Rcb8Wv5GkL8acazy7G0diiAvotIr058CNoFGqvtuKnxilP2apaYwCBTa-SQp4DqCiYcAtPj_WeRTbap6WyDcfyxL5LyUQysVmGn4fB4nLVoDWx4zVmVw0SbGQT8K4FmkIhjtdDmELPaientG8Tep4IBjPtFSa-RMLAu45jHdlsXBZjmrbeTbwTBWV4aSKp6T2lcEOc-mxrorrWgTGYy2MvpJHLaneexefEMVB8iXJJX2L4JAqKCwq7V8Cwum0ZsTWaKLsGRNqPeAwayAJeXuiT5hDs3i-cuyuqrc2gmWxu5FEGZHJQWG_MLnYATY_nlIDq-ovuGGJa-lszu6pyVvCKryC70mksM"}
@@ -0,0 +1 @@
1
+ {"alg":"RS256","e":"AQAB","kty":"RSA","n":"mYW4py55eHVzlAOLeWSlkX-UzFcWmPZNgt38YgfDsrWsMiF99NxeS1hHBBBAIMYVj4DdraunxwxibFZJm4B7JfLedO02pGHXWpx-VUSwRU7TKBO8KGcLIuyIsLAn4VZmcUCfOD4z4D3mOPXJFrmy_db4EQJgQnkRQdop9Nb-zExjYdw9IOnSFYdYLJ6k-g4Onu43kUIVDjBBwBlNHIkr-zpApPWhABUpSV_Vy6WAdku3ix4MyFQLQ48ljJp4KVKrw85km3x5k1p7yXpRXaeAUwdl1ucZUHgeb23ED-q2gwASAbrBLOMlrrRrexObRXlHd7gkQS4fwvLtehENY0EepaS6R9ZDGD5l8AJOlS3jGCBfQdpL9aJT05ZqmB8Vi0Fj8PgDkzselqp9eSwUBb82bp8padX9NsZPaokXLtJls8acSOPpBDwmEPAiUML7LWUwiRylimK4CVDNxulNGnBuPlYl5b4vZQHtpjBEFfKUZxI8qY1Y2qpEehaYD0oXa64yr2Hi5IVdlCOS88hqPskPttoe28cm6YVYflJP9bv4slqeu1cafDSCxX7A4PX83wDpW5gyWC3cXAPTXh2Plxlnn3p9KTae6_YPkI8Id26zkm61LpKi-CkQCvo2fHvfZI23JiSj3Y9KYZR25Ym8O9aaNBdhgvNKhB8VFlizKet3VU8"}
@@ -12,12 +12,12 @@ require "decidim/core"
12
12
  require "decidim/core/test"
13
13
  require "decidim/admin/test"
14
14
 
15
- require_relative "rspec_support/component.rb"
16
- require_relative "rspec_support/authorization.rb"
15
+ require_relative "rspec_support/component"
16
+ require_relative "rspec_support/authorization"
17
17
 
18
18
  require "#{Decidim::Dev.dummy_app_path}/config/environment"
19
19
 
20
- Dir["#{engine_spec_dir}/shared/**/*.rb"].each { |f| require f }
20
+ Dir["#{engine_spec_dir}/shared/**/*.rb"].sort.each { |f| require f }
21
21
 
22
22
  require "paper_trail/frameworks/rspec"
23
23
 
@@ -33,6 +33,6 @@ if ENV["CI"]
33
33
  config.display_try_failure_messages = true
34
34
 
35
35
  # Retry failed test, set to 1 for normal behavior
36
- config.default_retry_count = ENV.fetch("FAILED_TEST_RETRY_COUNT") { 3 }
36
+ config.default_retry_count = ENV.fetch("FAILED_TEST_RETRY_COUNT", 3)
37
37
  end
38
38
  end
@@ -1,12 +1,46 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- shared_examples "with promoted participatory processes" do
3
+ shared_examples "with promoted participatory processes and groups" do
4
4
  before do
5
5
  request.env["decidim.current_organization"] = organization
6
6
  end
7
7
 
8
- describe "promoted_participatory_processes" do
9
- it "orders them by active_step end_date" do
8
+ describe "promoted_collection" do
9
+ it "includes promoted participatory processes and groups placing groups in first place" do
10
+ create(
11
+ :participatory_process_group,
12
+ organization: organization
13
+ )
14
+
15
+ unpromoted_process = create(
16
+ :participatory_process,
17
+ :with_steps,
18
+ :published,
19
+ organization: organization
20
+ )
21
+ unpromoted_process.active_step.update!(end_date: Time.current.advance(days: 1))
22
+
23
+ promoted_process = create(
24
+ :participatory_process,
25
+ :with_steps,
26
+ :published,
27
+ :promoted,
28
+ organization: organization
29
+ )
30
+ promoted_process.active_step.update!(end_date: Time.current.advance(days: 2))
31
+
32
+ promoted_group = create(
33
+ :participatory_process_group,
34
+ :promoted,
35
+ organization: organization
36
+ )
37
+
38
+ expect(controller.helpers.promoted_collection).to(
39
+ match_array([promoted_group, promoted_process])
40
+ )
41
+ end
42
+
43
+ it "orders participatory processes by active_step end_date" do
10
44
  create(
11
45
  :participatory_process,
12
46
  :with_steps,
@@ -57,7 +91,7 @@ shared_examples "with promoted participatory processes" do
57
91
 
58
92
  second.active_step.update!(end_date: Time.current.advance(days: 4))
59
93
 
60
- expect(controller.helpers.promoted_participatory_processes).to(
94
+ expect(controller.helpers.promoted_collection).to(
61
95
  match_array([first, second, last])
62
96
  )
63
97
  end
@@ -27,7 +27,7 @@ module MailerHelpers
27
27
  end
28
28
 
29
29
  def email_body(email)
30
- (email.try(:html_part).try(:body) || email.body).encoded
30
+ (email.try(:html_part).try(:body) || email.try(:body))&.encoded
31
31
  end
32
32
 
33
33
  def last_email_link
@@ -16,6 +16,10 @@ module Decidim
16
16
  def switch_to_default_host
17
17
  Capybara.app_host = nil
18
18
  end
19
+
20
+ def switch_to_secure_context_host
21
+ Capybara.app_host = "http://localhost"
22
+ end
19
23
  end
20
24
  end
21
25
 
@@ -49,7 +53,7 @@ Capybara.register_driver :iphone do |app|
49
53
  )
50
54
  end
51
55
 
52
- Capybara.server = :puma, { Silent: true }
56
+ Capybara.server = :puma, { Silent: true, Threads: "1:1" }
53
57
 
54
58
  Capybara.asset_host = "http://localhost:3000"
55
59
 
@@ -73,6 +77,10 @@ RSpec.configure do |config|
73
77
  end
74
78
  end
75
79
 
80
+ config.after(type: :system) do |example|
81
+ warn page.driver.browser.manage.logs.get(:browser) unless example.metadata[:driver].eql?(:rack_test)
82
+ end
83
+
76
84
  config.include Decidim::CapybaraTestHelpers, type: :system
77
85
  config.include Devise::Test::IntegrationHelpers, type: :system
78
86
  end
@@ -93,10 +93,28 @@ module Decidim
93
93
  ResourceLocatorPresenter.new(self).url
94
94
  end
95
95
 
96
+ def reported_attributes
97
+ [:title]
98
+ end
99
+
100
+ def reported_searchable_content_extras
101
+ [normalized_author.name]
102
+ end
103
+
96
104
  def allow_resource_permissions?
97
105
  component.settings.resources_permissions_enabled
98
106
  end
99
107
 
108
+ # Public: Overrides the `commentable?` Commentable concern method.
109
+ def commentable?
110
+ component.settings.comments_enabled?
111
+ end
112
+
113
+ # Public: Whether the object can have new comments or not.
114
+ def user_allowed_to_comment?(user)
115
+ component.can_participate_in_space?(user)
116
+ end
117
+
100
118
  def self.user_collection(user)
101
119
  where(decidim_author_id: user.id, decidim_author_type: "Decidim::User")
102
120
  end
@@ -2,10 +2,9 @@
2
2
 
3
3
  shared_context "with a component" do
4
4
  let(:manifest) { Decidim.find_component_manifest(manifest_name) }
5
-
6
5
  let(:user) { create :user, :confirmed, organization: organization }
7
6
 
8
- let!(:organization) { create(:organization, available_authorizations: %w(dummy_authorization_handler another_dummy_authorization_handler)) }
7
+ let!(:organization) { create(:organization, *organization_traits, available_authorizations: %w(dummy_authorization_handler another_dummy_authorization_handler)) }
9
8
 
10
9
  let(:participatory_process) do
11
10
  create(:participatory_process, :with_steps, organization: organization)
@@ -22,8 +21,14 @@ shared_context "with a component" do
22
21
  let!(:category) { create :category, participatory_space: participatory_space }
23
22
  let!(:scope) { create :scope, organization: organization }
24
23
 
24
+ let(:organization_traits) { [] }
25
+
25
26
  before do
26
- switch_to_host(organization.host)
27
+ if organization_traits.include?(:secure_context)
28
+ switch_to_secure_context_host
29
+ else
30
+ switch_to_host(organization.host)
31
+ end
27
32
  end
28
33
 
29
34
  def visit_component
@@ -32,9 +37,12 @@ shared_context "with a component" do
32
37
  end
33
38
 
34
39
  shared_context "when managing a component" do
35
- include_context "with a component"
40
+ include_context "with a component" do
41
+ let(:organization_traits) { component_organization_traits }
42
+ end
36
43
 
37
44
  let(:current_component) { component }
45
+ let(:component_organization_traits) { [] }
38
46
 
39
47
  before do
40
48
  login_as user, scope: :user
@@ -56,7 +64,11 @@ shared_context "when managing a component" do
56
64
  end
57
65
 
58
66
  shared_context "when managing a component as an admin" do
59
- include_context "when managing a component"
67
+ include_context "when managing a component" do
68
+ let(:component_organization_traits) { admin_component_organization_traits }
69
+ end
70
+
71
+ let(:admin_component_organization_traits) { [] }
60
72
 
61
73
  let(:user) do
62
74
  create :user,
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "billy/capybara/rspec"
4
+
5
+ Billy.configure do |config|
6
+ config.cache = true
7
+ config.persist_cache = true
8
+ config.cache_path = "spec/billy"
9
+ config.record_requests = true
10
+ config.proxied_request_connect_timeout = 20
11
+ config.proxied_request_inactivity_timeout = 20
12
+ end
13
+
14
+ RSpec.configure do |config|
15
+ base_cache_path = Billy.config.cache_path
16
+
17
+ config.before :each, :billy do |example|
18
+ driven_by :selenium_chrome_headless_billy
19
+ switch_to_secure_context_host
20
+ WebMock::HttpLibAdapters::EmHttpRequestAdapter.disable!
21
+
22
+ feature_name = example.metadata[:example_group][:description].underscore.gsub(" ", "_")
23
+ scenario_name = example.metadata[:description].underscore.gsub(" ", "_")
24
+ cache_scenario_folder_path = File.join(base_cache_path, feature_name, scenario_name)
25
+ FileUtils.mkdir_p(cache_scenario_folder_path)
26
+ Billy.config.cache_path = cache_scenario_folder_path
27
+ end
28
+ end
29
+
30
+ # A patch to `puffing-billy`'s proxy so that it doesn't try to stop
31
+ # eventmachine's reactor if it's not running.
32
+ #
33
+ # See:
34
+ # https://github.com/oesmith/puffing-billy/issues/253#issuecomment-539710620
35
+ module BillyProxyPatch
36
+ def stop
37
+ return unless EM.reactor_running?
38
+
39
+ super
40
+ end
41
+ end
42
+ Billy::Proxy.prepend(BillyProxyPatch)
43
+
44
+ # A patch to `puffing-billy` to start EM if it has been stopped
45
+ Billy.module_eval do
46
+ def self.proxy
47
+ if @billy_proxy.nil? || !(EventMachine.reactor_running? && EventMachine.reactor_thread.alive?)
48
+ proxy = Billy::Proxy.new
49
+ proxy.start
50
+ @billy_proxy = proxy
51
+ else
52
+ @billy_proxy
53
+ end
54
+ end
55
+ end
@@ -14,8 +14,9 @@ module TranslationHelpers
14
14
  # translated attributes implementation can change more easily.
15
15
  def translated(field, locale: I18n.locale)
16
16
  return field if field.is_a?(String)
17
+ return if field.nil?
17
18
 
18
- field.try(:[], locale.to_s)
19
+ field[locale.to_s] || field.dig("machine_translations", locale.to_s)
19
20
  end
20
21
 
21
22
  # Checks that the current page has some translated content. It strips the
@@ -66,6 +67,20 @@ module TranslationHelpers
66
67
  end
67
68
  end
68
69
 
70
+ # Handles how to clear i18n form fields which uses a WYSIWYG editor.
71
+ #
72
+ # field - the name of the field that should be cleared, without the
73
+ # locale-related part (e.g. `:participatory_process_title`)
74
+ # tab_selector - a String representing the ID of the HTML element that holds
75
+ # the tabs for this input. It ususally is `"#<attribute_name>-tabs" (e.g.
76
+ # "#title-tabs")
77
+ # locales - an Array with the locales IDs.
78
+ def clear_i18n_editor(field, tab_selector, locales)
79
+ clear_i18n_fields(field, tab_selector, locales) do |locator|
80
+ clear_editor locator
81
+ end
82
+ end
83
+
69
84
  # Handles how to fill a WYSIWYG editor.
70
85
  #
71
86
  # locator - The input field ID. The DOM element is selected using jQuery.
@@ -80,9 +95,22 @@ module TranslationHelpers
80
95
  SCRIPT
81
96
  end
82
97
 
98
+ # Handles how to clear a WYSIWYG editor.
99
+ #
100
+ # locator - The input field ID. The DOM element is selected using jQuery.
101
+ def clear_editor(locator)
102
+ page.execute_script <<-SCRIPT
103
+ $('##{locator}').siblings('.editor-container').find('.ql-editor')[0].innerHTML = "<p><br></p>";
104
+ $('##{locator}').val("")
105
+ SCRIPT
106
+ end
107
+
83
108
  private
84
109
 
85
110
  def fill_in_i18n_fields(field, tab_selector, localized_values)
111
+ # Ensure the field is visible in the view to avoid "element has zero size"
112
+ # errors
113
+ scroll_to(find(tab_selector))
86
114
  localized_values.each do |locale, value|
87
115
  within tab_selector do
88
116
  click_link I18n.with_locale(locale) { t("name", scope: "locale") }
@@ -91,6 +119,18 @@ module TranslationHelpers
91
119
  end
92
120
  end
93
121
 
122
+ def clear_i18n_fields(field, tab_selector, locales)
123
+ # Ensure the field is visible in the view to avoid "element has zero size"
124
+ # errors
125
+ scroll_to(find(tab_selector))
126
+ locales.each do |locale|
127
+ within tab_selector do
128
+ click_link I18n.with_locale(locale) { t("name", scope: "locale") }
129
+ end
130
+ yield "#{field}_#{locale}"
131
+ end
132
+ end
133
+
94
134
  # Gives a specific language version of a field and (optionally) upcases it
95
135
  #
96
136
  # field - the field that holds the translations
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "vcr"
4
+
5
+ module BulletinBoardVcr
6
+ def self.bulletin_board_uri?(uri)
7
+ uri.hostname == bulletin_board_uri.hostname && uri.port == bulletin_board_uri.port
8
+ end
9
+
10
+ def self.bulletin_board_uri
11
+ @bulletin_board_uri ||= URI(bulletin_board_server)
12
+ end
13
+
14
+ def self.bulletin_board_server
15
+ return "" unless defined?(Decidim::Elections)
16
+
17
+ Decidim::Elections.bulletin_board.server
18
+ end
19
+ end
20
+
21
+ VCR.configure do |config|
22
+ config.default_cassette_options = { serialize_with: :json }
23
+ config.cassette_library_dir = "spec/cassettes"
24
+ config.hook_into :webmock
25
+ config.configure_rspec_metadata!
26
+ config.ignore_request { |request| !BulletinBoardVcr.bulletin_board_uri?(URI(request.uri)) }
27
+ end
@@ -2,30 +2,30 @@
2
2
 
3
3
  module DownloadHelper
4
4
  TIMEOUT = 10
5
- PATH = Rails.root.join("tmp", "downloads").freeze
5
+ PATH = Rails.root.join("tmp/downloads").freeze
6
6
 
7
- def downloads
8
- Dir[PATH.join("*")]
7
+ def downloads(name = nil)
8
+ Dir[PATH.join(name || "*")]
9
9
  end
10
10
 
11
- def download_path
12
- wait_for_download
13
- downloads.first
11
+ def download_path(name = nil)
12
+ wait_for_download(name)
13
+ downloads(name).first
14
14
  end
15
15
 
16
- def download_content
17
- wait_for_download
18
- File.read(download_path)
16
+ def download_content(name = nil)
17
+ wait_for_download(name)
18
+ File.read(download_path(name))
19
19
  end
20
20
 
21
- def wait_for_download
21
+ def wait_for_download(name = nil)
22
22
  Timeout.timeout(TIMEOUT) do
23
- sleep 0.1 until downloaded?
23
+ sleep 0.1 until downloaded?(name)
24
24
  end
25
25
  end
26
26
 
27
- def downloaded?
28
- downloads.any? && !downloading?
27
+ def downloaded?(name = nil)
28
+ downloads(name).any? && !downloading?
29
29
  end
30
30
 
31
31
  def downloading?
@@ -40,8 +40,6 @@ end
40
40
  RSpec.configure do |config|
41
41
  config.include DownloadHelper, download: true
42
42
  config.before :each, download: true do
43
- driven_by(:headless_chrome)
44
- switch_to_default_host
45
43
  FileUtils.mkdir_p DownloadHelper::PATH.to_s
46
44
  page.driver.browser.download_path = DownloadHelper::PATH.to_s
47
45
  clear_downloads
@@ -11,7 +11,7 @@ require "action_view/helpers/sanitize_helper"
11
11
 
12
12
  # Requires supporting files with custom matchers and macros, etc,
13
13
  # in ./rspec_support/ and its subdirectories.
14
- Dir["#{__dir__}/rspec_support/**/*.rb"].each { |f| require f }
14
+ Dir["#{__dir__}/rspec_support/**/*.rb"].sort.each { |f| require f }
15
15
 
16
16
  require_relative "factories"
17
17
 
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-dev version.
5
5
  module Dev
6
6
  def self.version
7
- "0.23.4"
7
+ "0.24.0.rc1"
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.4
4
+ version: 0.24.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-03-10 00:00:00.000000000 Z
13
+ date: 2021-03-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: capybara
@@ -32,14 +32,14 @@ dependencies:
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.23.4
35
+ version: 0.24.0.rc1
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.23.4
42
+ version: 0.24.0.rc1
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: factory_bot_rails
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -128,30 +128,50 @@ dependencies:
128
128
  name: nokogiri
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '1.11'
131
134
  - - ">="
132
135
  - !ruby/object:Gem::Version
133
- version: 1.10.8
136
+ version: 1.11.1
134
137
  type: :runtime
135
138
  prerelease: false
136
139
  version_requirements: !ruby/object:Gem::Requirement
137
140
  requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '1.11'
138
144
  - - ">="
139
145
  - !ruby/object:Gem::Version
140
- version: 1.10.8
146
+ version: 1.11.1
147
+ - !ruby/object:Gem::Dependency
148
+ name: puffing-billy
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: 2.4.0
154
+ type: :runtime
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: 2.4.0
141
161
  - !ruby/object:Gem::Dependency
142
162
  name: puma
143
163
  requirement: !ruby/object:Gem::Requirement
144
164
  requirements:
145
- - - ">="
165
+ - - "~>"
146
166
  - !ruby/object:Gem::Version
147
- version: '4.3'
167
+ version: '5.0'
148
168
  type: :runtime
149
169
  prerelease: false
150
170
  version_requirements: !ruby/object:Gem::Requirement
151
171
  requirements:
152
- - - ">="
172
+ - - "~>"
153
173
  - !ruby/object:Gem::Version
154
- version: '4.3'
174
+ version: '5.0'
155
175
  - !ruby/object:Gem::Dependency
156
176
  name: rails-controller-testing
157
177
  requirement: !ruby/object:Gem::Requirement
@@ -195,61 +215,61 @@ dependencies:
195
215
  - !ruby/object:Gem::Version
196
216
  version: 0.9.1
197
217
  - !ruby/object:Gem::Dependency
198
- name: rspec-rails
218
+ name: rspec_junit_formatter
199
219
  requirement: !ruby/object:Gem::Requirement
200
220
  requirements:
201
221
  - - "~>"
202
222
  - !ruby/object:Gem::Version
203
- version: '3.7'
223
+ version: 0.3.0
204
224
  type: :runtime
205
225
  prerelease: false
206
226
  version_requirements: !ruby/object:Gem::Requirement
207
227
  requirements:
208
228
  - - "~>"
209
229
  - !ruby/object:Gem::Version
210
- version: '3.7'
230
+ version: 0.3.0
211
231
  - !ruby/object:Gem::Dependency
212
- name: rspec-retry
232
+ name: rspec-rails
213
233
  requirement: !ruby/object:Gem::Requirement
214
234
  requirements:
215
235
  - - "~>"
216
236
  - !ruby/object:Gem::Version
217
- version: 0.6.2
237
+ version: '3.7'
218
238
  type: :runtime
219
239
  prerelease: false
220
240
  version_requirements: !ruby/object:Gem::Requirement
221
241
  requirements:
222
242
  - - "~>"
223
243
  - !ruby/object:Gem::Version
224
- version: 0.6.2
244
+ version: '3.7'
225
245
  - !ruby/object:Gem::Dependency
226
- name: rspec_junit_formatter
246
+ name: rspec-retry
227
247
  requirement: !ruby/object:Gem::Requirement
228
248
  requirements:
229
249
  - - "~>"
230
250
  - !ruby/object:Gem::Version
231
- version: 0.3.0
251
+ version: 0.6.2
232
252
  type: :runtime
233
253
  prerelease: false
234
254
  version_requirements: !ruby/object:Gem::Requirement
235
255
  requirements:
236
256
  - - "~>"
237
257
  - !ruby/object:Gem::Version
238
- version: 0.3.0
258
+ version: 0.6.2
239
259
  - !ruby/object:Gem::Dependency
240
260
  name: rubocop
241
261
  requirement: !ruby/object:Gem::Requirement
242
262
  requirements:
243
263
  - - "~>"
244
264
  - !ruby/object:Gem::Version
245
- version: 0.71.0
265
+ version: 0.92.0
246
266
  type: :runtime
247
267
  prerelease: false
248
268
  version_requirements: !ruby/object:Gem::Requirement
249
269
  requirements:
250
270
  - - "~>"
251
271
  - !ruby/object:Gem::Version
252
- version: 0.71.0
272
+ version: 0.92.0
253
273
  - !ruby/object:Gem::Dependency
254
274
  name: rubocop-rails
255
275
  requirement: !ruby/object:Gem::Requirement
@@ -334,6 +354,20 @@ dependencies:
334
354
  - - "~>"
335
355
  - !ruby/object:Gem::Version
336
356
  version: 0.1.1
357
+ - !ruby/object:Gem::Dependency
358
+ name: vcr
359
+ requirement: !ruby/object:Gem::Requirement
360
+ requirements:
361
+ - - "~>"
362
+ - !ruby/object:Gem::Version
363
+ version: '6.0'
364
+ type: :runtime
365
+ prerelease: false
366
+ version_requirements: !ruby/object:Gem::Requirement
367
+ requirements:
368
+ - - "~>"
369
+ - !ruby/object:Gem::Version
370
+ version: '6.0'
337
371
  - !ruby/object:Gem::Dependency
338
372
  name: webmock
339
373
  requirement: !ruby/object:Gem::Requirement
@@ -466,6 +500,11 @@ files:
466
500
  - lib/decidim/dev/assets/id.jpg
467
501
  - lib/decidim/dev/assets/import_participatory_space_private_users.csv
468
502
  - lib/decidim/dev/assets/import_participatory_space_private_users_nok.csv
503
+ - lib/decidim/dev/assets/import_proposals.csv
504
+ - lib/decidim/dev/assets/import_proposals.json
505
+ - lib/decidim/dev/assets/import_proposals.xls
506
+ - lib/decidim/dev/assets/import_proposals_broken.csv
507
+ - lib/decidim/dev/assets/invalid.jpeg
469
508
  - lib/decidim/dev/assets/iso-8859-15.md
470
509
  - lib/decidim/dev/assets/malicious.jpg
471
510
  - lib/decidim/dev/assets/participatory_processes.json
@@ -473,6 +512,10 @@ files:
473
512
  - lib/decidim/dev/assets/participatory_text.md
474
513
  - lib/decidim/dev/assets/participatory_text.odt
475
514
  - lib/decidim/dev/assets/participatory_text_wrong.odt
515
+ - lib/decidim/dev/assets/private_key.jwk
516
+ - lib/decidim/dev/assets/private_key2.jwk
517
+ - lib/decidim/dev/assets/public_key.jwk
518
+ - lib/decidim/dev/assets/public_key2.jwk
476
519
  - lib/decidim/dev/assets/verify_user_groups.csv
477
520
  - lib/decidim/dev/common_rake.rb
478
521
  - lib/decidim/dev/dummy_translator.rb
@@ -495,7 +538,6 @@ files:
495
538
  - lib/decidim/dev/test/rspec_support/component_context.rb
496
539
  - lib/decidim/dev/test/rspec_support/confirmation_helpers.rb
497
540
  - lib/decidim/dev/test/rspec_support/content_processing.rb
498
- - lib/decidim/dev/test/rspec_support/download_helper.rb
499
541
  - lib/decidim/dev/test/rspec_support/factory_bot.rb
500
542
  - lib/decidim/dev/test/rspec_support/frontend.rb
501
543
  - lib/decidim/dev/test/rspec_support/gamification.rb
@@ -505,14 +547,17 @@ files:
505
547
  - lib/decidim/dev/test/rspec_support/orderly_matchers.rb
506
548
  - lib/decidim/dev/test/rspec_support/organization.rb
507
549
  - lib/decidim/dev/test/rspec_support/permissions_shared_examples.rb
550
+ - lib/decidim/dev/test/rspec_support/puffing_billy.rb
508
551
  - lib/decidim/dev/test/rspec_support/rake_tasks.rb
509
552
  - lib/decidim/dev/test/rspec_support/react_select.rb
510
553
  - lib/decidim/dev/test/rspec_support/route_helpers.rb
511
554
  - lib/decidim/dev/test/rspec_support/timezone.rb
512
555
  - lib/decidim/dev/test/rspec_support/translation_helpers.rb
556
+ - lib/decidim/dev/test/rspec_support/vcr.rb
513
557
  - lib/decidim/dev/test/rspec_support/warden.rb
514
558
  - lib/decidim/dev/test/rspec_support/webmock.rb
515
559
  - lib/decidim/dev/test/rspec_support/wisper.rb
560
+ - lib/decidim/dev/test/rspec_support/z_download_helper.rb
516
561
  - lib/decidim/dev/test/spec_helper.rb
517
562
  - lib/decidim/dev/version.rb
518
563
  - lib/tasks/generators.rake
@@ -529,14 +574,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
529
574
  requirements:
530
575
  - - ">="
531
576
  - !ruby/object:Gem::Version
532
- version: '2.6'
577
+ version: '2.7'
533
578
  required_rubygems_version: !ruby/object:Gem::Requirement
534
579
  requirements:
535
- - - ">="
580
+ - - ">"
536
581
  - !ruby/object:Gem::Version
537
- version: '0'
582
+ version: 1.3.1
538
583
  requirements: []
539
- rubygems_version: 3.0.3
584
+ rubygems_version: 3.1.2
540
585
  signing_key:
541
586
  specification_version: 4
542
587
  summary: Decidim dev tools