diff --git a/Gemfile b/Gemfile index a0315a03..c7b3d5e3 100644 --- a/Gemfile +++ b/Gemfile @@ -4,7 +4,7 @@ source "https://rubygems.org" ruby RUBY_VERSION -DECIDIM_VERSION = "0.27.5" +DECIDIM_VERSION = "0.27.6" gem "decidim", DECIDIM_VERSION gem "decidim-vocdoni", path: "." diff --git a/Gemfile.lock b/Gemfile.lock index d20f5fb8..edccc2f7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,7 +75,7 @@ GEM addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) - axe-core-api (4.8.1) + axe-core-api (4.9.0) dumb_delegator virtus axe-core-rspec (4.1.0) @@ -97,7 +97,7 @@ GEM html_tokenizer (~> 0.0.6) parser (>= 2.4) smart_properties - bigdecimal (3.1.6) + bigdecimal (3.1.8) bindex (0.8.1) bootsnap (1.18.3) msgpack (~> 1.2) @@ -133,7 +133,7 @@ GEM actionpack (>= 5.0) cells (>= 4.1.6, < 5.0.0) charlock_holmes (0.7.7) - chef-utils (18.4.2) + chef-utils (18.4.12) concurrent-ruby childprocess (4.1.0) codecov (0.6.0) @@ -149,7 +149,7 @@ GEM coffee-script-source (1.12.2) commonmarker (0.23.10) concurrent-ruby (1.2.3) - crack (0.4.6) + crack (1.0.0) bigdecimal rexml crass (1.0.6) @@ -162,63 +162,63 @@ GEM db-query-matchers (0.10.0) activesupport (>= 4.0, < 7) rspec (~> 3.0) - decidim (0.27.5) - decidim-accountability (= 0.27.5) - decidim-admin (= 0.27.5) - decidim-api (= 0.27.5) - decidim-assemblies (= 0.27.5) - decidim-blogs (= 0.27.5) - decidim-budgets (= 0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-debates (= 0.27.5) - decidim-forms (= 0.27.5) - decidim-generators (= 0.27.5) - decidim-meetings (= 0.27.5) - decidim-pages (= 0.27.5) - decidim-participatory_processes (= 0.27.5) - decidim-proposals (= 0.27.5) - decidim-sortitions (= 0.27.5) - decidim-surveys (= 0.27.5) - decidim-system (= 0.27.5) - decidim-templates (= 0.27.5) - decidim-verifications (= 0.27.5) - decidim-accountability (0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-admin (0.27.5) + decidim (0.27.6) + decidim-accountability (= 0.27.6) + decidim-admin (= 0.27.6) + decidim-api (= 0.27.6) + decidim-assemblies (= 0.27.6) + decidim-blogs (= 0.27.6) + decidim-budgets (= 0.27.6) + decidim-comments (= 0.27.6) + decidim-core (= 0.27.6) + decidim-debates (= 0.27.6) + decidim-forms (= 0.27.6) + decidim-generators (= 0.27.6) + decidim-meetings (= 0.27.6) + decidim-pages (= 0.27.6) + decidim-participatory_processes (= 0.27.6) + decidim-proposals (= 0.27.6) + decidim-sortitions (= 0.27.6) + decidim-surveys (= 0.27.6) + decidim-system (= 0.27.6) + decidim-templates (= 0.27.6) + decidim-verifications (= 0.27.6) + decidim-accountability (0.27.6) + decidim-comments (= 0.27.6) + decidim-core (= 0.27.6) + decidim-admin (0.27.6) active_link_to (~> 1.0) - decidim-core (= 0.27.5) + decidim-core (= 0.27.6) devise (~> 4.7) devise-i18n (~> 1.2) devise_invitable (~> 2.0, >= 2.0.9) - decidim-api (0.27.5) + decidim-api (0.27.6) + decidim-core (= 0.27.6) graphql (~> 1.12, < 1.13) graphql-docs (~> 2.1.0) rack-cors (~> 1.0) - decidim-assemblies (0.27.5) - decidim-core (= 0.27.5) - decidim-blogs (0.27.5) - decidim-admin (= 0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-budgets (0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-comments (0.27.5) - decidim-core (= 0.27.5) + decidim-assemblies (0.27.6) + decidim-core (= 0.27.6) + decidim-blogs (0.27.6) + decidim-admin (= 0.27.6) + decidim-comments (= 0.27.6) + decidim-core (= 0.27.6) + decidim-budgets (0.27.6) + decidim-comments (= 0.27.6) + decidim-core (= 0.27.6) + decidim-comments (0.27.6) + decidim-core (= 0.27.6) redcarpet (~> 3.5, >= 3.5.1) - decidim-core (0.27.5) + decidim-core (0.27.6) active_link_to (~> 1.0) acts_as_list (~> 0.9) batch-loader (~> 1.2) browser (~> 2.7) - carrierwave (~> 2.2.1) + carrierwave (~> 2.2.5, >= 2.2.5) cells-erb (~> 0.1.0) cells-rails (~> 0.1.3) charlock_holmes (~> 0.7) date_validator (~> 0.12.0) - decidim-api (= 0.27.5) devise (~> 4.7) devise-i18n (~> 1.2) diffy (~> 3.3) @@ -234,7 +234,6 @@ GEM loofah (~> 2.19.0) mime-types (>= 1.16, < 4.0) mini_magick (~> 4.9) - mustache (~> 1.1.0) omniauth (~> 2.0) omniauth-facebook (~> 5.0) omniauth-google-oauth2 (~> 1.0) @@ -259,15 +258,15 @@ GEM webpacker (= 6.0.0.rc.5) webpush (~> 1.1) wisper (~> 2.0) - decidim-debates (0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-dev (0.27.5) + decidim-debates (0.27.6) + decidim-comments (= 0.27.6) + decidim-core (= 0.27.6) + decidim-dev (0.27.6) axe-core-rspec (~> 4.1.0) byebug (~> 11.0) capybara (~> 3.24) db-query-matchers (~> 0.10.0) - decidim (= 0.27.5) + decidim (= 0.27.6) erb_lint (~> 0.0.35) factory_bot_rails (~> 4.8) i18n-tasks (~> 0.9.18) @@ -290,45 +289,44 @@ GEM w3c_rspec_validators (~> 0.3.0) webmock (~> 3.6) wisper-rspec (~> 1.0) - decidim-forms (0.27.5) - decidim-core (= 0.27.5) + decidim-forms (0.27.6) + decidim-core (= 0.27.6) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-generators (0.27.5) - decidim-core (= 0.27.5) - decidim-meetings (0.27.5) - decidim-core (= 0.27.5) - decidim-forms (= 0.27.5) + decidim-generators (0.27.6) + decidim-core (= 0.27.6) + decidim-meetings (0.27.6) + decidim-core (= 0.27.6) + decidim-forms (= 0.27.6) icalendar (~> 2.5) - decidim-pages (0.27.5) - decidim-core (= 0.27.5) - decidim-participatory_processes (0.27.5) - decidim-core (= 0.27.5) - decidim-proposals (0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) + decidim-pages (0.27.6) + decidim-core (= 0.27.6) + decidim-participatory_processes (0.27.6) + decidim-core (= 0.27.6) + decidim-proposals (0.27.6) + decidim-comments (= 0.27.6) + decidim-core (= 0.27.6) doc2text (~> 0.4.5) redcarpet (~> 3.5, >= 3.5.1) - decidim-sortitions (0.27.5) - decidim-admin (= 0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-proposals (= 0.27.5) - decidim-surveys (0.27.5) - decidim-core (= 0.27.5) - decidim-forms (= 0.27.5) - decidim-templates (= 0.27.5) - decidim-system (0.27.5) + decidim-sortitions (0.27.6) + decidim-admin (= 0.27.6) + decidim-comments (= 0.27.6) + decidim-core (= 0.27.6) + decidim-proposals (= 0.27.6) + decidim-surveys (0.27.6) + decidim-core (= 0.27.6) + decidim-forms (= 0.27.6) + decidim-system (0.27.6) active_link_to (~> 1.0) - decidim-core (= 0.27.5) + decidim-core (= 0.27.6) devise (~> 4.7) devise-i18n (~> 1.2) devise_invitable (~> 2.0, >= 2.0.9) - decidim-templates (0.27.5) - decidim-core (= 0.27.5) - decidim-forms (= 0.27.5) - decidim-verifications (0.27.5) - decidim-core (= 0.27.5) + decidim-templates (0.27.6) + decidim-core (= 0.27.6) + decidim-forms (= 0.27.6) + decidim-verifications (0.27.6) + decidim-core (= 0.27.6) declarative-builder (0.1.0) declarative-option (< 0.2.0) declarative-option (0.1.0) @@ -347,8 +345,8 @@ GEM devise (>= 4.6) diff-lcs (1.5.1) diffy (3.4.2) - doc2text (0.4.6) - nokogiri (>= 1.13.2, < 1.15.0) + doc2text (0.4.7) + nokogiri (>= 1.13.2, < 1.17.0) rubyzip (~> 2.3.0) docile (1.4.0) doorkeeper (5.6.8) @@ -419,7 +417,7 @@ GEM html-pipeline (2.14.3) activesupport (>= 2) nokogiri (>= 1.4) - html_tokenizer (0.0.7) + html_tokenizer (0.0.8) htmlentities (4.3.4) i18n (1.14.1) concurrent-ruby (~> 1.0) @@ -442,7 +440,7 @@ GEM ruby-vips (>= 2.0.17, < 3) invisible_captcha (0.13.0) rails (>= 3.2.0) - json (2.7.1) + json (2.7.2) jwt (2.7.1) kaminari (1.2.2) activesupport (>= 4.1.0) @@ -502,7 +500,6 @@ GEM chef-utils msgpack (1.7.2) multi_xml (0.6.0) - mustache (1.1.1) net-http (0.4.1) uri net-imap (0.4.10) @@ -663,7 +660,7 @@ GEM rspec-html-matchers (0.9.4) nokogiri (~> 1) rspec (>= 3.0.0.a, < 4) - rspec-mocks (3.13.0) + rspec-mocks (3.13.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-rails (4.1.2) @@ -676,7 +673,7 @@ GEM rspec-support (~> 3.10) rspec-retry (0.6.2) rspec-core (> 3.3) - rspec-support (3.13.0) + rspec-support (3.13.1) rspec_junit_formatter (0.3.0) rspec-core (>= 2, < 4, != 2.12.0) rubocop (1.28.2) @@ -780,7 +777,7 @@ GEM activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) - webmock (3.20.0) + webmock (3.23.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -795,11 +792,11 @@ GEM websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - wicked_pdf (2.7.0) + wicked_pdf (2.8.0) activesupport wisper (2.0.1) wisper-rspec (1.1.0) - wkhtmltopdf-binary (0.12.6.6) + wkhtmltopdf-binary (0.12.6.7) xpath (3.2.0) nokogiri (~> 1.8) zeitwerk (2.6.13) @@ -815,8 +812,8 @@ DEPENDENCIES bootsnap (~> 1.7) byebug (~> 11.0) codecov (~> 0.6.0) - decidim (= 0.27.5) - decidim-dev (= 0.27.5) + decidim (= 0.27.6) + decidim-dev (= 0.27.6) decidim-vocdoni! faker (~> 2.14) i18n-tasks (~> 0.9.37) @@ -832,4 +829,4 @@ RUBY VERSION ruby 3.0.6p216 BUNDLED WITH - 2.4.21 + 2.4.22 diff --git a/README.md b/README.md index 3881914c..88fc6181 100644 --- a/README.md +++ b/README.md @@ -33,18 +33,26 @@ gem "decidim-vocdoni", github: "decidim-vocdoni/decidim-module-vocdoni" And then execute: -```bash +``` bundle -bin/rails decidim_vocdoni:install:migrations -bin/rails decidim_vocdoni:webpacker:install +bin/rails decidim:upgrade bin/rails db:migrate ``` +> **EXPERTS ONLY** +> +> Under the hood, when running `bin/rails decidim:upgrade` the `decidim-vocdoni` gem will run the following (that can also be run manually if you consider): +> +> ```bash +> bin/rails decidim_vocdoni:install:migrations +> bin/rails decidim_vocdoni:webpacker:install +> ``` + Depending on your Decidim version, you can choose the corresponding version to ensure compatibility: | Version | Compatible Decidim versions | -|---|---| -| 1.x | 0.27.x | +|---------|-----------------------------| +| 1.x | 0.27.x | ## Cron based tasks @@ -84,11 +92,20 @@ So, ensure you have a working Node.js application accessible by the Decidim inst ```json { "dependencies": { - "@vocdoni/sdk": "^0.5.3" + "@vocdoni/sdk": "^0.8.0" } } ``` +## Pricing + +The usage of the Vocdoni platform has some economic costs, as its using a Blockchain. + +For using it in a production environment with guaranties, you may contact with the maintaners of this plugin [PokeCode](https://pokecode.net) asking for a pricing. Costs will vary depending on your census size and the number of elections you want to perform. + +As there could be other resellers and not only the PokeCode, this needs to be configured through the ENV +variables: VOCDONI_RESELLER_NAME, VOCDONI_RESELLER_EMAIL + ## Configuration By default, the module is configured to read the configuration from ENV variables. @@ -97,10 +114,12 @@ Currently, the following ENV variables are supported: | ENV variable | Description | Default value | | ------------ | ----------- |-------| -| VOCDONI_API_ENDPOINT_ENV | The environment of the Vocdoni API. Only two values are accepted: `dev`, `stg`. Read more on [Vocdoni SDK Usage Environment](https://github.com/vocdoni/vocdoni-sdk#environment) | `stg` | +| VOCDONI_API_ENDPOINT_ENV | The environment of the Vocdoni API. Only two values are accepted: `dev`, `stg`, `prod`. Read more on [Vocdoni SDK Usage Environment](https://github.com/vocdoni/vocdoni-sdk#environment) | `stg` | | VOCDONI_MINUTES_BEFORE_START | How many minutes should the setup be run before the election starts (when configured automatically) | `10` | | VOCDONI_MANUAL_START_DELAY | How many seconds after the action of starting an election manually people will be allowed to vote. Note that this time is needed in order to configure the election in the blockchain. You might want to increase it if communication with the Vocdoni API is slow. | `30` | | DECIDIM_VOCDONI_SDK_DEBUG | This is for development purposes. If set to `true`, any call to the Vocdoni API using the SDK ruby wrapper will be logged into the `node_debug.log` file (on the application main folder). | `false` | +| VOCDONI_RESELLER_NAME | The name of the Vocdoni reseller, the organization that manages the tokens to work with the Vocdoni platform. | `PokeCode SL` | +| VOCDONI_RESELLER_EMAIL | The email of the Vocdoni reseller. | vocdoni@pokecode.net | It is also possible to configure the module using the `decidim-vocdoni` initializer: diff --git a/app/packs/entrypoints/admin/decidim_vocdoni_admin.js b/app/packs/entrypoints/admin/decidim_vocdoni_admin.js index f6a33285..40381013 100644 --- a/app/packs/entrypoints/admin/decidim_vocdoni_admin.js +++ b/app/packs/entrypoints/admin/decidim_vocdoni_admin.js @@ -6,6 +6,7 @@ import "src/decidim/vocdoni/admin/steps/election_status" import "src/decidim/vocdoni/admin/steps/vote" import "src/decidim/vocdoni/admin/steps/results" import "src/decidim/vocdoni/admin/steps/update_census" +import "src/decidim/clipboard" // Images require.context("../../images", true) diff --git a/app/packs/src/decidim/vocdoni/admin/steps/vote.js b/app/packs/src/decidim/vocdoni/admin/steps/vote.js index b53a5f0a..974d783f 100644 --- a/app/packs/src/decidim/vocdoni/admin/steps/vote.js +++ b/app/packs/src/decidim/vocdoni/admin/steps/vote.js @@ -4,6 +4,7 @@ const WAIT_TIME_MS = 30000; // Fetch the votes from the API export const getElectionResults = async () => { const vocdoniClientElement = document.querySelector(".js-vocdoni-client"); + if (!vocdoniClientElement || !vocdoniClientElement.dataset.resultsPath) { return null; } diff --git a/app/packs/src/decidim/vocdoni/voter/setup-vote.js b/app/packs/src/decidim/vocdoni/voter/setup-vote.js index 89b3f67a..9b64d02d 100644 --- a/app/packs/src/decidim/vocdoni/voter/setup-vote.js +++ b/app/packs/src/decidim/vocdoni/voter/setup-vote.js @@ -32,7 +32,7 @@ const submitVote = async (options) => { // TODO: we should pinpoint what exactly is the culprit of this issue // and if it's a bug in the SDK, we should fix it there switch (options.env) { - case "prd": + case "prod": client.url = "https://api.vocdoni.io/v2"; break; case "stg": diff --git a/app/views/decidim/vocdoni/admin/steps/_available_credits.html.erb b/app/views/decidim/vocdoni/admin/steps/_available_credits.html.erb index 737b45a0..9fe72263 100644 --- a/app/views/decidim/vocdoni/admin/steps/_available_credits.html.erb +++ b/app/views/decidim/vocdoni/admin/steps/_available_credits.html.erb @@ -1,8 +1,8 @@

- <%= icon "credit-card", role: "img", "aria-hidden": true %>  - <%= t("available", scope: "decidim.vocdoni.admin.steps.credits") %>:  - + <%= icon "credit-card", role: "img", "aria-hidden": true %>  + <%= t("available", scope: "decidim.vocdoni.admin.steps.credits") %>:  +

@@ -12,19 +12,47 @@

- <%= t("warning", scope: "decidim.vocdoni.admin.steps.credits") %> + <%= t("warning", scope: "decidim.vocdoni.admin.steps.credits") %>

- <% unless Decidim::Vocdoni.api_endpoint_env == "prd" %> + <% if Decidim::Vocdoni.api_endpoint_env == "prod" %> +
+

+ <%= t("decidim.vocdoni.admin.steps.credits.prod_mode_html", + reseller_name: Decidim::Vocdoni.vocdoni_reseller_name, + reseller_email: Decidim::Vocdoni.vocdoni_reseller_email, + wallet_address: @current_vocdoni_wallet.private_key).html_safe %> +

+
+ +
+ +
+
+
+ <% else %>

<%= t("dev_mode", scope: "decidim.vocdoni.admin.steps.credits", env: "#{Decidim::Vocdoni.api_endpoint_env}").html_safe %>

<% end %> - <%= link_to credits_election_path(election), method: :remote, class: "button primary js-vocdoni-credits-collect-faucet-tokens" do %> - <%= icon "euro", role: "img", "aria-hidden": true %>  - <%= t("get_more", scope: "decidim.vocdoni.admin.steps.credits") %> + <% unless Decidim::Vocdoni.api_endpoint_env == "prod" %> + <%= link_to credits_election_path(election), method: :remote, class: "button primary js-vocdoni-credits-collect-faucet-tokens" do %> + <%= icon "euro", role: "img", "aria-hidden": true %>  + <%= t("get_more", scope: "decidim.vocdoni.admin.steps.credits") %> + <% end %> <% end %>
diff --git a/config/locales/en.yml b/config/locales/en.yml index ff2bde99..962d461e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -293,9 +293,19 @@ en: view: View landing page credits: available: Available credits + copied: Copied! + copy_wallet: Copy wallet address + copy_wallet_clarification: Copy wallet address to clipboard + copy_wallet_message: The wallet address has been successfully copied to + clipboard. dev_mode: You are using Vocdoni in the %{env} environment. It is possible to collect credits for free (without any warranty) get_more: Get more credits + prod_mode_html: 'The usage of the Vocdoni platform has costs. Please get + in touch with %{reseller_name} + to ask for a quote. You need to also tell them your organization address:' warning: You have no credits left. You can get more credits by clicking on the button below. danger_zone: diff --git a/lib/decidim/vocdoni.rb b/lib/decidim/vocdoni.rb index 126705b7..bd420e2e 100644 --- a/lib/decidim/vocdoni.rb +++ b/lib/decidim/vocdoni.rb @@ -14,7 +14,7 @@ module Vocdoni # Hash constant defining the Vocdoni API endpoints for each environment. API_ENDPOINTS = { - "prd" => "https://api.vocdoni.net/v2", + "prod" => "https://api.vocdoni.io/v2", "stg" => "https://api-stg.vocdoni.net/v2", "dev" => "https://api-dev.vocdoni.net/v2" }.freeze @@ -49,15 +49,19 @@ module Vocdoni true end - # Public: Returns the API endpoint URL based on the environment specified in the configuration. - def self.api_endpoint_url - API_ENDPOINTS[api_endpoint_env] + # Public: Setting to configure the reseller name + config_accessor :vocdoni_reseller_name do + ENV.fetch("VOCDONI_RESELLER_NAME", "PokeCode SL") end - def self.api_endpoint_env - return "stg" if config.api_endpoint_env.downcase == "stg" + # Public: Setting to configure the reseller email + config_accessor :vocdoni_reseller_email do + ENV.fetch("VOCDONI_RESELLER_EMAIL", "vocdoni@pokecode.net") + end - "dev" + # Public: Returns the API endpoint URL based on the environment specified in the configuration. + def self.api_endpoint_url + API_ENDPOINTS[api_endpoint_env] end def self.explorer_vote_domain diff --git a/lib/decidim/vocdoni/version.rb b/lib/decidim/vocdoni/version.rb index 7306d635..4db19d26 100644 --- a/lib/decidim/vocdoni/version.rb +++ b/lib/decidim/vocdoni/version.rb @@ -3,7 +3,7 @@ module Decidim # This holds the decidim-meetings version. module Vocdoni - DECIDIM_VERSION = "0.27.5" + DECIDIM_VERSION = "0.27.6" DECIDIM_COMPAT_VERSION = ">= 0.27" def self.version diff --git a/lib/tasks/vocdoni_upgrade_tasks.rake b/lib/tasks/vocdoni_upgrade_tasks.rake new file mode 100644 index 00000000..b345b963 --- /dev/null +++ b/lib/tasks/vocdoni_upgrade_tasks.rake @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +Rake::Task["decidim:webpacker:install"].enhance do + Rake::Task["decidim_vocdoni:webpacker:install"].invoke +end + +Rake::Task["decidim:choose_target_plugins"].enhance do + ENV["FROM"] = "#{ENV.fetch("FROM", nil)},decidim_vocdoni" +end + +Rake::Task["decidim:webpacker:upgrade"].enhance do + Rake::Task["decidim_vocdoni:webpacker:install"].invoke +end diff --git a/node-wrapper/node_runner.js b/node-wrapper/node_runner.js index 3874eb95..dde20314 100644 --- a/node-wrapper/node_runner.js +++ b/node-wrapper/node_runner.js @@ -6,7 +6,7 @@ * */ try { const args = #{args} - Promise.resolve(#{func}(...args)).then(result => { + Promise.resolve(#{func}(...args)).then(result => { const output = JSON.stringify(['ok', result, []]) process.stdout.write(output) }) diff --git a/package-lock.json b/package-lock.json index cfce48b5..8249c5d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "decidim-vocdoni", - "version": "0.27.5", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "decidim-vocdoni", - "version": "0.27.5", + "version": "1.0.0", "license": "AGPL-3.0", "dependencies": { - "@vocdoni/sdk": "0.7.3" + "@vocdoni/sdk": "0.8.0" }, "devDependencies": { "@babel/eslint-parser": "^7.19.1", @@ -21,15 +21,14 @@ "@babel/plugin-transform-runtime": "^7.19.6", "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", - "@decidim/dev": "0.27.5", - "@decidim/eslint-config": "0.27.5", - "@decidim/stylelint-config": "0.27.5", + "@decidim/dev": "0.27.6", + "@decidim/eslint-config": "0.27.6", + "@decidim/stylelint-config": "0.27.6", "eslint-config-prettier": "^8.5.0", "eslint-config-standard": "^11.0.0", "eslint-plugin-import": "^2.22.0", "eslint-plugin-standard": "^3.1.0", "sass-embedded": "~1.57.1", - "snarkjs": "vocdoni/snarkjs#v0.7.0-groth16browser", "web-worker": "1.2.0" } }, @@ -1906,18 +1905,18 @@ } }, "node_modules/@decidim/dev": { - "version": "0.27.5", - "resolved": "https://registry.npmjs.org/@decidim/dev/-/dev-0.27.5.tgz", - "integrity": "sha512-+UiXYQAzNc3uDecTaWNA05hCAqpB7QjnxEGXnLGl9mo0jx7qn8SMMjOmlIi7VhIXOLIXDHcaDunTOUVvKwu4ug==", + "version": "0.27.6", + "resolved": "https://registry.npmjs.org/@decidim/dev/-/dev-0.27.6.tgz", + "integrity": "sha512-dDCVCEXTCzmB113rN/AXcG5KWHZzcFPRM9DmRUKqP2b6gySfe79RLt3/blZs8l22167QxM/Fqjr3UrtuDIxyvQ==", "dev": true, "dependencies": { "axe-core": "^4.1.4" } }, "node_modules/@decidim/eslint-config": { - "version": "0.27.5", - "resolved": "https://registry.npmjs.org/@decidim/eslint-config/-/eslint-config-0.27.5.tgz", - "integrity": "sha512-DUX+2HlpLFJtupZ/mdscNBwIh/Se35wJ5mWyeOuW0rqTAP0beh+09+iUzCLkBjlaqwvt8TyLeYjiWFj37roYrQ==", + "version": "0.27.6", + "resolved": "https://registry.npmjs.org/@decidim/eslint-config/-/eslint-config-0.27.6.tgz", + "integrity": "sha512-tmYhIbrSPBoWwDopFkZP1BejqHhZPHAvAjJh0wxOhXWTqQZ9l3qgFy+E0hW14CnsKgQ46lGXkI5D2gxS+VvMmg==", "dev": true, "peerDependencies": { "eslint": "^7.25.0", @@ -1932,9 +1931,9 @@ } }, "node_modules/@decidim/stylelint-config": { - "version": "0.27.5", - "resolved": "https://registry.npmjs.org/@decidim/stylelint-config/-/stylelint-config-0.27.5.tgz", - "integrity": "sha512-kvYWcEUniL+rtRXm+EIy6k9G8eXTuCv5oQKetlEruTAV2Q0KSZCo/1HVfKYIPA5gOeQ8JYDZ6XN7vk7MifEumQ==", + "version": "0.27.6", + "resolved": "https://registry.npmjs.org/@decidim/stylelint-config/-/stylelint-config-0.27.6.tgz", + "integrity": "sha512-qcHP1rR3GOLFN0uggKk6gg371dhLCTDDNgDWD0dtFvlDuBxchh0QfHJ+PBZpNDeG3h6tVPOq5ruLhUIC3UWG8w==", "dev": true, "peerDependencies": { "stylelint": "13.11.0" @@ -2862,9 +2861,9 @@ "peer": true }, "node_modules/@types/node": { - "version": "20.11.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz", - "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==", + "version": "20.12.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz", + "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==", "dependencies": { "undici-types": "~5.26.4" } @@ -2891,18 +2890,18 @@ "peer": true }, "node_modules/@vocdoni/proto": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/@vocdoni/proto/-/proto-1.15.4.tgz", - "integrity": "sha512-UbIMfRjSGdQdmOEBTVR1LnvqabVBF8TDpI44V+AC0oCn/E6WRo3y8zgGXKZw00SbqCGkFKvqTyWRvsK5Rky1qA==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@vocdoni/proto/-/proto-1.15.5.tgz", + "integrity": "sha512-6Tm8aluCbz10gsVLnyFnsOM7dfFMFD3w8fmG26RQh9fFZJ6eLOf3FKKXC6nlMm3x6a6pKXHEFvT89ePks0WMNA==", "dependencies": { "long": "^5.2.1", "protobufjs": "^7.1.2" } }, "node_modules/@vocdoni/sdk": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@vocdoni/sdk/-/sdk-0.7.3.tgz", - "integrity": "sha512-PQy63OU+hh1qhydPEkC5+9fmn46WyH9eQtgOUGysWWt6hsHW3bBqLBuhml/ZBkakFDYyECGJeFApWg7n69muPA==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@vocdoni/sdk/-/sdk-0.8.0.tgz", + "integrity": "sha512-Kj2RG7b8Ifdspf1r9gcwPdtExojFzkhZg9l35mPRp2VD3P82QtMl1DDbDlRwSZ4ajSHkXH2dWgUZ0KKJH75ySg==", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -2915,7 +2914,7 @@ "@ethersproject/units": "^5.7.0", "@ethersproject/wallet": "^5.7.0", "@size-limit/file": "^8.2.4", - "@vocdoni/proto": "1.15.4", + "@vocdoni/proto": "1.15.5", "axios": "0.27.2", "blake2b": "^2.1.4", "iso-language-codes": "^1.1.0", @@ -3404,22 +3403,6 @@ "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, - "node_modules/bfj": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", - "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", - "dev": true, - "dependencies": { - "bluebird": "^3.7.2", - "check-types": "^11.2.3", - "hoopy": "^0.1.4", - "jsonpath": "^1.1.1", - "tryer": "^1.0.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -3447,12 +3430,6 @@ "nanoassert": "^2.0.0" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, "node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", @@ -3678,12 +3655,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/check-types": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", - "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", - "dev": true - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -3711,18 +3682,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/circom_runtime": { - "version": "0.1.23", - "resolved": "https://registry.npmjs.org/circom_runtime/-/circom_runtime-0.1.23.tgz", - "integrity": "sha512-S0A63qM5LtlcTgsHX4z/U6nWAKo/KQBrz4umxVMyADPHxt6qDWy2AahPc2lAWQT42cFIDuonFPjgCjviSgQU8A==", - "dev": true, - "dependencies": { - "ffjavascript": "0.2.59" - }, - "bin": { - "calcwit": "calcwit.js" - } - }, "node_modules/clone-regexp": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", @@ -3898,7 +3857,8 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/define-data-property": { "version": "1.1.2", @@ -4249,88 +4209,6 @@ "node": ">=0.8.0" } }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", @@ -4936,6 +4814,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -5057,7 +4936,8 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/fastest-levenshtein": { "version": "1.0.16", @@ -5078,17 +4958,6 @@ "reusify": "^1.0.4" } }, - "node_modules/ffjavascript": { - "version": "0.2.59", - "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.59.tgz", - "integrity": "sha512-QssOEUv+wilz9Sg7Zaj6KWAm7QceOAEsFuEBTltUsDo1cjn11rA/LGYvzFBPbzNfxRlZxwgJ7uxpCQcdDlrNfw==", - "dev": true, - "dependencies": { - "wasmbuilder": "0.0.16", - "wasmcurves": "0.2.1", - "web-worker": "^1.2.0" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -5577,15 +5446,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -6350,30 +6210,6 @@ "node": ">=6" } }, - "node_modules/jsonpath": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", - "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", - "dev": true, - "dependencies": { - "esprima": "1.2.2", - "static-eval": "2.0.2", - "underscore": "1.12.1" - } - }, - "node_modules/jsonpath/node_modules/esprima": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", - "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -7463,9 +7299,9 @@ "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==" }, "node_modules/protobufjs": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", - "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -8224,22 +8060,12 @@ "dev": true, "peer": true }, - "node_modules/snarkjs": { - "version": "0.7.0", - "resolved": "git+ssh://git@github.com/vocdoni/snarkjs.git#d6e37e9120e44b6681e32d8f552d4fec0f3e1b23", - "dev": true, - "license": "GPL-3.0", - "dependencies": { - "bfj": "^7.0.2", - "circom_runtime": "0.1.23", - "ffjavascript": "0.2.59" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -8297,15 +8123,6 @@ "dev": true, "peer": true }, - "node_modules/static-eval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "dev": true, - "dependencies": { - "escodegen": "^1.8.1" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -8761,12 +8578,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -8918,12 +8729,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", - "dev": true - }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -9246,15 +9051,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 6c308be3..52e0ecc0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decidim-vocdoni", - "version": "0.27.5", + "version": "1.0.0", "description": "An elections component for decidim's participatory spaces based on the Vocdoni SDK", "main": "index.js", "directories": { @@ -36,18 +36,17 @@ "@babel/plugin-transform-runtime": "^7.19.6", "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", - "@decidim/dev": "0.27.5", - "@decidim/eslint-config": "0.27.5", - "@decidim/stylelint-config": "0.27.5", + "@decidim/dev": "0.27.6", + "@decidim/eslint-config": "0.27.6", + "@decidim/stylelint-config": "0.27.6", "eslint-config-prettier": "^8.5.0", "eslint-config-standard": "^11.0.0", "eslint-plugin-import": "^2.22.0", "eslint-plugin-standard": "^3.1.0", "sass-embedded": "~1.57.1", - "web-worker": "1.2.0", - "snarkjs": "vocdoni/snarkjs#v0.7.0-groth16browser" + "web-worker": "1.2.0" }, "dependencies": { - "@vocdoni/sdk": "0.7.3" + "@vocdoni/sdk": "0.8.0" } } diff --git a/spec/events/decidim/vocdoni/election_published_event_spec.rb b/spec/events/decidim/vocdoni/election_published_event_spec.rb index 1f215597..3b7791a1 100644 --- a/spec/events/decidim/vocdoni/election_published_event_spec.rb +++ b/spec/events/decidim/vocdoni/election_published_event_spec.rb @@ -6,11 +6,13 @@ include_context "when a simple event" let(:event_name) { "decidim.events.vocdoni.election_published" } - let(:resource) { create(:vocdoni_election) } + let(:participatory_space) { create(:participatory_process, :with_steps, title: { en: "A participatory process" }) } + let(:component) { create(:vocdoni_component, participatory_space: participatory_space) } + let(:resource) { create(:vocdoni_election, component: component) } let(:participatory_space_title) { resource.participatory_space.title["en"] } let(:resource_title) { resource.title["en"] } - it_behaves_like "a simple event" + it_behaves_like "a simple event", skip_space_checks: true describe "email_subject" do it "is generated correctly" do diff --git a/spec/lib/decidim/vocdoni/module_config_spec.rb b/spec/lib/decidim/vocdoni/module_config_spec.rb index 6108b322..f519a17b 100644 --- a/spec/lib/decidim/vocdoni/module_config_spec.rb +++ b/spec/lib/decidim/vocdoni/module_config_spec.rb @@ -10,6 +10,8 @@ module Decidim let(:env) do { "VOCDONI_MINUTES_BEFORE_START" => minutes, + "VOCDONI_RESELLER_NAME" => reseller_name, + "VOCDONI_RESELLER_EMAIL" => reseller_email, "DECIDIM_VOCDONI_VOTES_OVERWRITE_MAX" => votes_overwrite_max, "VOCDONI_API_ENDPOINT_ENV" => vocdoni_env, "VOCDONI_MANUAL_START_DELAY" => start_delay @@ -19,6 +21,8 @@ module Decidim let(:minutes) { "11" } let(:votes_overwrite_max) { "8" } let(:start_delay) { "33" } + let(:reseller_name) { "Test reseller" } + let(:reseller_email) { "test_reseller@example.org" } let(:config) { JSON.parse cmd_capture("bin/rails runner 'puts Decidim::Vocdoni.config.to_json'", env: env) } let(:endpoint_env) { cmd_capture("bin/rails runner 'puts Decidim::Vocdoni.api_endpoint_env'", env: env) } @@ -31,6 +35,8 @@ def cmd_capture(cmd, env: {}) it "has the correct configuration" do expect(config).to eq({ "minimum_minutes_before_start" => 11, + "vocdoni_reseller_email" => "test_reseller@example.org", + "vocdoni_reseller_name" => "Test reseller", "votes_overwrite_max" => 8, "api_endpoint_env" => "STG", "manual_start_time_delay" => 33, @@ -39,20 +45,20 @@ def cmd_capture(cmd, env: {}) end it "has the correct endpoint env" do - expect(endpoint_env.strip).to eq("stg") + expect(endpoint_env.strip).to eq("STG") end it "has the correct endpoint url" do expect(Decidim::Vocdoni::API_ENDPOINTS["stg"]).to eq("https://api-stg.vocdoni.net/v2") expect(Decidim::Vocdoni::API_ENDPOINTS["dev"]).to eq("https://api-dev.vocdoni.net/v2") - expect(Decidim::Vocdoni::API_ENDPOINTS["prd"]).to eq("https://api.vocdoni.net/v2") + expect(Decidim::Vocdoni::API_ENDPOINTS["prod"]).to eq("https://api.vocdoni.io/v2") end context "when enpoint is wrong" do let(:vocdoni_env) { "WRONG" } it "defaults to dev" do - expect(endpoint_env.strip).to eq("dev") + expect(endpoint_env.strip).to eq("WRONG") end end end diff --git a/spec/services/decidim/vocdoni/census_updater_service_spec.rb b/spec/services/decidim/vocdoni/census_updater_service_spec.rb index 8a76b64c..9c8efc64 100644 --- a/spec/services/decidim/vocdoni/census_updater_service_spec.rb +++ b/spec/services/decidim/vocdoni/census_updater_service_spec.rb @@ -34,7 +34,6 @@ expect(Rails.logger).not_to receive(:info).with(/Technical voter .* deleted successfully./) expect { service.update_census }.not_to raise_error - expect(Decidim::Vocdoni::Voter.where(email: election.technical_voter_email, election: election)).not_to exist end diff --git a/spec/services/decidim/vocdoni/sdk_spec.rb b/spec/services/decidim/vocdoni/sdk_spec.rb index e4c04986..7741d14a 100644 --- a/spec/services/decidim/vocdoni/sdk_spec.rb +++ b/spec/services/decidim/vocdoni/sdk_spec.rb @@ -86,7 +86,7 @@ module Vocdoni expect(subject.info).to eq({ "clientInfo" => { "address" => "7e5f4552091a69125d5dfcb7b8c2659029395bdf", - "balance" => 500, + "balance" => 10_000, "electionIndex" => 0, "metadata" => { "description" => { "default" => "" }, diff --git a/spec/system/decidim/admin/admin_creates_wallet_spec.rb b/spec/system/decidim/admin/admin_creates_wallet_spec.rb index dea9b799..d042b6e9 100644 --- a/spec/system/decidim/admin/admin_creates_wallet_spec.rb +++ b/spec/system/decidim/admin/admin_creates_wallet_spec.rb @@ -37,6 +37,40 @@ expect(page).to have_content("You are not authorized to perform this action") expect(Decidim::Vocdoni::Wallet.all.count).to eq 1 end + + context "when prod environment" do + before do + allow(Decidim::Vocdoni).to receive(:api_endpoint_env).and_return("prod") + allow(Decidim::Vocdoni).to receive(:vocdoni_reseller_name).and_return("Test reseller") + allow(Decidim::Vocdoni).to receive(:vocdoni_reseller_email).and_return("test_reseller@example.org") + end + + it "shows the information about receiving coins" do + visit_steps_page + + expect(page).to have_content("The usage of the Vocdoni platform has costs") + expect(page).to have_content("Test reseller") + expect(page).to have_css("input[value='#{wallet.private_key}']") + expected_href = "mailto:test_reseller@example.org?subject=Decidim Vocdoni Inquiry&body=Please provide a quote for the Vocdoni platform usage. My organization Vocdoni address is: 0x0000000000000000000000000000000000000000000000000000000000000001" + expect(page).to have_css("a[href='#{expected_href}']") + end + end + + context "when stg environment" do + before do + allow(Decidim::Vocdoni).to receive(:api_endpoint_env).and_return("stg") + allow(Decidim::Vocdoni).to receive(:vocdoni_reseller_name).and_return("Test reseller") + allow(Decidim::Vocdoni).to receive(:vocdoni_reseller_email).and_return("test_reseller@example.org") + end + + it "doesn't show the information about receiving coins" do + visit_steps_page + + expect(page).not_to have_content("The usage of the Vocdoni platform has costs") + expect(page).not_to have_content("Test reseller") + expect(page).not_to have_css("input[value='#{wallet.private_key}']") + end + end end def visit_steps_page