decidim-dev 0.23.5 → 0.24.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) 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/caching.rb +15 -0
  19. data/lib/decidim/dev/test/rspec_support/capybara.rb +9 -1
  20. data/lib/decidim/dev/test/rspec_support/cell_matchers.rb +17 -0
  21. data/lib/decidim/dev/test/rspec_support/component.rb +19 -0
  22. data/lib/decidim/dev/test/rspec_support/component_context.rb +17 -5
  23. data/lib/decidim/dev/test/rspec_support/puffing_billy.rb +55 -0
  24. data/lib/decidim/dev/test/rspec_support/translation_helpers.rb +41 -1
  25. data/lib/decidim/dev/test/rspec_support/vcr.rb +27 -0
  26. data/lib/decidim/dev/test/rspec_support/{download_helper.rb → z_download_helper.rb} +13 -15
  27. data/lib/decidim/dev/test/spec_helper.rb +1 -1
  28. data/lib/decidim/dev/version.rb +1 -1
  29. metadata +71 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5fbd26077da7efacb3f0dd2aa55254b3a2dd47a482f4f9e00aa768f013fef632
4
- data.tar.gz: faf0c649266135e2a7707eb651d082301a1327b4810b6468840bee278e5139ff
3
+ metadata.gz: 234c1c095869e1fb2d0b1e7a538220d24cf8e83208ba9a972a7fedbf65a16203
4
+ data.tar.gz: 800ba34f749455642d0d791b7e7d51b5dff233e75eb1c80a2e053bfd6bf6e7ae
5
5
  SHA512:
6
- metadata.gz: 3c26657eea148605e5ad7320cb04f8912d4f05b9190e70d1355a490b92b33ad4bddf91e6ad62f4efcf923aca3183851d1d32a9dbfb99befdda86dc1a901a9c3d
7
- data.tar.gz: fe5363c47601eb43bed882587900f69d9793b61b17d6edb94c141dbe22dba4dc6341657a86f03cd0149b13f1a1da5b3101f11e4fa37811fbafec8bb3ef45b9f1
6
+ metadata.gz: 34fc01972f66e5653f4dc75f3605876ef167907988030572f2b68fee4f0eff40660abe5c0712c23c2395ccc05a875a5cb87604eef6578938e69eafd5c3cbe9ca
7
+ data.tar.gz: 8ece9d4a2454f5b7f078cd042367896ded2d85e997baee22f83b5e262a43fa49158b4ddcf16288ab671df505356ab3b5d0b70dc38a72c2424a24aa028b4e1b51
@@ -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
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.configure do |config|
4
+ config.around(:each, :caching) do |example|
5
+ caching = ActionController::Base.perform_caching
6
+ cache_store = ActionController::Base.cache_store
7
+ ActionController::Base.perform_caching = true
8
+ ActionController::Base.cache_store = ActiveSupport::Cache::MemoryStore.new
9
+
10
+ example.run
11
+
12
+ ActionController::Base.perform_caching = caching
13
+ ActionController::Base.cache_store = cache_store
14
+ end
15
+ end
@@ -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
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module CellMatchers
5
+ RSpec::Matchers.define :render_nothing do |_expected_value|
6
+ match do |actual_value|
7
+ expect(actual_value).to have_no_selector("html")
8
+ end
9
+
10
+ diffable
11
+ end
12
+ end
13
+ end
14
+
15
+ RSpec.configure do |config|
16
+ config.include Decidim::CellMatchers, type: :cell
17
+ 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
@@ -258,6 +276,7 @@ RSpec.configure do |config|
258
276
  t.integer :coauthorships_count, null: false, default: 0
259
277
  t.integer :endorsements_count, null: false, default: 0
260
278
  t.integer :comments_count, null: false, default: 0
279
+ t.integer :follows_count, null: false, default: 0
261
280
 
262
281
  t.references :decidim_component, index: false
263
282
  t.integer :decidim_author_id, index: false
@@ -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.5"
7
+ "0.24.2"
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.5
4
+ version: 0.24.2
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-04-08 00:00:00.000000000 Z
13
+ date: 2021-05-07 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.5
35
+ version: 0.24.2
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.5
42
+ version: 0.24.2
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
@@ -487,15 +530,16 @@ files:
487
530
  - lib/decidim/dev/test/rspec_support/attachment_helpers.rb
488
531
  - lib/decidim/dev/test/rspec_support/attachments.rb
489
532
  - lib/decidim/dev/test/rspec_support/authorization.rb
533
+ - lib/decidim/dev/test/rspec_support/caching.rb
490
534
  - lib/decidim/dev/test/rspec_support/capybara.rb
491
535
  - lib/decidim/dev/test/rspec_support/capybara_data_picker.rb
492
536
  - lib/decidim/dev/test/rspec_support/capybara_scopes_picker.rb
537
+ - lib/decidim/dev/test/rspec_support/cell_matchers.rb
493
538
  - lib/decidim/dev/test/rspec_support/comments.rb
494
539
  - lib/decidim/dev/test/rspec_support/component.rb
495
540
  - lib/decidim/dev/test/rspec_support/component_context.rb
496
541
  - lib/decidim/dev/test/rspec_support/confirmation_helpers.rb
497
542
  - lib/decidim/dev/test/rspec_support/content_processing.rb
498
- - lib/decidim/dev/test/rspec_support/download_helper.rb
499
543
  - lib/decidim/dev/test/rspec_support/factory_bot.rb
500
544
  - lib/decidim/dev/test/rspec_support/frontend.rb
501
545
  - lib/decidim/dev/test/rspec_support/gamification.rb
@@ -505,14 +549,17 @@ files:
505
549
  - lib/decidim/dev/test/rspec_support/orderly_matchers.rb
506
550
  - lib/decidim/dev/test/rspec_support/organization.rb
507
551
  - lib/decidim/dev/test/rspec_support/permissions_shared_examples.rb
552
+ - lib/decidim/dev/test/rspec_support/puffing_billy.rb
508
553
  - lib/decidim/dev/test/rspec_support/rake_tasks.rb
509
554
  - lib/decidim/dev/test/rspec_support/react_select.rb
510
555
  - lib/decidim/dev/test/rspec_support/route_helpers.rb
511
556
  - lib/decidim/dev/test/rspec_support/timezone.rb
512
557
  - lib/decidim/dev/test/rspec_support/translation_helpers.rb
558
+ - lib/decidim/dev/test/rspec_support/vcr.rb
513
559
  - lib/decidim/dev/test/rspec_support/warden.rb
514
560
  - lib/decidim/dev/test/rspec_support/webmock.rb
515
561
  - lib/decidim/dev/test/rspec_support/wisper.rb
562
+ - lib/decidim/dev/test/rspec_support/z_download_helper.rb
516
563
  - lib/decidim/dev/test/spec_helper.rb
517
564
  - lib/decidim/dev/version.rb
518
565
  - lib/tasks/generators.rake
@@ -529,14 +576,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
529
576
  requirements:
530
577
  - - ">="
531
578
  - !ruby/object:Gem::Version
532
- version: '2.6'
579
+ version: '2.7'
533
580
  required_rubygems_version: !ruby/object:Gem::Requirement
534
581
  requirements:
535
582
  - - ">="
536
583
  - !ruby/object:Gem::Version
537
584
  version: '0'
538
585
  requirements: []
539
- rubygems_version: 3.0.3
586
+ rubygems_version: 3.1.2
540
587
  signing_key:
541
588
  specification_version: 4
542
589
  summary: Decidim dev tools